LINUX.ORG.RU

Django и локализация кастомных шаблонных тегов

 ,


0

1

Вот есть такое

@register.filter(name='status_description')
def status_description_format(m_type):
    i = int(m_type)
    options = ['I can not clop to this', 'normal', 'hot, 'very hot']
    return options[i] 

Как к этому локализацию засаживать? Чтобы выводило на других языках?

Так и пиликать options = [_(‘hot’), …]

У каждого элемента?

★★★★★
Ответ на: комментарий от fornlr

Нет такого сахара. Единственное, я бы сделал чуточку иначе (в псевдокоде):

opts = [gettext_noop('foo'), gettext_noop('bar'), ...]
return gettext(opts[i])

Первая строка только помечает строку для перевода, прошу прощения за тавтологию, но реально переводится во второй строке.

Потому что если список большой, то для каждого элемента на каждый вызов тега придётся лезть в каталог gettext за переводом. Скорее всего, это будет медленно. Но если проект небольшой и несложный, то и так сойдёт.

emorozov
()
Ответ на: комментарий от emorozov

Потому что если список большой, то для каждого элемента на каждый вызов тега придётся лезть в каталог gettext за переводом. Скорее всего, это будет медленно.

Вот про это я как раз и думал

fornlr ★★★★★
() автор топика
Ответ на: комментарий от fornlr

Ещё можно список options объявить на уровне модуля или класса, но тогда использовать импорт:

from django.utils.translation import gettext_lazy as _

Для того, чтобы строки не переводились один раз при импорте модуля с дефолтной локалью.

Тогда return opts[i] уже будет работать как требуется.

emorozov
()

Зачем нужен анонимус?

@vvn_black

Функционал - числовая функция, заданная на векторном пространстве. Расшифруй, причём тут анонимус?

Zabansya uje debil

Значение

1. матем. числовая функция, заданная на векторном пространстве ◆ Функционал ― математическое понятие вариационного исчисления для обозначения переменной величины, заданной на множестве функций, т.е. зависящей от выбора одной или нескольких функций. Владимир Горбачев, «Концепции современного естествознания», 2003 г. [НКРЯ]

2. неол., комп. жарг., собир. то же, что функциональность; набор функций, возможностей, предоставляемых компьютерной программой, библиотекой функций и т. п. ◆ Первоначально эти системы создавались для предприятий, которые традиционно ведут производственную, финансовую, реже научную деятельность. В их базовом функционале отсутствуют модули, автоматизирующие основные виды деятельности вуза, связанные с образовательным процессом. «Информационная система обеспечения организационной деятельности динамично развивающегося университета», 2003 г. // «Информационные технологии» [НКРЯ]

3. неол., жарг., собир. то же, что функциональность; перечень обязанностей, выполняемых работником ◆ Без принятия соответствующих поправок в Налоговый и Бюджетный кодексы главы местного самоуправления будут просто не в состоянии выполнять свой функционал. Сергей Михеев, «Реформа МСУ по Козаку: очередной подарок губернаторам», 2003 г. [НКРЯ]

@pathfinder

Вопрос нужности «анонимуса» исчерпан?

anonymous
()

Как к этому локализацию засаживать? Чтобы выводило на других языках?

Так и пиликать options = [_(‘hot’), …]

Если сделаешь так, то все фразы для переводов соберутся при помощи команды makemessages.

А если сделаешь вот так: return gettext(options[i]) , фразы тебе придется добавлять руками, что долго.

dicos ★★
()
Ответ на: комментарий от dicos

Если это на моё сообщение ответ, то я указал, что необходимо использовать в таком случае gettext_noop в списке, который не выполняет перевод, но помечает строку для перевода.

Ес-но вручную собирать строки для перевода — абсурдная идея, которая никогда не работает. Работал с «одарёнными», которые так делали, всё у них работало даже не через… А просто не работало.

emorozov
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.