У меня есть проект Django среднего размера (работает на AppEngine, если это имеет значение), и все строки живут в файлах .po, как и должны.
Я наблюдаю странное поведение, при котором некоторые строки просто не переводятся. Они появляются в файле .po, когда я запускаю make_messages, с правильными местоположениями файлов, отмеченными там, где находятся мои теги {% trans%}. Переводы на месте и выглядят правильно по сравнению с другими строками по обе стороны от них. Но когда я показываю страницу, о которой идет речь, около 1/4 строк просто не переводятся.
Копаясь в соответствующем сгенерированном файле .mo, я не вижу ни msgid, ни msgstr.
Кто-нибудь видел что-нибудь подобное? Есть идеи, что может происходить?






Фу. Джанго, ты меня убиваешь.
Вот что происходило:
Почему-то знает только Django, он решил украсить некоторые мои переводы комментарием '# fuzzy'. Вроде бы выбрал, какие ставить наугад.
В любом случае, #fuzzy означает следующее: "не переводите это, хотя вот перевод:"
Я оставлю это здесь на случай, если в будущем с этим столкнется какая-нибудь другая бедняжка.
Спасибо, была та же проблема, вы сэкономили мне время :-)
Просто просмотрите po-файл с помощью вашего любимого po-редактора и проверьте, можете ли вы пометить все нечеткие записи как OK.
Нечеткий маркер добавляется в файл .po с помощью makemessages. Когда у вас есть новая строка (без переводов), она ищет похожие строки и включает их как перевод с нечетким маркером. Это означает, что это грубое совпадение, поэтому не показывайте его пользователю, но это может стать хорошим началом для переводчика-человека.
Это не поведение Django, оно исходит от средства gettext.
+1 по умолчанию PyCharm включает #fuzzy в верхней части файла, деактивируя его.