如何使用GAE进行django翻译?

LA_*_*LA_ 9 python django google-app-engine django-1.5

我有以下设置 -

文件夹结构:

myapp
  - conf
    - locale
      - ru
        - LC_MESSAGES
          - django.mo # contains "This is the title." translation
          - django.po
  - templates
    - index.html
  setting.py
  main.py
Run Code Online (Sandbox Code Playgroud)

app.yaml:

...
env_variables:
 DJANGO_SETTINGS_MODULE: 'settings'

handlers:
...
- url: /locale/ # do I need this?
  static_dir: templates/locale

libraries:
- name: django
  version: "1.5"
Run Code Online (Sandbox Code Playgroud)

settings.py:

USE_I18N = True

LANGUAGES = (
    ('en', 'EN'),
    ('ru', 'RU'),
)

LANGUAGE_CODE = 'ru'
LANGUAGE_COOKIE_NAME = 'django_language'

SECRET_KEY = 'some-dummy-value'

MIDDLEWARE_CLASSES = (
  'django.middleware.locale.LocaleMiddleware'
)

LOCALE_PATHS = (
    '/locale',
    '/templates/locale',
)
Run Code Online (Sandbox Code Playgroud)

index.html:

{% load i18n %}
...
{% trans "This is the title." %}
Run Code Online (Sandbox Code Playgroud)

main.py:

from google.appengine.ext.webapp import template
...
translation.activate('ru')
template_values = {}
file_template = template.render('templates/index.html', template_values)
self.response.out.write(file_template)
Run Code Online (Sandbox Code Playgroud)

但结果"This is the title."显示为英文.我的设置(或文件位置)有什么问题?

Ale*_*los 1

LOCALE_DIRS 是翻译文件的绝对路径,当前的设置告诉 Django 在文件系统的根目录中查找。

尝试这样的方法将 Django 指向正确的路径:

PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))

LOCALE_PATHS = (
    os.path.join(PROJECT_PATH, 'conf/locale'),
)
Run Code Online (Sandbox Code Playgroud)

编辑:

我偶然发现了这个存储库,其中包含如何让 GAE 与 Django i18n 一起使用的示例:https://github.com/googlearchive/appengine-i18n-sample-python

请让我知道这可不可以帮你

编辑2:

尝试将您的语言移至设置中的 LOCALE_PATHS 下方。并添加此处列出的所有中间件

要强制 Django 在渲染模板时使用某种语言,请使用此示例

您还可以使用此标签来告诉您 Django 可以使用哪些语言:

{% get_available_languages %}
Run Code Online (Sandbox Code Playgroud)