2015-09-10 11 views
1

Я переношу веб-сайт с SS 2.4 на SS 3.0, и у меня очень тяжелое время из-за того, что документация SilverStripe полна мертвых ссылок (о каждой ссылке, на которую я нажал 3.0.0 documentation page) и дыры, такие как неполные предложения или страницы, которые появляются среди результатов поиска, но не могут быть достигнуты.Переход к SilverStripe 3.0 и Zend_Translate

В частности, сайт, на котором я работаю, работает в двух локалях (en_US и fr_FR), и я использовал (в SS 2.4) для использования i18n::include_locale_file. Теперь, после того, как найти соответствующие модули и обновления пользовательского кода, я получаю устаревания уведомление, что я не знаю, как решить и к которому поисковые запросы приносят никакого ответа:

[User Deprecated] i18n::include_locale_file is deprecated. Use Zend_Translate instead. 

Проблема в том, что есть zero example из что нужно сделать. Доступ к пути обновления невозможен. Я просто не понимаю, как я могу заменить старый код, например, как это:

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 и можно найти, например, в языковых файлах сапфира и СЦИ.

Как я понимаю, Zend_Translate является частью структуры. Есть ли возможность выразить просто включение другого файла перевода? Или расслоение двух файлов перевода?

Я думал об использовании конвертера yml, чтобы я мог соответствовать рекомендациям, но он работает как CLI в системе Unix, и я работаю над системой Windows. Я все время тратил на эту миграцию и разочарование в документации, теперь жалею, что выбрал SS, но я могу идти только вперед. Поэтому я ищу простое решение, а не одно, которое потребует установки виртуальной машины.

Спасибо.

ответ

0

У вас есть файлы php в виде файлов lang? например mysite/lang/fr_FR.php? Вы должны переместить это YML файлы или использовать Zend_Translate вместо;)

https://github.com/jakr/miscellaneous-wiki/wiki/SilverStripe-3-Quick-Upgrade-Guide#translation-file-format-changed-from-php-to-yml Смотрите и https://docs.silverstripe.org/en/3.0/changelogs/3.0.0#zend-translate

Из последнего определения в вашем /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.

+0

Спасибо за ответ, но, как я уже сказал в этом вопросе, я посетил эти ссылки. Ни один из них не решает проблему перехода на yml без переустановки файла yml вручную или с нахождением пользовательского конвертера с нуля, а также проблемы старого include_locale_file для наложения файлов перевода. На данный момент я работал над этим, комментируя блок кода, который я цитировал. – AbVog

+0

Ну, фрагмент кода выше должен сделать ваши старые файлы языка php снова. Вы попробовали? – wmk