WooCommerce、代码片段和 WPML:允许从新国家翻译
WooCommerce, Code snippet and WPML: Allow translation from new country
我使用以下代码片段插件向 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 看不到这个新的国家/地区字符串。我在哪里遗漏了什么?如何将“爱沙尼亚(群岛)”翻译成其他语言?
Fist 如果您将代码保存在您的子主题 function.php 文件中,您应该首先将可翻译字符串的文本域名更改为您的子主题文本域,因此将 'woocommerce' 更改为您的子主题文本域。然后在 WPML 中重新扫描您的子主题以获得新的可翻译字符串。然后在“字符串翻译”部分,您将看到这些字符串。
现在,如果它不起作用,因为您正在使用 WPML 插件进行翻译并使用代码片段插件进行代码自定义,您可以使用 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
我使用以下代码片段插件向 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 看不到这个新的国家/地区字符串。我在哪里遗漏了什么?如何将“爱沙尼亚(群岛)”翻译成其他语言?
Fist 如果您将代码保存在您的子主题 function.php 文件中,您应该首先将可翻译字符串的文本域名更改为您的子主题文本域,因此将 'woocommerce' 更改为您的子主题文本域。然后在 WPML 中重新扫描您的子主题以获得新的可翻译字符串。然后在“字符串翻译”部分,您将看到这些字符串。
现在,如果它不起作用,因为您正在使用 WPML 插件进行翻译并使用代码片段插件进行代码自定义,您可以使用 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