gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:27:34 24 4
gpt4 key购买 nike

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

我的文件夹结构如下。local/zh_CN/LC_MESSAGES/lang.molocal/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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com