如何在WordPress中使用本地化机制来访问现有的但不是当前的语言字符串?获取特定语言环境的本地化字符串
背景:我有一个自定义主题,我使用locale'en_US'作为默认语言环境,并通过PO文件翻译为语言环境'es_ES'(西班牙语)。
让我们说我用的是建设
__('Introduction', 'my_domain');
在我的代码,而我在PO文件翻译成“简介”西班牙“Introducción'。所有这些工作正常。
现在的问题是:我想在我的数据库中插入n条记录,其中包含字符串'Introduction'的所有现有翻译 - 每个语言一个;所以,在我的例子中n = 2。
理想情况下,我会写这样的事:
$site_id = 123;
// Get an array of all defined locales: ['en_US', 'es_ES']
$locales = util::get_all_locales();
// Add one new record in table details for each locale with the translated target string
foreach ($locales as $locale) {
db::insert_details($site_id, 'intro',
__('Introduction', 'my_domain', $locale), $locale);
}
只是,那上面__()的第三个参数是我的一部分纯粹的幻想。您只能有效编写
__('介绍','my_domain');
根据当前语言环境获取“简介”或“简介”。
代码的结果上面将理想是我结束了两个记录在我的表:
SITE_ID CAT TEXT LOCALE
123 intro Introduction en_US
123 intro Introducción es_ES
我知道我想要的东西,需要加载所有的MO文件,其中通常,只需要当前语言的MO文件。也许使用WordPress函数load_textdomain是必要的 - 我只是希望已经存在一个解决方案。
扩大的问题通过包含插件PolyLang:是否有可能使用Custom Strings实现上述功能?例如。概念:
pll_('Introduction', $locale)