Ответ 1
Вы можете использовать инструмент интернационализации Django, например, здесь.
Они также говорят, что нет простого способа сделать это.
Я надеюсь, что это поможет вам:)
Я хотел бы предоставить свой веб-сайт Python GAE на собственном языке пользователя, используя только инструменты, доступные непосредственно в App Engine. Для этого я хотел бы использовать GNU gettext файлы (файлы .po и .mo).
Кто-нибудь успешно объединил файлы Python Google App Engine и gettext? Если да, не могли бы вы предоставить шаги, которые вы использовали?
Я начал обсуждение в группе GAE Google, но не смог извлечь из него то, как я хотел бы это сделать: Я не хочу добавлять внешние зависимости, такие как Babel (предлагается в обсуждении). Я хочу использовать простой браузер Google App Engine, поэтому никакого ручного обновления Django или такого рода материалов не будет.
Сначала я начну использовать язык, отправленный браузером, поэтому нет необходимости вручную принудительно использовать язык с помощью файлов cookie и т.д. Однако я могу добавить функцию изменения языка позже, как только начнется базовая интернационализация.
В качестве справочной информации, чтобы дать вам более подробную информацию о том, что я пытаюсь сделать, я хотел бы интернационализировать Отслеживание ошибок Tracker - приложение с открытым исходным кодом, которое я разместил на Launchpad. Я планирую использовать платформу перевода Launchpad (объясняя, почему я хотел бы использовать файлы .mo). Вы можете взглянуть на исходный код в ветке Bazaar (извините, нет ссылки из-за префикса предотвращения спама stackoverflow для новых пользователей...)
Спасибо, что помогли мне продвинуться в этом проекте!
Вы можете использовать инструмент интернационализации Django, например, здесь.
Они также говорят, что нет простого способа сделать это.
Я надеюсь, что это поможет вам:)
Поскольку мои потребности были простыми, я использовал простой хак вместо (недоступный) gettext. Я создал файл со строковыми переводами, translate.py
. Примерно так:
en={}
ru={}
en['default_site_title']=u"Site title in English"
ru['default_site_title']=u"Название сайта по-русски"
Затем в главном коде я определил функцию, которая возвращает словарь с переводами на наиболее подходящий язык из списка (первый для перевода используется или английский):
import translate
def get_messages(languages=[]):
msgs=translate.en
for lang in languages:
if hasattr(translate,lang):
msgs=getattr(translate,lang)
break
return msgs
Использование:
msgs = get_messages(["it","ru","en"])
hi = msgs['hello_message'] % 'yourname'
Я также определил вспомогательную функцию, которая извлекает список языков из заголовка Accept-Language
.
Это не самое гибкое решение, но оно не имеет никаких внешних зависимостей и работает для меня (в игрушечном проекте). Я думаю, что translate.py
может генерироваться автоматически из файлов gettext.
Если вы хотите увидеть больше, мой фактический источник здесь.