Google App Engine - Python - Babel - write_mo () - PullRequest
0 голосов
/ 03 января 2019

Я работаю над Google App Engine Python3.7 Я написал этот рабочий код на основе того, что я узнал здесь:

http://babel.pocoo.org/en/latest/api/messages/mofile.html https://docs.python.org/3/library/gettext.html#gettext.NullTranslations.install

import babel
from babel.messages import Catalog
from babel.messages.mofile import write_mo
import gettext
_ = gettext.gettext

from gettext import GNUTranslations
from babel._compat import BytesIO

logging.info(_('gg'))

catalog = Catalog(locale='en_US', domain='myapp')
catalog.add('foo', 'Voh')
catalog.add((u'bar', u'baz'), (u'Bahr', u'Batz'))
catalog.add('fuz', 'Futz', flags=['fuzzy'])
catalog.add('Fizz', '')
catalog.add(('Fuzz', 'Fuzzes'), ('', ''))

logging.debug(catalog)
logging.debug(catalog['foo'].string)

buf = BytesIO()
write_mo(buf, catalog)
buf.seek(0)
translations = GNUTranslations(fp=buf)

logging.debug(translations.gettext('foo'))
logging.debug(translations.ngettext('bar', 'baz', 1))
logging.debug(translations.ngettext('bar', 'baz', 2))
logging.debug(translations.gettext('fuz'))
logging.debug(translations.gettext('Fizz'))
logging.debug(translations.gettext('Fuzz'))
logging.debug(translations.gettext('Fuzzes'))
logging.debug(_('foo'))#this returns 'foo'

Затем я попытался добавить:

lang1 = gettext.translation('myapp', languages=['en'])
lang1.install()
logging.debug(_('foo'))

но это не работает. Вызывает ошибку:

FileNotFoundError: [Errno 2] No translation file found for domain: 'myapp'
...