#php #symfony1 #internationalization #symfony-1.4 #sfdoctrineguard
#php #symfony1 #интернационализация #symfony-1.4 #sfdoctrineguard
Вопрос:
Недавно у меня возникли проблемы с sfDoctrineGuardPlugin, доступным для Symfony. Проблема заключается в переводе плагина.
Люди, стоящие за sfDoctrineGuardPlugin, очевидно, подумали об i18n, поскольку они предоставили некоторые переводы в надлежащем каталоге в своем проекте. Проблема, однако, в том, что не все текстовые элементы переведены. Более конкретно, форма входа в систему переведена только частично.
Я добавил файл перевода для норвежского языка (и для простоты) поместил его в каталог плагинов i18n. Я уберу это оттуда, как только все элементы будут переведены должным образом, но это уже другая история.
Моя форма входа (форма по умолчанию для sfDoctrineGuardPlugin) при рендеринге выглядит следующим образом (стили удалены для простоты):
Как вы можете видеть, элемент заголовка, а также кнопка входа в систему переводятся, но поля для имени пользователя / электронной почты и пароля не переводятся.
В sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardFormSignin.class.php присутствует следующий код:
if (sfConfig::get('app_sf_guard_plugin_allow_login_with_email', true))
{
$this->widgetSchema['username']->setLabel('Username or E-Mail');
}
Это один из текстовых элементов, которые не переведены. В моем sg_guard.nb.xml Я перевел все строки, которые можно найти в примерах переводов в svn-репозитории sfDoctrineGuardPlugins. Для вышеупомянутой метки у меня есть следующее:
<trans-unit>
<source>Username or E-Mail</source>
<target>Brukernavn eller epost</target>
</trans-unit>
Я предполагаю, что использование setLabel двумя разделами выше гарантирует, что i18n-system не сможет вставить мой перевод туда, куда следует.
Настроен ли sfDoctrineGuardPlugin на замену текста из какого-либо другого каталога, кроме sf_guard.XX.xml ?
Что вы сделали, чтобы переводы заработали? Я действительно не хочу изменять исходный код sfDoctrineGuardPlugin, если этого можно избежать (поэтому у меня чистые зависимости).
Приветствуются любые указания.
Ответ №1:
Я не уверен в точной причине этого, но если вы переместите свои переводы из папки плагинов в папку переводов вашего приложения, все должно работать как по маслу.
По крайней мере, так обстоит дело с моим приложением symfony 1.4.11.
С наилучшими пожеланиями.
Комментарии:
1. Попробовал это сейчас, и независимо от того, как я назвал файл, он не получил бы все переводы. Из моего пользовательского sf_guard.nb.xml-файла он будет извлекать поле заголовка и текст кнопки, но не метки для полей. Странно. Тем не менее, я попытался скопировать переводы в свой собственный nb / messages.xml-файл, и ЭТО сработало. Я определенно попытаюсь найти виновных здесь, а также попросить разработчиков модуля / symfony прояснить несколько вещей в файлах для чтения.