【问题标题】:How to use django translation with GAE?如何在 GAE 中使用 django 翻译?
【发布时间】:2016-05-01 00:10:54
【问题描述】:

我有以下设置 -

文件夹结构

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." %}

ma​​in.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"}
  • @TadhgMcDonald-Jensen,在文档中没有看到模板变量会影响语言。但我尝试添加 {"trans":"ru"} - 它没有帮助。
  • 在 GAE 上搜索 i18n,found this
  • 你运行“python manage.py”makemessages和compilemessages了吗?您是否在项目中部署语言环境目录?
  • @davka,当然,消息已被编译(上面的树包含相应的文件)。我会再次检查目录。

标签: python django google-app-engine django-1.5


【解决方案1】:

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

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

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

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

编辑:

我偶然发现了这个 repo,其中有一个如何让 GAE 与 Django i18n 一起工作的示例:https://github.com/googlearchive/appengine-i18n-sample-python

如果有帮助请告诉我

编辑 2:

尝试在您的设置中将您的 LANGUAGES 移动到您的 LOCALE_PATHS 之下。并添加所有middlewares listed here

并强制Django在渲染模板时使用某种语言use this example

你也可以使用这个标签告诉你 Django 有哪些可用的语言:

{% get_available_languages %}

【讨论】:

  • 不幸的是,它没有帮助。我已经更新了这个问题。我导入from google.appengine.ext.webapp import template 而不是django.template。会不会是问题的原因?
  • @LA_ 请检查编辑,如果有帮助,请告诉我。
  • 谢谢,亚历克斯。那里给出的示例应用运行良好,但它使用 jinja2 而不是 django...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 2012-12-23
  • 1970-01-01
相关资源
最近更新 更多