Миграция на SilverStripe 3.0 и Zend_Translate
Я перевожу веб-сайт с SS 2.4 на SS 3.0, и у меня невероятно трудное время из-за того, что документация SilverStripe полна неработающих ссылок (все ссылки, которые я щелкнул на странице документации 3.0.0, устарели) и дыры, такие как неполные предложения или страницы, которые отображаются в результатах поиска, но недоступны.
В частности, веб-сайт, над которым я работаю, работает в двух локалях (en_US и fr_FR), и я использовал (в SS 2.4), чтобы использовать i18n::include_locale_file
, Теперь, после нахождения соответствующих модулей и обновления пользовательского кода, я получаю уведомление об устаревании, которое я не знаю, как решить, и какие поисковые запросы в Интернете не дают ответа:
[User Deprecated] i18n::include_locale_file is deprecated. Use Zend_Translate instead.
Проблема в том, что есть нулевой пример того, что должно быть сделано. Нет доступного пути обновления. Я просто не понимаю, как я могу заменить старый код, такой как этот:
i18n::include_locale_file('framework', 'fr_FR');
global $lang;
if(array_key_exists('fr_FR', $lang) && is_array($lang['fr_FR'])) {
$lang['fr_FR'] = array_merge($lang['fr_FR'], $lang['fr_FR']);
} else {
$lang['fr_FR'] = $lang['fr_FR'];
}
Это был стандартный код в SS 2.4 и его можно найти, например, в языковых файлах сапфира и cms.
Насколько я понимаю, Zend_Translate является частью фреймворка. Есть ли возможность выразить просто включение другого файла перевода? Или наложение двух файлов перевода?
Я подумал об использовании конвертера yml, чтобы соответствовать рекомендациям, но он работает как CLI в системе Unix, и я работаю в системе Windows. Со всем тем временем, которое я потратил на эту миграцию, и разочарованием документацией, я теперь сожалею о том, что выбрал SS, но я могу только идти вперед. Поэтому я ищу простое решение, а не то, которое потребовало бы установки виртуальной машины.
Благодарю.
1 ответ
У вас есть файлы php как файлы lang? например, mysite / lang / fr_FR.php? Вам придется переместить это в yml-файлы или использовать вместо него Zend_Translate;)
См. https://github.com/jakr/miscellaneous-wiki/wiki/SilverStripe-3-Quick-Upgrade-Guide и https://docs.silverstripe.org/en/3.0/changelogs/3.0.0#zend-translate список изменений / 3.0.0 # Зенда-перевод
Из последнего, определите в вашем /mysite/config.php:
i18n::register_translator(
new Zend_Translate(array(
'adapter' => 'i18nSSLegacyAdapter',
'locale' => i18n::default_locale(),
'disableNotices' => true,
)),
'legacy',
9 // priority lower than standard translator
);
чтобы старые файлы php снова заработали. В зависимости от того, сколько у вас языковых строк, я бы переместил их в.yml.