В Django, как определить, доступен ли перевод для данного текста? - PullRequest
7 голосов
/ 07 ноября 2010

Я хотел бы определить, есть ли перевод на текущий язык для данной строки.Я хотел бы написать что-то вроде:

if not translation_available("my string"):
    log_warning_somewhere()

Я не нашел ничего подходящего.Функция ugettext просто возвращает перевод или исходную строку (если перевод недоступен), но без какой-либо опции, чтобы определить, есть ли перевод или нет.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 21 июня 2014

Вы можете использовать полиб для этого: https://bitbucket.org/izi/polib/wiki/Home

Что-то в этих (непроверенных) строках кода:

import polib
po = polib.pofile('path/your_language.po')
text == 'Your text'
is_translated = any(e for e in po if e.msgid == text and (not e.translated() or 'fuzzy' in e.flags) and not e.obsolete)

Это даст True, если доступен перевод active . Только e.translated () возвращает True как для нечетких, так и / или устаревших фраз.

0 голосов
/ 07 ноября 2010
def translation_available(msg): return ugettext(msg) == msg
0 голосов
/ 07 ноября 2010

Поскольку, как вы говорите, ugettext вернет исходную строку, если перевод недоступен, вы не можете просто сравнить возвращенное значение с оригиналом, чтобы убедиться, что они идентичны?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...