如何使用Zend Framework处理l10n应用程序?

时间:2011-03-12 12:51:57

标签: php zend-framework localization internationalization

嗨,让我说我有以下申请:

  • 未本地化
  • 一种与数据库语言无关的

我需要制作这个应用程序l10n和i18n。

每个网站都可以通过一个域名(domain.co.uk,domain.fr,domain.it或者来自子域名fr.domain.com,en.domain.com,it.domain.com等更多网站提供)语言与本地化有关。)

例如,您将如何处理数据库?

一个数据库,每个实体都有一个区域设置信息?

喜欢id,article_title,article_body,article_locale?还是单独的数据库?

  • domain_fr
  • domain_en

您将如何部署应用程序?

  • 每个虚拟主机一个?
  • 同样指向各处,但本地化在bootstrap?也许在这里选择db会很棘手。

与当前应用程序的向后兼容性如何?

我的想法:

  • 每种语言使用不同的vhosts / server
  • 使用application.ini定义本地
  • 使用application.ini选择要使用的数据库

由于应用程序使用不同的内容进行本地化,因此我无需在其中切换语言,因此我可以在配置中对语言环境进行硬编码。

我能看到的唯一不好的地方就是db evolution,因为如果我需要添加一个列,我需要在几个数据库中随处可见。因此,可能需要一个具有区域设置选项的中央数据库会更好,但可能需要更多的工作。

什么是反馈?这是一个决定性的决定,我想采取正确的方式。

1 个答案:

答案 0 :(得分:0)

您可以使用不同的思考来达到您的要求:

  1. 因为您为每种语言使用不同的vHost,所以可以在环境变量中设置Local。 OR 使用基于主机名的特定路由。
  2. 拥有语言环境后,您需要使用Zend_Translate
  3. 指定i18n
  4. 接下来我建议你在DB中创建一个额外的字段来选择语言(最简单的解决方案) OR 在Bootstrap中通过Langugage选择不同的数据库(不太容易维护)
  5. 对于表格示例pagecontent,您将拥有:

    • PageID(主要)
    • 语言(主要)
    • 标题
    • 恢复
    • 内容

    一个元组由“内容和语言”组成。