2015-03-24 7 views
0

Я пытаюсь перевести свой сайт django на другие языки, но перевод на python не работает. Но перевод в шаблонах с использованием тега trans работает, как и ожидалось.django перевод не работает, но перевод в шаблонах работает

Я попытался ugettext, gettext, gettext_lazy и ugettext_lazy, и каждый раз, когда я получил оригинальные непереведенные строки.

Мои источники все в UTF-8 кодировке, оригинальные строки на украинском языке

+0

Вы изменили настройку языка в файле 'settings.py', чтобы указать свой язык? – Paco

+0

Да, язык переключения хорошо работает. Перевод в шаблонах работает хорошо, и я получил переведенные строки, он не работает только в файлах python. Я устанавливаю USE_I18N = True, промежуточное ПО, список языков, активный язык и путь к переводам в файле настроек. – patriotyk

+0

Что значит «это не работает только в файлах python»? Вы получаете английские строки? Это ваш собственный код, который не переведен? Если это так, вам необходимо создать файлы переводов: https://docs.djangoproject.com/en/1.7/topics/i18n/translation/#localization-how-to-create-language-files – Paco

ответ

0

Вы хотите проверить this

Поскольку вы не отправлял свой код, я предполагаю, что это что-то делать с псевдонимом ,

Использование

from django.utils.translation import ugettext_lazy as _ 

translated_string = _('original_string') 

И вы не должны иметь проблемы

«Вы можете использовать только _ псевдоним ugettext и ugettext_lazy (или любой другой связанной с функцией перевода) в Django или иначе он выиграл» t признается командой makemessages. Техническое объяснение можно найти в Robert Lujo's answer. "

+0

Я сделал это, как вы писали. И в моем случае transl_string всегда будет «original_string». Позже я отправлю код – patriotyk

0

Я думаю, проблема в вашем MIDDLEWARE_CLASSES. Дело в том, что есть некоторые посредники, которые могут изменить ваш запрос, включая префикс языка. Особенно, когда вы используете вызовы AJAX для запроса дополнительных данных шаблона, переведены ugettext, gettext и т. Д.

+0

Нет, я решил эту проблему, но не обновил этот поток. Я сделал перевод с украинского языка, поэтому исходные строки должны быть объектами Unicode. В противном случае ugettext_lazy не будет работать, если строка содержит нелатинские символы. – patriotyk

0

ugettext_lazy не будет работать, если строка содержит нелатинские символы. Поэтому в моем случае исходные строки должны быть объектами Unicode.

Смежные вопросы