Я хотел бы обеспечить свой веб-сайт GAE Python на собственном языке пользователя, с помощью только инструменты, доступные непосредственно в Механизме Приложения. Для этого я хотел бы использовать GNU gettext файлы (.po и .mo файлы).
Кто-то успешно объединил Механизм Приложения Google Python и gettext файлы? Если так, Вы могли обеспечить шаги, которые Вы использовали?
Я запустил обсуждение в группе Google GAE, но не был в состоянии извлечь из нее, как я хотел бы сделать это: Я не хочу добавлять внешние зависимости, как Babel (предложенный в обсуждении). Я хочу использовать простой ванильный Google App Engine, таким образом, никакое ручное обновление Django или этот вид материала.
Сначала, я начну использовать язык, отправленный браузером, таким образом, никакая потребность вручную вызвать язык при помощи cookie и т.д. Однако, я мог бы добавить опцию изменения языка позже, однажды основная интернационализация, не будет работать.
Как фоновое примечание, чтобы предоставить Вам больше подробной информации о том, что я пытаюсь сделать, я хотел бы интернационализировать Средство отслеживания Системы отслеживания ошибок, приложение с открытым исходным кодом, которое я разместил на Панели запуска. Я планирую использовать платформу перевода Панели запуска (объяснение, почему я хотел бы использовать .mo файлы). Можно взглянуть на исходный код в, он - ответвление Базара (извините никакая ссылка из-за 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
Usage:
msgs = get_messages(["it","ru","en"])
hi = msgs['hello_message'] % 'yourname'
Я также определил вспомогательную функцию, которая извлекает список языков из заголовка Accept-Language
.
Это не самое гибкое решение, но оно не имеет никаких внешних зависимостей и работает на меня (в проекте игрушек). Я думаю, что translate.py
может быть сгенерирован автоматически из текстовых файлов gettext files.
В случае, если вы захотите увидеть больше, мой реальный источник - здесь.
.