wake-up-neo.net

Polylang: Wie werden benutzerdefinierte Zeichenfolgen übersetzt?

Mein Problem : Ich übersetze meine Website mit Polylang, aber es fällt mir schwer, benutzerdefinierte Zeichenfolgen zu übersetzen. Die Zeichenfolgen werden im Menü "Strings translation" im Dashboard WP nicht angezeigt.

Wichtig: Ich weiß nicht viel über PHP also die pll_register_string-Funktion ist sehr verwirrend für mich.

Zitiert aus dem Polylang-Dokument:

https://polylang.wordpress.com/documentation/documentation-for-developers/functions-reference/

pll_register_string

Ermöglicht Plug-ins das Hinzufügen eigener Zeichenfolgen im Bereich "Zeichenfolgenübersetzung". Die Funktion muss auf der Admin-Seite aufgerufen werden (die Datei functions.php ist für Themes in Ordnung). Es ist möglich, leere Zeichenfolgen zu registrieren (z. B. wenn sie aus Optionen stammen), sie werden jedoch nicht in der Listentabelle angezeigt.

Verwendung:

pll_register_string ($ name, $ string, $ group, $ multiline); '$ name' => (Erforderlich) Name, der zur Vereinfachung der Sortierung angegeben wird (Beispiel: 'myplugin') '$ string' => (Erforderlich) die Zeichenfolge, um '$ group' zu übersetzen => (Optional) die Gruppe, in der sich die Zeichenfolge befindet registriert, standardmäßig 'polylang' '$ multiline' => (optional) Wenn diese Option auf true gesetzt ist, ist das Übersetzungstextfeld mehrzeilig, standardmäßig false

pll __

übersetzt einen zuvor mit pll_register_string registrierten String

pll __ ($ string); Der eindeutige Parameter ist erforderlich:

'$ String' => Der zu übersetzende String gibt den übersetzten String zurück.

pll_e

Gibt eine übersetzte Zeichenfolge wieder, die zuvor mit pll_register_string registriert wurde.

pll_e ($ string); Der eindeutige Parameter ist erforderlich:

‘$ String’ => der zu übersetzende String

Freundliche Grüße

6
MIkeMo

Sie müssen zuerst alle diese Zeichenfolgen für die Übersetzung registrieren.

Zum Beispiel geben Sie "Hallo Welt" in einer Vorlagendatei wie dieser wieder:

<?php pll_e('Hello world'); ?>

Um die Zeichenfolge in der "Zeichenfolgenübersetzung" anzuzeigen, fügen Sie in Ihrem functions.php:

add_action('init', function() {
  pll_register_string('mytheme-hello', 'Hello world');
});

Fügen Sie alle benutzerdefinierten Zeichenfolgen hinzu, die Sie in diese Funktion übersetzen möchten.

24
drazewski

Wie Polylang docs sagt, ist es gut, zuerst die Polylang-Funktionen auf Vorhandensein zu überprüfen - damit die Site beim Update des Polylang-Plugins nicht beschädigt wird -, weil zuerst alte Dateien entfernt werden.

Also schlage ich diesen Ansatz vor: In functions.php Für theme of in der Datei Ihres Plugins können Sie Wrapper für benötigte Polylang-Funktionen mit Fallbacks erstellen, wenn polylang entfernt oder aktualisiert wurde WP will nicht mit undefiniertem Funktionsfehler abstürzen.

/**
 * Outputs localized string if polylang exists or  output's not translated one as a fallback
 *
 * @param $string
 *
 * @return  void
 */
function pl_e( $string = '' ) {
    if ( function_exists( 'pll_e' ) ) {
        pll_e( $string );
    } else {
        echo $string;
    }
}

/**
 * Returns translated string if polylang exists or  output's not translated one as a fallback
 *
 * @param $string
 *
 * @return string
 */
function pl__( $string = '' ) {
    if ( function_exists( 'pll__' ) ) {
        return pll__( $string );
    }

    return $string;
}

// these function prefixes can be either you are comfortable with.

ANMERKUNG Wir haben Funktionen mit einfachem l in pl__ Und pl_e Erstellt. Die ursprünglichen Polylang-Funktionen lauten pll__ Und pll_e.

Diese werden in Ihrem Thema verwendet, um übersetzte Zeichenfolgen auszugeben oder zurückzugeben.

Und wie bereits erwähnt, müssen wir diese Zeichenfolgen registrieren, damit Polylang weiß, dass sie übersetzt werden müssen.

Wenn Sie mit Thema arbeiten, ist es wahrscheinlich gut, sie in after_setup_theme Wie folgt zu initialisieren:

function your_prefix_after_setup_theme() {

   // register our translatable strings - again first check if function exists.

    if ( function_exists( 'pll_register_string' ) ) {

        pll_register_string( 'ToggleNavigation', 'Toggle navigation', 'YourThemeName', false );

        pll_register_string( 'ToggleSearch', 'Toggle Search', 'YourThemeName', false );

        pll_register_string('404Message', 'It looks like nothing was found. Try getting back to the <a href="%s">home page</a>.', 'YourThemeName', true);

    }
}
 add_action( 'after_setup_theme', 'your_prefix_after_setup_theme' );
4
Mikhail.root