如何构建类似于Magento的内联翻译系统

我正在研究Zend Framework,MVC,企业网站项目。我想开发一个友好的翻译系统,能够根据其上下文翻译每个单词(有时候同一个单词有不同的翻译)。 Zend Framework使用Zend_Translate进行i18n和本地化。我们还看到了Magento(使用ZF)内联翻译系统,用户可以直接翻译页面。 我们想知道这个内联翻译系统是如何工作的,这样我们就可以构建一个带有改进的类似系统。 翻译存储在哪里:在数据库中还是在CSV文件中? 当用户在不同的页面上进行不同的转换时,系统如何知道为同一个单词获取翻译? 我们应该如何构建一个支持内联翻译的页面? 系统如何处理静态文本与动态(数据库驱动)文本? 内联翻译似乎会使网站变得非常慢。 Magento如何解决这个问题? 如果你有更多要解释的要点,请写下来。谢谢     
已邀请:
从这里开始(将来,这可能是一个以上的逻辑问题): Magento将基本翻译(由程序员提供)存储在CSV文件中,但内联翻译存储在数据库中。 Magento的翻译是对整个字符串进行操作,而不是单词。通过为翻译提供整个句子的上下文,可以实现惯用语翻译。显然,每个句子都必须翻译,而不是每个单词。 Magento对此的回答是将所有可本地化的字符串包装在对本地化程序的调用中。 Magento模板通常看起来像这样(双下划线函数映射到“转换为当前语言环境”功能):
print $this->__("Please translate this string");
Magento中的动态文本(如产品描述中)通常不会被翻译,但是如果你想这样做,就像将正确的字符串传递给翻译器一样简单,如下所示:
print $this->__($someString);
翻译不太可能成为或破坏您的网站(查看您的数据库查询以查找大多数性能问题),但这仍是一个合理的问题。 Magento提供了一些帮助。首先,它将CSV文件的序列化版本存储在缓存中,以便更有效地读取CSV。其次,Magento提供页面缓存,以便可以存储整个页面的输出(假设它将以相同的方式呈现),以及对页面的较小位进行块级缓存。在这些之间你大部分都处于良好的状态。 希望有所帮助! 谢谢, 乔     

要回复问题请先登录注册