Найти - Пользователи
Полная версия: gettext_lazy
Начало » Django » gettext_lazy
1
offline
Не могу понять различия между gettext и gettext_lazy. В документации написано мол gettext_lazy переводит только тогда когда обращаются к значению объекта и настоятельно это рекомендуют при переводе слов в моделях. Я вот только не могу понять, а почему не использовать обычный gettext? Ну переведёт оно сразу это слово, разница то в чём? А есть ещё gettext_noop различия которого относительно gettext_lazy даже в теории не описано в документации.
Андрей Светлов
gettext_noop возвращает принятую строку без преобразования.

gettext_lazy может немного повысить скорость. Как я понимаю, пример такой

msg_1 = gettext_lazy('msg_1')
msg_2 = gettext_lazy('msg_2')

def f(…):


if condition:
ret = msg_1
else:
ret = msg_2

Т.е. заводишь переменные с трансляциями на все, а потом реально используешь только некоторые. Для неизпользуемых трансляции не дергаются.
Поскольку результат вызова не кешируется - толку не очень много.
offline
Андрей Светлов насчёт ugettext_noop() имелось в виду что их значения например при сравнении останутся на оригинальном языке?

msg_1 = ugettext_noop(var1)
msg_2 = ugettext_noop(var2)

if len(msg_1) > len(msg_2):
pass


тут сравнивать оригинальные значения будут, а если юзать gettext_lazy() или gettext() то их перевод?
Андрей Светлов
django.utils.translation.trans_real:gettext_noop
def gettext_noop(message):
"""
Marks strings for translation but doesn't translate them now. This can be
used to store strings in global variables that should stay in the base
language (because they might be used externally) and will be translated
later.
"""
return message
gettext - обертка вокруг стандартного модуля gettext, т.е. ищет перевод
gettext_lazy - обертка вокруг django gettext, делающая отложенный вызов

gettext_lazy = lazy(gettext, str)

lazy - в django.utils.functional

P.S. Да читайте же наконец исходники!..
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB