2010-07-19 88 views
1

我正在开发一个Zend Framework,MVC,企业网站项目。我想开发一个友好的翻译系统,能够根据上下文翻译每个单词(有时相同的单词有不同的翻译)。如何构建一个类似于Magento的内联翻译系统

Zend Framework使用Zend_Translate进行i18n和本地化。我们也看到了Magento的(使用ZF)内联翻译系统,用户可以在这里使用translate pages directly

我们想知道这个内联翻译系统是如何工作的,以便我们可以建立一个类似的系统并加以改进。

  1. 在哪里存储翻译:在数据库或CSV文件中?

  2. 当用户在不同的页面上进行不同的转换时,系统如何知道为同一个字提取翻译?

  3. 我们应该如何构建一个页面来支持内联翻译?

  4. 系统如何处理静态文本与动态(数据库驱动)文本?

  5. 内联翻译似乎会使网站变得非常缓慢。 Magento如何解决这个问题?

如果你有更多要解释的要点,请写下来。由于

+1

当一切都写在大胆,什么都不是。 – 2010-07-19 16:14:07

回答

3

从这里开始(在未来,这可能是不止一个合乎逻辑的问题)开始:

  1. Magento的存储基本的翻译在CSV文件(由程序员提供),但在线的翻译存储在数据库中。

  2. Magento的翻译操作整个字符串,而不是单词。通过为翻译提供完整的句子,可以实现习语翻译。权衡显然是每个句子都必须翻译,而不是每个单词。

  3. Magento对此的回答是将所有可本地化的字符串包裹到本地化程序的调用中。 Magento的模板,通常是这个样子(双下划线函数映射到“转换成当前区域”功能):(在产品说明的)在Magento

    print $this->__("Please translate this string");

  4. 动态文本往往没有翻译,但如果你想这样做,这是因为正确的字符串传递给翻译一样简单,像这样:

    print $this->__($someString);

  5. 这是不可能的翻译将创造或打破你的网站(看看你的数据库查询对于大多数性能问题),但这是一个合理的问题。 Magento会提供一些帮助。首先,它将CSV文件的序列化版本存储在缓存中,以便读取CSV更加高效。其次,Magento提供页面缓存,以便整个页面的输出可以被存储(假设它将以相同的方式呈现),以及页面较小位的块级缓存。在这些之间,你大部分状况都很好。

希望帮助!

谢谢, 乔

+0

非常感谢Yosef – Yosef 2010-07-20 19:57:46