В настоящее время я работаю с решением CakePHP (к сожалению, с закрытым исходным кодом) и иногда замечаю, что строка не будет переведена, даже если в файле po есть запись msgid.
Я понял, что это происходит, если ссылка на источник отсутствует в записи. Если я введу ссылку на источник для этой строки или удалим все ссылки на источник из записи, она будет переведена.
Чтобы проверить это, я создал небольшое приложение cakephp с переводимыми строками (используя функцию __ ()), но я не могу получить такое же поведение.
например:.
#: /views/view1/add.ctp:6
#: /views/view1/edit.ctp:6
#: /views/view2/add.ctp:5
#: /views/view2/edit.ctp:5
msgid "Name"
msgstr "localized name string"
App1: если я удаляю ссылки на view1, тогда для этой локали не переводится для view1, но view2 работает переведенным. Если я удаляю все ссылки, обе работают.
App2 (мой тест): ссылки не влияют, все переведено
Как это могло быть?
Я использую темы в первом приложении, и строки варьируются в зависимости от темы. Может ли это вызвать такое поведение?
Другой вопрос: как лучше вставлять новые строки в po-файлы, если я добавляю новые в представления? Я могу извлечь новый пустой банк, это нормально, но всегда искать в po-файлах и вставлять их вручную очень много времени. Там должен быть лучший автоматический способ, что я не мог найти. Руководство по GNU / gettext слишком сложно для меня, чтобы понять процесс этого: (