我正在建立一个网站,它需要7种语言? 我想知道是否有一个好的做法可以应用于获取多语言的PHP脚本?
您还认为,我应该将其存储在DB,XML还是PHP文件中?
答案 0 :(得分:11)
有很多存储翻译的选项:
我建议您使用支持多个适配器的Zend_Translate之类的内容,并提供在应用程序中嵌入翻译的基本方法。
答案 1 :(得分:6)
与daddz相反,我建议不要在PHP中使用gettext:
区域设置是按进程进行的。这意味着当您使用多线程apache或任何其他运行PHP进程的多线程Web服务器时,在一个线程中调用setlocale将影响其他线程。
因为您无法知道哪个线程/进程正在处理哪个请求,所以用户间歇性地获取错误的区域设置会遇到严重的问题。
printf
甚至strtotime
等功能。如果你使用gettext / setlocale 使用Eran排列的任何其他解决方案或快速自己做一些事情(PHP数组非常好用)。还可以使用intl-extension,它将在核心PHP 5.3中进行数字和日期格式化和整理。
在基于网络的解决方案上反复使用gettext被证明与打开众所周知的蠕虫非常相似。
答案 2 :(得分:4)
我建议Gettext。
它是跨平台的,开放源代码,广泛使用并可用于php:PHP Gettext
答案 3 :(得分:1)
我对gettext
没有经验,所以没有对该主题发表评论,但我使用以下方法构建了一些多语言网站:
方法1
我不会说我的格式是最好的,只是它有效。我也用过数组。取决于内容的存储位置。
例如,我将有一个关联的文本数组,其中的索引标识了哪个文本:
$text['english']['welcome'] = "Welcome to my site. blah blah blah";
$text['english']['login'] = "Please enter your username and password to login";
也许可以使用常量或配置变量设置语言。
方法2
我已经构建了两个具有相同结构和后端的网站,但每个网站使用不同的数据库,并分别维护:data_french
,data_english
。
答案 4 :(得分:1)
我已经建立了多语言CMS。所有内容都存储在数据库中,主表用于公共(不是特定于语言的值),而单独的表用于特定于语言的内容。
例如,让我们想象一下存储产品 - 我们有一个'产品'表(包含unique_id,创建日期,图片网址等)和'product_local'表(包含任何语言特定字段)。
使用此方法可以很容易地维护内容。
答案 5 :(得分:0)
您可能会发现这篇文章的主题是一篇有趣的内容:
http://cubicspot.blogspot.com/2011/12/cross-platform-multilingual-support-in.html
作者提倡一个懒惰的程序员"策略 - 只有当您需要多语言的东西时才这样做 - 并且似乎推荐使用IANA语言代码的PHP数组方法。这篇文章有点含糊不清。
答案 6 :(得分:0)
查看此论坛。如果你有人帮你翻译,我想你可能需要一个不同的方法。