所以,我用谷歌搜索并找到了一种方法让我的应用程序与用于本地化的 db 适配器一起工作(顺便说一句效果很好),现在下一个上升的问题是后备。这是场景:
- 应用程序有英语、德语、法语和韩语的翻译。
- 英语是100%,其他没有。
- 如果字符串未本地化为德语,法语或韩语需要回退到英语
- 适配器使用和 ID 不是本地化字符串
例子:
<?php
// This is init'd in the bootstrap
try {
$locale = new Zend_Locale(Zend_Locale::BROWSER); /* Q1!!! */
} catch (Zend_Locale_Exception $e) {
$locale = new Zend_Locale('en_US');
}
$translate = new Zend_Translate(
'XYZ_Translate_Adapter_Db', // My adapter
$data, // Populated variable
$locale->getLanguage(), // Returns en, de, fr or ko
array() // Options to pass to the adapter, none.
);
// This is called from the view
echo $translate->_(123); /* Q2!!! */
?>
回显的输出将是ID 123的相应文本。现在在第一季度!!!评论,我怎样才能验证 en/de/fr/ko 语言环境?对于第二季度!!!评论,如果没有找到其他语言的ID 123,我该如何回退到英语。
我还要处理日期和货币,所以我想验证 fr_FR、de_DE、ko_KO,而不是 fr_CA 或 de_AT 等变体。因此,对于第一部分,我需要验证语言环境是否来自我需要的国家/语言,或者它们是否至少是有效的语言(并强制它们到正确的国家);对于最后一部分,我需要验证如果翻译不在数据库中,则回退到英语。