translate.csv
翻译和通过表的数据库方法有什么区别core_translate
?
4 回答
这是来自 app/code/core/Mage/Core/Model/Translate.php 的 init() 方法的一部分
//Loading data from module translation files
foreach ($this->getModulesConfig() as $moduleName=>$info) {
$info = $info->asArray();
$this->_loadModuleTranslation($moduleName, $info['files'], $forceReload);
}
$this->_loadThemeTranslation($forceReload);
$this->_loadDbTranslation($forceReload);
从中可以看出,Magento 加载翻译的顺序如下,即 Magento 中有三个选项可以为文本字符串添加自定义翻译:模块翻译、主题翻译和内联翻译。
模块翻译
模块翻译以 csv 文件的形式存储在app/locale/languagecode_COUNTRYCODE/
文件夹中,命名为 Namespace_Modulename.csv 方法内的扩展中的所有字符串都__()
可以这样翻译
主题翻译
字符串可以在您的主题中翻译,因为您只需要通过 Magento 管理区域设置语言环境,然后在其中创建 translate.csvapp/design/frontend/<package>/<theme>/locale/languagecode_COUNTRYCODE
并将您翻译的字符串放入此 CSV
“My Cart”,”My Basket”
“My Account”,”Account”
内联翻译
要启用内联翻译,您需要登录管理面板并转到System -> Configuration -> Developer
然后找到内联翻译并Enabled
为前端设置是
此方法所做的所有翻译都将存储在数据库中的 core_translate 表中。为了更好地了解此方法的工作原理,请查看此视频。
上面的文字是我在我们博客上的文章的一部分
core_translate 表用于依赖于 StoreView 的短语
/app/design/frontend/YOUR PACKAGE/YOUR THEME/locale/YOUR LOCALE/translate.csv 用于您的主题的本地语言的短语。如果您更改主题,则不会使用此短语(将使用来自新主题的 translate.csv)。
如果短语在数据库和 csv 中可用,则将使用 DB 短语。
正如我所看到的,当您在多个服务器上以分布式方法运行 magento 并且从文件系统读取并不理想时,core_translate 很有用。我使用带有内联翻译的 core_translate 来处理 CMS 块中的翻译内容。(a mod) 这样做的原因是从 db 读取比解析 .csv 更快。(我不知道打开缓存是否如此,但这似乎是最安全的路线)
我挖出了这个旧论坛,提出了一些建议。可能 Magento 正在尝试使用内联 core_translate 方法并推出 translate.csv。然而,鉴于论坛主题是从 2008 年开始的,情况似乎并非如此。另一个建议是,有些语言在数据库中使用 core_translate,而有些语言则将记录保存在 .csv 中。可能 .csv 是为本地维护者准备的,而 core_translate 是为管理员准备的。这是线程http://www.magentocommerce.com/boards/viewthread/40510/