如何解决WooCommerce、代码片段和 WPML:允许来自新国家的翻译
我使用以下代码片段插件向 WooCommerce 添加了一个新国家/地区:
add_filter( 'woocommerce_countries','add_my_country' );
function add_my_country( $countries ) {
$new_countries = array( 'ESTI' => __( 'Estonia (islands)','woocommerce' ),);
return array_merge( $countries,$new_countries );
}
add_filter( 'woocommerce_continents','add_my_country_to_continents' );
function add_my_country_to_continents( $continents ) {
$continents['EU']['countries'][] = 'ESTI';
return $continents;
}
代码运行良好。
现在我正在使用 WPML 插件进行翻译,但是 WPML 没有看到这个新的国家/地区字符串。我在哪里错过了什么?如何将“爱沙尼亚(岛屿)”翻译成其他语言?
解决方法
拳头 如果您将代码保存在您的子主题 function.php 文件中,您应该首先将可翻译字符串的文本域名更改为您的子主题文本域,因此将“woocommerce”更改为您的子主题文本域。然后在 WPML 中重新扫描您的子主题以获取新的可翻译字符串。然后在“字符串翻译”部分,您将看到这些字符串。
现在,如果它不起作用,因为您使用 WPML 插件进行翻译,使用 Code Snippet 插件进行代码自定义,您可以使用 WPML ICL_LANGUAGE_CODE
常量来定位特定国家/地区代码。
那么 gettext
钩子应该适用于按国家/地区代码进行的翻译,例如:
add_filter( 'gettext','translate_some_custom_strings',10000,3 );
function translate_some_custom_strings( $translate_text,$original_text,$domain ) {
if ( defined( 'ICL_LANGUAGE_CODE' ) && 'Estonia (islands)' === $original_text ) {
// For Estonia
if ( 'ESTI' === ICL_LANGUAGE_CODE ) {
$translate_text = 'Eesti (saared)';
}
// For France
elseif ( 'FR' === ICL_LANGUAGE_CODE ) {
$translate_text = 'Estonie (îles)';
}
}
return $translate_text;
}
注意:您可能需要检查“ESTI”是否是在 WPML 中注册的国家/地区代码。
相关 WPML 线程:[Resolved] I can’t see translation for Code Snippet plugin
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。