如何在GAE中使用Django翻译?

9
我有以下的设置 -
文件夹结构:
myapp
  - conf
    - locale
      - ru
        - LC_MESSAGES
          - django.mo # contains "This is the title." translation
          - django.po
  - templates
    - index.html
  setting.py
  main.py

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"

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',
)

index.html:

{% load i18n %}
...
{% trans "This is the title." %}

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)

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

当你写template_values = {}时,这不意味着你正在使用空字典来格式化/渲染HTML页面吗?在.render之后它的值是什么?如果你将template_values更改为类似于template_values = {"trans":"ru"}这样的东西会怎样? - Tadhg McDonald-Jensen
@TadhgMcDonald-Jensen,我在文档中没有看到模板变量会影响语言的说明。但是我尝试添加{"trans":"ru"} - 没有帮助。 - LA_
在GAE上搜索i18n,找到了这个 - Allen
你是否运行了 "python manage.py" makemessages 和 compilemessages 命令?你是否将本地化目录与项目一起部署? - dkarchmer
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - LA_
@Allen,你建议使用不同的包(而不是Django的翻译)吗? - LA_
1个回答

1

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

尝试像这样指定正确的路径以将 Django 指向正确的位置:

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

LOCALE_PATHS = (
    os.path.join(PROJECT_PATH, 'conf/locale'),
)

编辑:

我发现了这个存储库,其中有一个示例,说明如何让GAE与Django i18n配合使用:https://github.com/googlearchive/appengine-i18n-sample-python

请告诉我这是否有所帮助。

编辑2:

尝试将LANGUAGES移动到设置中的LOCALE_PATHS下面。并添加所有此处列出的中间件

要强制Django在呈现模板时使用特定语言,请使用此示例

您还可以使用此标记告诉您Django可用的语言:

{% get_available_languages %}

不幸的是,它没有帮助。我已经更新了问题。我导入from google.appengine.ext.webapp import template而不是django.template。这可能是问题的原因吗? - LA_
@LA_ 请检查编辑并告诉我是否有帮助。 - Alex Carlos
谢谢,Alex。那里提供的示例应用程序运行良好,但它使用的是jinja2而不是django... - LA_

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接