WPML 从所有语言中获取字符串的翻译内容(如果可用)
WPML get translated content of a string from all languages if available
使用 WPML,我已经将一个字符串翻译成 4 种语言:en、nl、fr 和 de。
默认情况下,我可以使用 <?php _e('my string here','text_domain'); ?>
,当我在该域中时,它将 return 准确翻译的文本。
如何将所有翻译的文本集中在一个地方。所以如果我在网站的英文版上,但我想获得我的字符串在 nl、fr、de 和 en 中的翻译内容。
请问这怎么可能?
您可以临时更改当前语言以检索翻译后的字符串。类似于:
// Backup the current language
$current_lang = $sitepress->get_current_language(); // Say it's "en"
// Switch to another language. E.g. $desired_lang = "nl";
$sitepress->switch_lang( $desired_lang );
// Get your translated string...
_e( 'My string here', 'text_domain' );
// Back to the original language to not interfere
$sitepress->switch_lang( $current_lang );
我已经在页面模板(比如 index.php
)上对此进行了测试并且它有效...然后我尝试构建一个函数来完成这项工作。类似于:
// Put this in your functions.php
function get_all_translations( $string, $languages ) {
global $sitepress;
if ( empty( $languages ) ) {
$languages = array_keys(
icl_get_languages( 'skip_missing=0&orderby=code&order=asc' )
);
}
$current_lang = $sitepress->get_current_language();
$translations = [];
foreach ( $languages as $lang ) {
$sitepress->switch_lang( $lang, true );
$translations[$lang] = __( $string, 'text_domain' );
}
$sitepress->switch_lang( $current_lang );
return $translations;
}
并且:
// This on index.php:
var_dump( get_all_translations( 'My string here' ) );
var_dump( get_all_translations( 'My string here', ['nl', 'fr'] ) );
但它不起作用,我无法找出原因...我希望这有帮助。
使用 WPML,我已经将一个字符串翻译成 4 种语言:en、nl、fr 和 de。
默认情况下,我可以使用 <?php _e('my string here','text_domain'); ?>
,当我在该域中时,它将 return 准确翻译的文本。
如何将所有翻译的文本集中在一个地方。所以如果我在网站的英文版上,但我想获得我的字符串在 nl、fr、de 和 en 中的翻译内容。
请问这怎么可能?
您可以临时更改当前语言以检索翻译后的字符串。类似于:
// Backup the current language
$current_lang = $sitepress->get_current_language(); // Say it's "en"
// Switch to another language. E.g. $desired_lang = "nl";
$sitepress->switch_lang( $desired_lang );
// Get your translated string...
_e( 'My string here', 'text_domain' );
// Back to the original language to not interfere
$sitepress->switch_lang( $current_lang );
我已经在页面模板(比如 index.php
)上对此进行了测试并且它有效...然后我尝试构建一个函数来完成这项工作。类似于:
// Put this in your functions.php
function get_all_translations( $string, $languages ) {
global $sitepress;
if ( empty( $languages ) ) {
$languages = array_keys(
icl_get_languages( 'skip_missing=0&orderby=code&order=asc' )
);
}
$current_lang = $sitepress->get_current_language();
$translations = [];
foreach ( $languages as $lang ) {
$sitepress->switch_lang( $lang, true );
$translations[$lang] = __( $string, 'text_domain' );
}
$sitepress->switch_lang( $current_lang );
return $translations;
}
并且:
// This on index.php:
var_dump( get_all_translations( 'My string here' ) );
var_dump( get_all_translations( 'My string here', ['nl', 'fr'] ) );
但它不起作用,我无法找出原因...我希望这有帮助。