Zend框架中的多语言网站

时间:2010-10-30 05:27:32

标签: php zend-framework multilingual zend-translate

我正在网站上加入多语言支持。 我可以使用Zend_Translate翻译字符串,但内容呢? 例如,我是否必须为每种语言为同一产品添加多条记录?或者还有其他方法吗? 我是多语种的新手,请帮忙。 提前谢谢。

---加法-----------------------------

好的,我决定使用混合解决方案来使用谷歌翻译api并将其存储在数据库中以供进一步编辑。那么存储翻译的数据库结构应该是什么?

  1. 我应该将不同语言的翻译保存在与父记录相同的表中。即产品表中的产品,附加一列标识语言。
  2. 用于存储所有表的所有翻译的通用单表。例如翻译(id bigint,table_name vc(50),table_id bigint,langugae,column_name vc(50),翻译)
  3. 我应该在相关表中保存记录

1 个答案:

答案 0 :(得分:7)

几种可能的方法:

  1. 使用gettext(或Poedit之类的软件)从内容中提取数据。可以使用变量插值。
  2. 创建视图过滤器,如:Zend Framework and Translation
  3. 中所述
  4. 在数据库中有单独的数据内容 如果您将内容存储为标记(例如Markdown)格式,则任何人都可以轻松翻译。用不同的语言创建搜索引擎很容易。
  5. 似乎第三种方法需要付出最大努力,但值得。

    评论后更新

    我假设您将产品数据存储在数据库中,如:

    - product_data
    -- id
    -- price
    -- name
    -- description
    -- etc…
    

    所以你应该修改它,为每种语言的翻译字符串添加字段:

    - product_data
    -- id
    -- price
    
    - product_data_translations
    -- product_id
    -- language (e.g. en)
    -- name
    -- description
    -- etc
    

    然后,您可以轻松构建SQL查询以提取已翻译的数据where product_id=x and language="fr"

    您也可以使用Doctrine I18N自动为您执行此操作。

    您需要手动翻译内容(或使用Google API自动翻译),但是,您可以使用例如Zend_Search_Lucene轻松对其进行索引。