Получить переводимый текст из внешнего источника в каталог - PullRequest
6 голосов
/ 07 января 2012

Возможно, я упускаю из виду очевидное решение или неправильно думаю ...

У меня есть ограниченное количество текста, слов в базе данных, которые я хочу отображать переведенными пользователям в веб-приложении на флешке / jinja / babel. например. «running» - это возможное значение столбца «activity», и оно должно быть «laufen» для моих немецких пользователей.

Слова в шаблонах и коде извлекаются и помещаются в каталог, но как мне добавить дополнительных слов в каталог? Есть ли простой экстрактор текстовых файлов?

Единственное, о чем я могу подумать, это просто создать файл .py и поместить в него множество _ ('...') строк, но это кажется неправильным ... не так ли?

Ответы [ 2 ]

4 голосов
/ 21 января 2012

Я создал messages.txt со своими «словами», такими как вызовы функций gettext:

_('cycling')
_('running')

и добавил его в мой babel.cfg как источник на python:

[python: messages.txt]

просто, просто, глупо, но работает.

1 голос
/ 15 января 2012

Сначала начните с http://flask.pocoo.org/snippets/4/.

Во-вторых, вам нужно сохранить эти «ограниченные» значения в виде целых чисел или перечислений в базе данных, а затем создать таблицу поиска для всех этих перечислений в коде (так что Бабель о них знает):

i18n_val = {0: _('running'), ...}
# Or multi-level dict with different categories:
i18n_all = {
  'activity': {
     0: _('running'), ...
  'foo': {
     0: _('bar..'), ...
  }
}

Доступ к переведенной строке из шаблона теперь так же прост:

{{ i18n_val[obj.activity] }}
{{ i18n_all['activity'][obj.activity] }}

Чтобы сделать переменные i18n_val и i18n_all доступными для всех шаблонов, просто зарегистрируйте их в контекстных процессорах .

...