1

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

在 C++ 中,我们将创建一个资源文件,为每种语言划分为多个部分,然后根据本地用户,我们将加载该部分并将任何预翻译的文本应用于菜单等。

是否有类似的东西可用于通过 PHP 的 HTML?

是否可以有一个包含默认元素的 xml 文件和包含网站上常见文本的其他语言特定元素?公共领域中是否已经存在这样的“数据库”?

我希望我的网站首先检测用户所在的国家/地区并提供一个可选的“语言”按钮。然后诸如“登录”“主页”“关于我们”之类的文本将被插入到 HTML 中。

请注意,我不希望谷歌翻译。

4

3 回答 3

1

PHP 有一个使本地化更容易的特性,gettext。 在这里你会找到一个不错的教程。

于 2013-08-19T04:34:27.440 回答
1

这是一个非常广泛的问题,但这里有一个简短的答案和一些供您进一步研究的链接:

  • 检测用户首选语言通常使用各种因素来完成,包括GeoIP操作系统以及浏览器语言设置
  • 正如其他答案中提到的,gettext在 PHP 中使用是一种常见的解决方案,但它用于存储翻译内容的格式不是 XML。它的 PO 文件如下所示:

     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_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!");
    
    ?>
    
于 2013-08-19T04:53:04.503 回答
0

最常见的是PO格式。您可以使用gettext

问候!

于 2013-08-19T04:37:50.620 回答