我使用以下代码片段插件为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线程:[已解决]我看不到代码片段插件的翻译