Php 网页国际化
在一个域中支持多种语言的标准实践是什么 <>在C++中,我们将创建一个资源文件,每个语言都被划分为各个部分,然后根据用户本地,我们将加载该部分,并将任何预翻译文本应用到菜单等 有类似的东西可以通过PHP用于HTML吗 是否可能有一个包含默认元素的xml文件,以及包含网站上常见文本的其他特定于语言的元素?公共领域中是否已经存在这样的“数据库” 我想我的网站首先检测用户所在国家,并有一个可选的“语言”按钮可用。然后,诸如“登录”、“主页”、“关于我们”之类的文本将被插入HTML中Php 网页国际化,php,html,internationalization,Php,Html,Internationalization,在一个域中支持多种语言的标准实践是什么 在C++中,我们将创建一个资源文件,每个语言都被划分为各个部分,然后根据用户本地,我们将加载该部分,并将任何预翻译文本应用到菜单等 有类似的东西可以通过PHP用于HTML吗 是否可能有一个包含默认元素的xml文件,以及包含网站上常见文本的其他特定于语言的元素?公共领域中是否已经存在这样的“数据库” 我想我的网站首先检测用户所在国家,并有一个可选的“语言”按钮可用。然后,诸如“登录”、“主页”、“关于我们”之类的文本将被插入HTML中 请注意,我不想用谷歌翻
请注意,我不想用谷歌翻译。PHP有一个使本地化更容易的功能,gettext。 你会找到一本关于它的不错的教程。最常见的是格式。你可以用
问候 这是一个非常广泛的问题,但这里有一个简短的答案和一些供您进一步研究的链接:
- 检测用户首选语言通常使用各种因素,包括和
- 正如在其他答案中提到的,在PHP中使用
是一种常见的解决方案,但它用于存储翻译内容的格式不是XML。是PO文件,如下所示:gettext
msgid "Enter a comma separated list of user names." msgstr "Eine kommagetrennte Liste von Benutzernamen." msgid "Goodbye!" msgstr "Aufwiedersehen!"
- PO文件被格式化为MO文件,供
使用:gettext
msgfmt-o myPHPApp.mo myPHPApp.po
- 这些翻译文件放在如下目录结构下:
/locale/xx\u xx/LC\u 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!"); ?>
setlocale()
让我感到困惑。一旦设置,它将在系统范围内应用,还是每次看到新语言时都需要它?我的意思是,每次单击页面时是否都需要语言检测和区域设置?实际上,这是一个很好的问题,因此它会更改LC\u ALL
,这是一个环境变量。仅限于当前脚本,并且“将设置添加到服务器环境[该环境]仅在当前请求期间存在”。一旦用户检测到或选择了语言,就可以在$\u会话
(如$\u会话['locale'])
中存储和标识,这样在用户从一个页面导航到另一个页面时,语言选择将保持不变。感谢您的清除。碰巧,我正在构建我的站点的Wordpress
已经内置了这种支持。现在,我必须学会如何使用它。我希望在执行时正确格式化字符串,而不是稍后再执行。