如何在PHP中使用textdomain相关的函数?

时间:2011-04-14 05:56:21

标签: php

以下内容引自here

<?php

$directory = dirname(__FILE__).'/locale';
$domain = 'mydomain';
$locale ="pt_BR.utf8";

//putenv("LANG=".$locale); //not needed for my tests, but people say it's useful for windows

setlocale( LC_MESSAGES, $locale);
bindtextdomain($domain, $directory);
textdomain($domain);
bind_textdomain_codeset($domain, 'UTF-8');

但它在做什么?

1 个答案:

答案 0 :(得分:1)

textdomain()专门用于在多个文本源之间切换。在Web应用程序中,您通常只有一个textdomain,因为它通常只是一个大的应用程序。

如果您的应用程序被分成多个模块,您将使用它。优点是可以为每个应用程序部分单独编辑和更新翻译文本(.mo和.po)文件。

当在模块之间切换时,每个模块都可以重置其域:

# mail.php
textdomain("mail");
print _("Application");     # prints "Mail app"

VS

# calendar.php
textdomain("calendar");
print _("Application");     # prints "Calendar app" e.g.

为此目的还有一个捷径:

print dgettext("main", "Application");   # "Foobar app"

在常见情况下,您使用textdomain(),但只使用主应用程序名称。然后它成为转换来源myapp.mo的基本名称:

textdomain("myapp");