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插件进行翻译和代码片段插件进行代码自定义,你可以使用WPMLICL_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;
}

注意:你可能需要检查一下"estid"是WPML中的注册国家代码。

相关的WPML线程:[已解决]我看不到代码片段插件的翻译

相关内容

  • 没有找到相关文章

最新更新