2014-03-25 85 views
0

我有两个字段的数据库 - translation.nametranslation.value从DB ZF2翻译

可以在ZF2中创建自定义翻译器,如使用数据库翻译的标准$this->translate("SomeKey");一样?请告诉我,如何在我的项目中实现它?

回答

1

您正在寻找的只是一个简单的ViewHelper,它取代了当前分配给$this->translate()ViewHelper

基本上你需要把它添加到您的配置:

'view_helpers' => [ 
    'factories' => [ 
     'translate' => 'My\View\Helper\Factory\TranslateFactory' 
    ] 
] 

然后,你需要写你的工厂类实现FactoryInterface。然后这个工厂将创建您的实际ViewHelper。您需要通过工厂来完成此任务,因为您的ViewHelper将数据库访问权限视为依赖项。此外,您需要注入用于ViewHelper的当前locale

这使我想到最后一点:什么样的翻译表是那种?任何翻译表都应支持多种语言,可以添加语言键或根本不使用数据库。

最终:确保缓存所有的东西!如果一个密钥已经翻译过一次,它不可能随时更改,所以它将被缓存,并且不会在将来发生不必要的数据库调用!一定要让你的缓存只运行一个文件,这样你就不会进行5000次I/O调用。

+0

谢谢你的回答!也许,请问你有几个例子吗?我是ZF2的新手,不明白这个=( – Walllter

+1

)@Walllter,谷歌关于ZF2 ViewHelper,了解一下ViewHelper是什么,然后开始用默认的ViewHelper替换一些简单的返回字符串。 ZF2。那里有很多信息:) – Sam

+0

你好Sam。你可以帮我吗?我有这个问题,我创建了一个新的话题在http://stackoverflow.com/questions/22824423/translations-from-db-in-zf2 – Walllter