网页国际化


internationalization on web pages

在一个域中支持多种语言的标准做法是什么?

在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。

问候!