Как создать интернационализировавшее приложение Google App Engine

Я хотел бы обеспечить свой веб-сайт GAE Python на собственном языке пользователя, с помощью только инструменты, доступные непосредственно в Механизме Приложения. Для этого я хотел бы использовать GNU gettext файлы (.po и .mo файлы).

Кто-то успешно объединил Механизм Приложения Google Python и gettext файлы? Если так, Вы могли обеспечить шаги, которые Вы использовали?

Я запустил обсуждение в группе Google GAE, но не был в состоянии извлечь из нее, как я хотел бы сделать это: Я не хочу добавлять внешние зависимости, как Babel (предложенный в обсуждении). Я хочу использовать простой ванильный Google App Engine, таким образом, никакое ручное обновление Django или этот вид материала.

Сначала, я начну использовать язык, отправленный браузером, таким образом, никакая потребность вручную вызвать язык при помощи cookie и т.д. Однако, я мог бы добавить опцию изменения языка позже, однажды основная интернационализация, не будет работать.

Как фоновое примечание, чтобы предоставить Вам больше подробной информации о том, что я пытаюсь сделать, я хотел бы интернационализировать Средство отслеживания Системы отслеживания ошибок, приложение с открытым исходным кодом, которое я разместил на Панели запуска. Я планирую использовать платформу перевода Панели запуска (объяснение, почему я хотел бы использовать .mo файлы). Можно взглянуть на исходный код в, он - ответвление Базара (извините никакая ссылка из-за stackoverflow предела предотвращения спама для новых пользователей...)

Спасибо за помощь мне совершенствоваться на этом проекте!

12
задан SilentGhost 22 December 2009 в 13:12
поделиться

2 ответа

Вы можете использовать инструмент интернационализации Django, как объяснили здесь.

Они также говорят, что нет простого способа сделать это.

Я надеюсь, что это поможет вам :)

.
4
ответ дан 2 December 2019 в 22:22
поделиться

Так как мои потребности были простыми, я использовал простой хак вместо (недоступного) 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.

В случае, если вы захотите увидеть больше, мой реальный источник - здесь.

.
6
ответ дан 2 December 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: