Джанго интернационализация и проблема перевода
У меня проблема с переводом 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, отличной от той, которая используется для запуска вашего приложения. Убедитесь, что вы используете ту же версию.
Если вы используете gettext.translation для получения переводов, то есть:
text_de = gettext.translation('django', locale_dir, ['de'], fallback=True).ugettext('Welcome to my site')
... и ваш перевод работает на сервере разработки, но не на производстве, обратите внимание, что locale_dir должен указывать на каталог вашей локали. Он может быть расположен в другом месте в одной из систем. Потратил как 2 часа, чтобы найти его.
Проверьте на USE_I18N
установка. Больше информации Во всяком случае, я думаю, что по умолчанию это True
...