php - 如何加载两个 mo 文件以进行 gettext 本地化

标签 php mysql gettext

我正在尝试解决此问题以加载两个 mo 文件。 我有两个 mo 文件,它们都有不同的 msgid 和 msgstr。

我的文件夹结构如下。 local/zh_CN/LC_MESSAGES/lang.mo local/zh_CN/LC_MESSAGES/brand.mo

下面是我用来加载 mo 文件的代码。

define('PROJECT_DIR', realpath('./'));
define('LOCALE_DIR', PROJECT_DIR .'/locale');
define('DEFAULT_LOCALE', 'en_US');
$encoding = 'UTF-8';
$locale = (isset($_SESSION['lang']))? $_SESSION['lang'] : DEFAULT_LOCALE;
// gettext setup
T_setlocale(LC_MESSAGES, $locale);
// Set the text domain as 'messages'
$our_domain = 'lang';
T_bindtextdomain($our_domain, LOCALE_DIR);
T_bind_textdomain_codeset($our_domain, $encoding);
T_textdomain($our_domain);

我怎样才能在这里添加一个mo文件

最佳答案

我们的想法是将您的字符串分类到不同的类别:

locale/
    en/                    <-- language
       LC_MESSAGES/        <-- category
           messages.mo     <-- domain
           brands.mo       <-- domain

您将不同的域绑定(bind)到区域设置目录,以告诉 gettext 可以在何处找到哪个域。然后选择一个默认域,调用 _('Foo') 时将使用该域。然后,您可以使用更专业的功能来切换域或类别:

_('Foo')                                  // LC_MESSAGES/messages.mo
dgettext('brands', 'Foo')                 // LC_MESSAGES/brands.mo
dcgettext('brands', 'Foo', LC_MONETARY)   // LC_MONETARY/brands.mo

想法是在源代码中对字符串进行分类。

关于php - 如何加载两个 mo 文件以进行 gettext 本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21333847/

相关文章:

php - mysqli_insert_id 返回 0

mysql - grepWin 中的正则表达式匹配文本 block 中由任何内容分隔的三个指定单词

mysql - 计算彼此不在 10 秒内的行数

php - 如何在 Symfony2 中使用 Gettext (.mo/.po) 文件?

java - 如何使用 getText() 从不同类的字段中获取文本

php - Cordova 安卓 :Loading data from database with infinite scrolling in onsenui

php - 左连接 2 列

c - fputs( _ ("") ) 下划线代表什么?

php - 我可以排除复杂查询中满足条件的行吗? (组合 WHERE + 多重 AND)

php - 本地服务器连接到远程mysql