В тесте, которое я делаю в приложении для пирамиды, я пытаюсь отправить переводный текст через JSON, но перевод не работает. В начале файла я ввожу функцию перевода строки:Pyramid TranslationString не работает на json renderer
from pyramid.i18n import TranslationString as _
Затем рассмотрим следующий код:
@view_config(route_name='transtest', renderer='json')
def transtest_view(request):
return { 'myvar': _('temp-test', default='Temporary test', domain='myapp') }
Но то, что я получаю:
{"myvar": "temp-test"}
Обратите внимание, что если Я меняю рендеринг на тестовый шаблон, который я сделал следующим образом:
@view_config(route_name='transtest', renderer='../templates/transtest.pt')
...
то текст становится правильно переводится (обратите внимание, что я уже инициализирован каталоги, обновляется их, составленное их и т.д.)
Это заставило меня думать, что класс TranslationString не работает прямо в «JSon» визуализатора? Если да, как я могу сделать, чтобы отправить переводимую строку через JSON?
Заранее спасибо
почему вы заключаете, что в '_()' вы имели в виду, чтобы сохранить значение в виде кортежа ?? – Stephan
Я следовал примеру документации pyramid i18n, и я увидел, что в этом случае он возвращает кортеж. Как сделать, чтобы получить только переведенную строку? –
Как FWIW Я бы предложил использовать 'TranslationStringFactory', чтобы избежать повторения домена всюду:' from translationstring import TranslationStringFactory', затем '_ = TranslationStringFactory (domain = 'myapp')'. –