Подтвердить что ты не робот

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

Я хотел бы предоставить свой веб-сайт 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 для новых пользователей...)

Спасибо, что помогли мне продвинуться в этом проекте!

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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