【问题标题】:what is the best method to build "multilingual" script in php?在 php 中构建“多语言”脚本的最佳方法是什么?
【发布时间】:2009-01-19 13:31:54
【问题描述】:

我正在建立一个网站,它需要 7 种语言? 我想知道是否有一个好的做法可以用来获取多语言的php脚本?

  • 对我来说很容易
  • 便于翻译人员

另外你认为,我应该将它存储在 DB、XML 还是 PHP 文件中?

【问题讨论】:

标签: php sql xml multilingual


【解决方案1】:

有很多存储翻译的选项:

  • TMX:一种相对较新的 XML 翻译格式。似乎越来越受欢迎。
  • Gettext 是另一种开放的翻译格式。长期以来一直是事实上的标准。
  • ini 文件 - 易于编辑,格式非常简单
  • PHP 文件(数组) - PHP 程序员易于编辑,性能良好
  • CSV 格式 - 使用相对简单。

我建议您使用 Zend_Translate 之类的东西,它支持多个适配器并提供一种在您的应用程序中嵌入翻译的基本方法。

【讨论】:

  • TMX域名好像被别人狙击了。
【解决方案2】:

与 daddz 相反,我建议不要在 PHP 中使用 gettext:

  • 区域设置是按进程设置的。这意味着当您使用多线程 apache 或任何其他在进程内运行 PHP 的多线程 Web 服务器时,在一个线程中调用 setlocale 将影响其他线程。

    因为您不知道哪个线程/进程正在处理哪个请求,所以您会遇到用户间歇性获取错误区域设置的可怕问题。

  • 您在 PHP 中设置的语言环境会影响 printf 甚至 strtotime 等函数。如果您使用 gettext/setlocale,您肯定会被后端代码中的“奇怪”数字格式所吸引

使用 Eran 提供的任何其他解决方案,或者自己快速做一些事情(PHP 数组工作得非常好)。还使用将在核心 PHP 5.3 中的 intl-extension 进行数字和日期格式化和整理。

在基于 Web 的解决方案上反复使用 gettext 被证明非常像打开众所周知的蠕虫罐头。

【讨论】:

    【解决方案3】:

    我建议Gettext

    它是跨平台的、开源的、广泛使用的并可用于 php:PHP Gettext

    【讨论】:

    • 还有供您的翻译人员使用的桌面软件,这也使您不必编写带有 GUI 的代码来编辑字符串。
    【解决方案4】:

    我已经构建了多语言 CMS。所有内容都存储在数据库中,主表用于通用(不是特定语言的值),而单独的表用于特定语言的内容。

    例如,让我们想象存储产品 - 我们有一个“产品”表(包含唯一 ID、创建日期、图片网址等)和一个“产品本地”表(包含任何语言特定字段)。

    使用这种方法很容易维护内容。

    【讨论】:

      【解决方案5】:

      我对@9​​87654321@ 没有经验,因此对该主题没有任何评论,但我使用以下方法建立了一些多语言网站:

      方法一

      我不会说我的格式是最好的,只是说它很有效。我也用过数组。取决于内容的存储位置。

      例如,我将有一个关联的文本数组,其中包含标识哪些文本的索引:

      $text['english']['welcome'] = "Welcome to my site. blah blah blah";
      $text['english']['login'] = "Please enter your username and password to login";
      

      也许用常量或配置变量设置你的语言。

      方法 2

      我已经建立了两个具有相同结构和后端的站点,但每个站点都使用不同的数据库并单独维护:data_frenchdata_english

      【讨论】:

        【解决方案6】:

        您可能会发现这篇关于该主题的文章很有趣:

        http://cubicspot.blogspot.com/2011/12/cross-platform-multilingual-support-in.html

        作者提倡“懒惰的程序员”策略——只在需要多语言内容时才这样做——并且似乎推荐使用 IANA 语言代码的 PHP 数组方法。不过这篇文章有点含糊。

        【讨论】:

          【解决方案7】:

          查看此论坛。如果有人帮助您翻译,我认为您可能需要一种不同的方法。

          Most efficient approach for multilingual PHP website

          【讨论】:

            猜你喜欢
            • 2019-01-10
            • 1970-01-01
            • 2019-06-14
            • 1970-01-01
            • 1970-01-01
            • 2020-06-16
            • 2010-10-04
            • 2012-01-21
            • 2010-09-15
            相关资源
            最近更新 更多