我目前正处于一个相当大的项目的规划阶段,我将在Zend Framework中开发。我面临的一个问题是,客户不仅要翻译内容,还要翻译界面。我目前正在使用gettext和poedit来管理我的语言文件,但这不是客户的选择,因为他们没有FTP访问该网站。
因此,我正在考虑一个mysql后端,前端有一个接口,供客户管理自己的接口翻译。但是Zend_Translate仍然没有mysql适配器。
那么,现在是否有人使用Zend_Translate的适配器脚本以便它可以使用mysql表?或者反对使用mysql以及可能的其他解决方案来解决这个问题?
答案 0 :(得分:7)
您可以通过不同方式解决此问题:
扩展Zend_Translate_Adapter以创建自己的。所有新适配器仅负责从源中获取翻译。也就是说,您只需要从数据库中获取翻译。查看其他适配器,看看它们是如何实现的。
从数据库中获取数据并将其传递给Zend_Translate_Adapter_Array
使用Zend_Translate_Adapter_Csv或Ini。由于阅读翻译的内容会更多,因此该解决方案会减少对数据库的查询次数。当客户端添加新语言或更改现有语言时,只需将其写入文件,而不是数据库。
如果您决定使用数据库适配器,也许您可以以某种方式“标记”翻译,以便在主页上只提取主页的翻译,在联系页面上只显示联系页面的翻译...
HTH!
答案 1 :(得分:3)
默认的Zend适配器可以很好地处理缓存,所以除非你真的需要数据库,否则我会坚持使用它们。
而是将翻译数据存储在数据库中,您可以直接对翻译文件(例如,po模板)进行操作。如果您只需要添加(附加到文件)新的翻译字符串,这将是最佳选择。
你可以使用Zend_Translate的option to log untranslated messages(到文件或任何日志适配器,包括数据库), 然后处理日志,甚至创建翻译已保存字符串的侦听器。
答案 2 :(得分:0)