Джанго интернационализация и проблема перевода - PullRequest
13 голосов
/ 14 апреля 2010

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

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

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

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

Edit: Мой 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 ]

26 голосов
/ 11 июля 2010

Ну, я получил ту же ошибку несколько минут назад. Я решил это, удалив тег «#, нечеткий» поверх строк перевода в моих файлах 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 /

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

12 голосов
/ 14 июня 2013

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

# settings.py
USE_I18N = True
USE_L10N = True

LOCALE_PATHS = (
  '/path/to/djangoapp/locale',
)
7 голосов
/ 14 октября 2010

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

1 голос
/ 20 августа 2015

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

0 голосов
/ 30 июля 2014

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

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

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

0 голосов
/ 16 января 2014

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

0 голосов
/ 26 мая 2010

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

...