我正在将网站从 SS 2.4 迁移到 SS 3.0,由于 SilverStripe 文档充满了死链接(关于我在 3.0.0 文档页面上单击的每个链接),我遇到了非常困难的时期dead)以及诸如不完整的句子或搜索结果中显示但无法访问的页面之类的漏洞。
具体来说,我正在开发的网站在两个语言环境(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 中的标准代码,可以在 sapphire 和 cms 的语言文件中找到。
据我了解,Zend_Translate 是框架的一部分。是否有可能简单地表达包含另一个翻译文件?或者两个翻译文件的分层?
我考虑使用 yml 转换器,这样我就可以符合建议,但它在 Unix 系统上作为 CLI 工作,而我在 Windows 系统上工作。由于我在这次迁移上花费了所有的时间,并且对文档感到沮丧,我现在后悔选择了 SS,但我只能继续前进。因此,我正在寻找一种简单的解决方案,而不是需要安装虚拟机的解决方案。
谢谢。
?您必须将其移至 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。