我有两个字段的数据库 - translation.name
和translation.value
。
可以在ZF2中创建自定义翻译器,就像使用数据库翻译的标准$this->translate("SomeKey");
一样?请告诉我如何在我的项目中实现它?
答案 0 :(得分:1)
您所寻找的只是一个简单的ViewHelper
,它取代了当前分配给ViewHelper
的{{1}}。
基本上你需要将它添加到你的配置中:
$this->translate()
然后你需要编写实现'view_helpers' => [
'factories' => [
'translate' => 'My\View\Helper\Factory\TranslateFactory'
]
]
的Factory类。然后,此工厂将创建您的实际FactoryInterface
。您需要通过Factory执行此操作,因为您的ViewHelper
将数据库访问权限作为依赖项。此外,您需要将当前使用的ViewHelper
注入locale
。
这让我想到最后一点:那是什么样的翻译表?任何翻译表都应支持多种语言,要么添加语言密钥,要么根本不使用数据库。
最终:一定要赶快行动吧!如果一个密钥已翻译一次,它不可能随时更改,所以请将其缓存,并且以后不要进行不必要的数据库调用!请确保您的缓存仅运行一个文件,这样您就不会进行5000个I / O调用。