8

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

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

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

4

7 回答 7

11

有很多用于存储翻译的选项:

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

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

于 2009-01-19T13:42:07.213 回答
6

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

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

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

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

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

在基于 Web 的解决方案上一遍又一遍地使用 gettext 证明就像打开众所周知的蠕虫罐头一样。

于 2009-01-19T13:48:45.437 回答
4

我建议Gettext

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

于 2009-01-19T13:36:46.600 回答
1

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

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

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

于 2009-01-19T18:54:51.090 回答
1

我没有这方面的经验,gettext所以不评论这个话题,但我使用以下方法建立了一些多语言网站:

方法一

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

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

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

并且可能使用常量或配置变量设置您的语言。

方法二

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

于 2009-01-19T14:00:26.303 回答
0

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

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

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

于 2011-12-27T15:56:00.357 回答
0

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

多语言 PHP 网站的最有效方法

于 2013-11-30T05:36:42.063 回答