Django интернационализация и перевод
У меня проблема с переводами django.
Проблема 1 - Я обновил строку в файле django.po, но это изменение не появилось на веб-странице.
Проблема 2. Я создал свой собственный файл locale с django-admin.py makemessages -l et, добавив строку перевода в файл, но они тоже не отображаются на странице.
Я не думаю, что это задание проблемы, потому что переводы с файла django.po появляются на веб-сайте, его просто изменения и переводы из моего собственного сгенерированного файла, которые не отображаются.
Изменить:
Мои параметры 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, который я изменил.
Ответы
Ответ 1
Хорошо, я получил ту же ошибку несколько минут назад. Я решил удалить текстовый тег "#, fuzzy" над строками перевода в файлах 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: Я знаю, что вы получили эту проблему несколько месяцев назад, но я оставляю этот ответ из-за того, что вы никогда не слышали, если вы решили эту проблему.
Ответ 2
Была такая же/подобная проблема, при которой переводы не появлялись. Установка LOCALE_PATHS исправила проблему:
# settings.py
USE_I18N = True
USE_L10N = True
LOCALE_PATHS = (
'/path/to/djangoapp/locale',
)
Ответ 3
Файлы переводов (PO) загружаются в память только один раз, изменения в файлах PO не подбираются Django. Чтобы загрузить новые файлы перевода, вам необходимо перезапустить Django (например, остановить/запустить серверы запуска, Apache или NGINX).
Ответ 4
Еще одна причина, по которой перевод Django не работает, заключается в компиляции файла .po с версией Python, отличной от той, которая используется для запуска вашего приложения. Убедитесь, что вы используете ту же версию.
Ответ 5
Обязательно используйте ugettext_lazy, а не ugettext
Ответ 6
Если вы используете gettext.translation для получения переводов, то есть:
text_de = gettext.translation('django', locale_dir, ['de'], fallback=True).ugettext('Welcome to my site')
... и ваш перевод работает на сервере разработки, но не на производстве, обратите внимание, что locale_dir должен указывать на ваш каталог локали. Он может быть расположен в другом месте на одной из систем. Потрачено, как 2 часа нахождение его.
Ответ 7
Проверьте настройку USE_I18N
. Дополнительная информация. Во всяком случае, я думаю, что по умолчанию он True
...