2017-04-07 2 views
0

Mit WPML habe ich eine Zeichenfolge in 4 Sprachen übersetzt sagen: en, nl, fr und de.WPML erhalten übersetzten Inhalt einer Zeichenfolge aus allen Sprachen, wenn verfügbar

Standardmäßig kann ich <?php _e('my string here','text_domain'); ?> verwenden und es wird den exakt übersetzten Text zurückgeben, wenn ich in dieser Domäne bin.

Wie bekomme ich alle übersetzten Texte an einem Ort. Also, wenn ich auf der englischen Version der Website bin, möchte ich aber den übersetzten Inhalt für meine Zeichenfolge in nl, fr, de und en bekommen.

Darf ich wissen, wie ist das möglich?

Antwort

1

Sie könnten die aktuelle Sprache vorübergehend ändern, um die übersetzte Zeichenfolge abzurufen. Etwas wie:

// 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); 

ich dies auf einer Seitenvorlage getestet haben (sagen wir index.php) und es funktioniert ... Dann habe ich versucht, eine Funktion zu bauen, den Job zu tun. Etwas wie:

// 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; 
} 

Und:

// This on index.php: 
var_dump(get_all_translations('My string here')); 
var_dump(get_all_translations('My string here', ['nl', 'fr'])); 

Aber es nicht funktioniert und ich kann den Grund nicht herausfinden ... Ich hoffe, das hilft sowieso.

+0

Danke. Das hat geholfen. Ich habe gerade die Sprache in 3 anderen Sprachen gewechselt, die Strings in Variablen gespeichert und diese benutzt. –

Verwandte Themen