2016-01-24 1 views
9

У меня есть следующие настройки -Как использовать перевод django с GAE?

структуру папок:

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." отображается на английском языке. Что не так с моей настройкой (или расположением файлов)?

+0

при написании 'template_values ​​= {}' не означает, что вы используете пустую диктобу ry для форматирования/рендеринга html-страницы? какова его ценность после '.render'? что, если вы измените template_values ​​на что-то вроде: 'template_values ​​= {" trans ":" ru "}'? –

+0

@ TadhgMcDonald-Jensen, не видели в документации, что переменные шаблона влияют на язык. Но я попытался добавить '{" trans ":" ru "}' - это не помогло. –

+0

поиск i18n на GAE, [найдено это] (http://webapp-improved.appspot.com/api/webapp2_extras/i18n.html#api-webapp2-extras-i18n) – Allen

ответ

1

Вы LOCALE_DIRS - это абсолютные пути к вашим файлам переводов, и ваша текущая установка сообщает Django посмотреть в корне файловой системы.

Попробуйте что-то вроде этого, чтобы указать Django на правильный путь:

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

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

EDIT:

Я наткнулся на этот репозиторий, который имеет пример того, как получить GAE для работы с Django i18n: https://github.com/googlearchive/appengine-i18n-sample-python

Пожалуйста, дайте мне знать, если это помогает

EDIT 2:

Попробуйте переместить свои ЯЗЫКИ под вашим LOCALE_PATHS в своих настройках. И добавить все middlewares listed here

И заставить Django использовать определенный язык при визуализации шаблона use this example

Вы также можете использовать этот тег, чтобы сказать вам, какие языки Джанго есть: проверка

{% get_available_languages %} 
+0

Это не помогло, к сожалению. Я обновил вопрос. Я импортирую 'из google.appengine.ext.webapp import template' вместо' django.template'. Может ли это быть проблемой? –

+0

@LA_, пожалуйста, проверьте правильность и сообщите мне, если это поможет. –

+0

Спасибо, Алекс. Пример приложения, показанного там, работает хорошо, но он использует jinja2 вместо django ... –

0

это сообщение в блоге, я надеюсь, что это поможет

http://blog.yjl.im/2009/02/using-django-i18n-in-google-app-engine.html 
+0

Я читал это раньше. Это для старой версии django. –

+0

ОК Я провел некоторое исследование, и я советую использовать webapp2, python27 en jinja2. Потому что шаблон шаблона Django App (из шаблона импорта google.appengine.ext.webapp) лишен. – Transformer