Übergeben einer übersetzten Zeichenfolge durch eine Variable

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

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

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

Zuerst dachte ich, dass ich benutze

$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 setze die 50 Textzeichenfolgen (entsprechend allen auswählbaren Optionen) in eine Po / Mo-Datei, aber wie wir wissen, wird das nicht funktionieren . Gettext übersetzt Variablen nicht.

Wie könnte ich die übersetzte Saite bekommen? Hast du eine Idee? Vielen Dank.

Solutions Collecting From Web of "Übergeben einer übersetzten Zeichenfolge durch eine Variable"

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 setzen, um die Verwendung von Variablen zu vermeiden. Für den Admin erzwingen Sie die Übersetzung ins Spanische:

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

Auf dem Frontend werden die Nachrichten dann auf die normale Weise übersetzt, vorausgesetzt, Sie haben ein System installiert, das bestimmt, welche Sprache die Seite hat. Wenn der Autor ein benutzerdefiniertes Feld für die Sprache festlegt, können Sie den obigen Filter mit einem anderen if , um die Übersetzung zu erzwingen.