it-swarm.com.de

Übersetzte Zeichenfolge durch eine Variable erhalten

Ich übersetze eine Website in verschiedene Sprachen und habe folgendes Problem:

Über das Backend kann der Benutzer über ein Dropdown-Menü einen Wert (eine Textzeichenfolge) aus einer Liste von 50 Optionen auswählen. Diese Dropdown-Liste wird in einem benutzerdefinierten Feld gespeichert (übrigens mit ACF PRO verwaltet).

Wenn ein Benutzer die übersetzte Version der Site besucht, möchte ich die Übersetzung dieser Textzeichenfolge anzeigen.

Zuerst dachte ich das mit

$options_obj = get_field_object('user_options');
$options_value = get_field('user_options');
$options_label = $options_obj['choices'][$options_value];

echo __($options_label, 'my_text_domain');

Und ich habe die 50 Text-Strings-Übersetzung (entsprechend allen auswählbaren Optionen) in eine PO/MO-Datei eingefügt , aber wie wir wissen, funktioniert dies nicht . . Gettext übersetzt keine Variablen.

Wie konnte ich den übersetzten String bekommen? Hast du eine Idee? Vielen Dank.

2
Capiedge

Ich bin mir nicht ganz sicher, ob dies das ist, was Sie wollen, aber wenn die Optionsseite in einer Sprache ist, können Sie einfach den gettext-Aufruf in das benutzerdefinierte Feld selbst einfügen, um die Verwendung von Variablen zu vermeiden. Für den Administrator erzwingen Sie die Übersetzung auf Spanisch:

function wpse227983_force_language ( $locale ) {
    if ( is_admin() ) {
        return 'es_ES';
    }
    return $locale;
}
add_filter( 'locale', 'wpse227983_force_language' );

Im Frontend werden die Nachrichten dann wie gewohnt übersetzt, vorausgesetzt, Sie haben ein System eingerichtet, das die Sprache der Seite festlegt. Wenn der Autor ein benutzerdefiniertes Feld für die Sprache festlegt, können Sie den obigen Filter mit einem anderen ifverwenden, um die Übersetzung zu erzwingen.

1
cjbj