我正在将一个网站翻译成不同的语言,我有以下问题:
通过后端,用户可以通过下拉菜单从50个选项列表中选择一个值(文本字符串)。该下拉列表存储在自定义字段中(顺便说一下,由ACF PRO管理)。
当用户访问网站的翻译版本时,我希望显示该文本字符串的翻译。
起初我认为
$options_obj = get_field_object(\'user_options\');
$options_value = get_field(\'user_options\');
$options_label = $options_obj[\'choices\'][$options_value];
echo __($options_label, \'my_text_domain\');
我把50个文本字符串翻译(对应于所有可选选项)放在一个po/mo文件中,
but as we know this won\'t work. Gettext不转换变量。
我怎样才能得到翻译后的字符串?你有什么想法吗?非常感谢。
SO网友:cjbj
我不完全确定这是否是您想要的,但是如果选项页使用一种语言,您可以简单地将gettext调用放在自定义字段中,以避免使用变量。对于管理员,您强制将其翻译为西班牙语:
function wpse227983_force_language ( $locale ) {
if ( is_admin() ) {
return \'es_ES\';
}
return $locale;
}
add_filter( \'locale\', \'wpse227983_force_language\' );
在前端,假设您有一个确定页面语言的系统,则消息将以正常方式翻译。如果作者为该语言设置了自定义字段,则可以将上述筛选器与其他
if
强制翻译。