В Django отсутствует перевод некоторых строк. Есть идеи, почему?

У меня есть проект Django среднего размера (работает на AppEngine, если это имеет значение), и все строки живут в файлах .po, как и должны.

Я наблюдаю странное поведение, при котором некоторые строки просто не переводятся. Они появляются в файле .po, когда я запускаю make_messages, с правильными местоположениями файлов, отмеченными там, где находятся мои теги {% trans%}. Переводы на месте и выглядят правильно по сравнению с другими строками по обе стороны от них. Но когда я показываю страницу, о которой идет речь, около 1/4 строк просто не переводятся.

Копаясь в соответствующем сгенерированном файле .mo, я не вижу ни msgid, ни msgstr.

Кто-нибудь видел что-нибудь подобное? Есть идеи, что может происходить?

  • транс-теги выглядят правильно
  • .po файлы выглядят правильно
  • нет ошибок во время compile_messages
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
8
0
1 970
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Фу. Джанго, ты меня убиваешь.

Вот что происходило:

http://blog.e-shell.org/124

Почему-то знает только Django, он решил украсить некоторые мои переводы комментарием '# fuzzy'. Вроде бы выбрал, какие ставить наугад.

В любом случае, #fuzzy означает следующее: "не переводите это, хотя вот перевод:"

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

+1 по умолчанию PyCharm включает #fuzzy в верхней части файла, деактивируя его.

Valchris 23.05.2011 00:49

Спасибо, была та же проблема, вы сэкономили мне время :-)

Tommy 29.08.2011 19:11

Просто просмотрите po-файл с помощью вашего любимого po-редактора и проверьте, можете ли вы пометить все нечеткие записи как OK.

quazgar 25.11.2020 11:04

Нечеткий маркер добавляется в файл .po с помощью makemessages. Когда у вас есть новая строка (без переводов), она ищет похожие строки и включает их как перевод с нечетким маркером. Это означает, что это грубое совпадение, поэтому не показывайте его пользователю, но это может стать хорошим началом для переводчика-человека.

Это не поведение Django, оно исходит от средства gettext.

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