在一个域中支持多种语言的标准做法是什么?
在C++中,我们会为每种语言创建一个资源文件,分为多个部分,然后根据本地用户的不同,我们会加载该部分,并将任何预先翻译的文本应用到菜单等。
有类似的东西可以通过PHP用于HTML吗?
是否可以有一个包含默认元素的xml文件,以及包含网站上常见文本的其他特定语言元素?公共域中是否已经存在这样的"数据库"?
我希望我的网站首先检测用户的国家/地区,并有一个可选的"语言"按钮可用。然后,诸如"登录"主页"关于我们"之类的文本将被插入HTML中。
请注意,我不希望谷歌翻译。
PHP有一个使本地化更容易的特性,gettext。在这里你会找到一个不错的教程。
这是一个非常宽泛的问题,但这里有一个简短的答案和一些链接供您进一步学习:
- 检测用户偏好的语言通常使用各种因素来完成,包括GeoIP和操作系统以及浏览器语言设置
-
正如其他答案中提到的,在PHP中使用
gettext
是一种常见的解决方案,但它用于存储翻译内容的格式不是XML。这是PO文件,看起来像这样:msgid "Enter a comma separated list of user names." msgstr "Eine kommagetrennte Liste von Benutzernamen." msgid "Goodbye!" msgstr "Aufwiedersehen!"
-
PO文件被格式化为要由
gettext
:使用的MO文件msgfmt -o myPHPApp.mo myPHPApp.po
。 -
这些翻译文件被放在如下目录结构下:
./locale/xx_XX/LC_MESSAGES/messages.mo
。 -
然后,您需要将此文件添加到您的PHP代码中:
<?php // Set language to German putenv('LC_ALL=de_DE.utf8'); setlocale(LC_ALL, 'de_DE.utf8'); // Specify location of translation tables bindtextdomain("myPHPApp", "./locale"); // Choose domain textdomain("myPHPApp"); // Translation is looking for in ./locale/de_DE.utf8/LC_MESSAGES/myPHPApp.mo now // Print a test message echo gettext("Welcome to My PHP Application"); // Or use the alias _() for gettext() echo _("Goodbye!"); ?>
最常见的是PO格式。您可以使用gettext。
问候!