Джанго интернационализация и проблема перевода

У меня проблема с переводом Django.

Проблема 1 - Я обновил строку в файле django.po, но это изменение не появилось на веб-странице.

Проблема 2 - Я создал свой собственный файл локали с помощью django-admin.py makemessages -l et, добавил строку перевода в файл, но они тоже не появляются на странице.

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

Изменить: My settings.py содержит это:

gettext = lambda s: s
LANGUAGE_CODE = 'et'

LANGUAGES = (
             ('et', gettext('Estonian')),
             )

мои собственные файлы локали находятся в

/path/to/project/locale/et/LC_MESSAGES/

и файлы

django.mo и django.po

файл, на который я ссылаюсь в задаче 1, - это django own et transaltion, который я изменил.

7 ответов

Решение

Ну, я получил ту же ошибку несколько минут назад. Я решил это, удалив тег "#, нечеткий" поверх строк перевода в моих файлах django.po. Кажется, что переведенный текст не обслуживается, если он получил этот тег, поэтому обязательно переведите текст, а затем удалите эту строку.

Вот пример переведенного текста, а не сервера в po-файле:

     #: course/models.py:13
     #, fuzzy
     msgid "code"
     msgstr "código"

Итак, просто удалите флаг и оставьте его так:

     #: course/models.py:13
     msgid "code"
     msgstr "código"

Я надеюсь, что эта работа для вас. Удачи!

Ссылка: http://share-experiences.com/blog/what-fuzzy-means-python-django-gettext/

PD: Я знаю, что у вас есть эта проблема несколько месяцев назад, но я оставляю этот ответ, потому что вы никогда не слышали, если бы вы решили эту проблему.

Была такая же / похожая проблема с переводами, не появляющимися. Настройка LOCALE_PATHS устранила проблему:

# settings.py
USE_I18N = True
USE_L10N = True

LOCALE_PATHS = (
  '/path/to/djangoapp/locale',
)

Файлы переводов (PO) загружаются в память только один раз, изменения в файлах PO не регистрируются Django. Чтобы загрузить новые файлы перевода, вам нужно перезапустить Django (например, stop/start runserver, Apache или NGINX).

Еще одна причина, по которой переводы Django не работают - компиляция.po-файла с версией Python, отличной от той, которая используется для запуска вашего приложения. Убедитесь, что вы используете ту же версию.

Убедитесь, что вы используете ugettext_lazy, а не ugettext

Если вы используете gettext.translation для получения переводов, то есть:

text_de = gettext.translation('django', locale_dir, ['de'], fallback=True).ugettext('Welcome to my site')

... и ваш перевод работает на сервере разработки, но не на производстве, обратите внимание, что locale_dir должен указывать на каталог вашей локали. Он может быть расположен в другом месте в одной из систем. Потратил как 2 часа, чтобы найти его.

Проверьте на USE_I18N установка. Больше информации Во всяком случае, я думаю, что по умолчанию это True...

Другие вопросы по тегам