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."
显示为英文.我的设置(或文件位置)有什么问题?
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)
归档时间: |
|
查看次数: |
160 次 |
最近记录: |