Как я могу присоединиться к ленивому переводу в Django?

Мне нужно использовать ленивый перевод, но также мне нужно сделать перевод - что делать?

Этот код делает то, что мне нужно:

print ugettext_lazy('Hello world!')

Теперь я хочу объединить два ленивых перевода вместе и перевести их отдельно (теперь это не сработает и почему, но я хочу иметь две строки перевода).

print ugettext_lazy('Hello world!') + ' ' + ugettext_lazy('Have a fun!')

Я могу сделать такой код, но он генерирует больше перевода, чем нужно.

print ugettext_lazy('Hello world! Have a fun!')

Возможно ли иметь две строки перевода и ленивый перевод?


person Chameleon    schedule 25.03.2015    source источник


Ответы (2)


Поскольку django 1.11 устарел, и вместо этого следует использовать format_lazy.

from django.utils.text import format_lazy
from django.utils.translation import ugettext_lazy

name = ugettext_lazy('John Lennon')
instrument = ugettext_lazy('guitar')
result = format_lazy('{} : {}', name, instrument)
person kmmbvnr    schedule 13.11.2017

Я не думаю, что вы можете, иначе это приведет к переводу другой строки...

Вот пример, взятый из документации. Там нет упоминания о соединении 2 файлов перевода в один, поэтому я предполагаю, что это невозможно сделать, но я могу ошибаться.

Это правильный способ сделать это

https://docs.djangoproject.com/en/1.7/topics/i18n/translation/#joining-strings-string-concat

from django.utils.translation import string_concat
from django.utils.translation import ugettext_lazy
...
name = ugettext_lazy('John Lennon')
instrument = ugettext_lazy('guitar')
result = string_concat(name, ': ', instrument)
person brunofitas    schedule 25.03.2015