it-swarm.com.de

Trick ein Plugin (WP-Mitglieder), um zu glauben, dass sich die Blogsprache für eine einzelne Seite geändert hat

Ich versuche zu vermeiden, dass ein ausgewachsenes mehrsprachiges Plugin auf meiner Site installiert wird, und ich bin fast da.

Nur eine Sache, ich muss kontrollieren, ob dieses Plugin - WP-Mitglieder - seitenweise übersetzt werden oder nicht.

Die Standardsprache ist Norwegisch und alle Seiten, die Kinder von/en/sind, werden automatisch auf Englisch gesetzt (mit dieser Methode ). Das Plugin verwendet .po/.mo-Dateien, aber das Ändern des HTML-Codes bewirkt nicht, dass das Plugin seine Sprache ändert.

Kann man das Plugin irgendwie täuschen, dass das Blog in einer anderen Sprache ist?

1
Garland Briggs

Mehr oder weniger. Jedes lokalisierte Plugin wie WP-Members wird von der "Ländereinstellung" ausgeführt, auf die WordPress eingestellt ist. Dieser Wert kann mit dem Filter locale für WP als Ganzes gefiltert werden. Es kann aber auch mit plugin_locale nach Plugins gefiltert werden

Siehe: https://developer.wordpress.org/reference/hooks/plugin_locale/

plugin_locale spezifisch für die Textdomäne des Plugins * verwenden (in diesem Fall 'wp-members')

add_filter( 'plugin_locale', 'my_plugin_locale_filter', 10, 2 );
function my_plugin_locale_filter( $locale, $domain ) {

    // If the text domain is 'wp-members'
    if ( 'wp-members' == $domain ) {
        /*
         * This logic adapted from the method you referenced at
         * http://beta.beantin.se/wordpress-setting-language-individual-pages/
         * Note that the function get_top_parent_page_id() from that example
         * is used here, and the logic is not adapted to your specific 
         * question (i.e. I assume the default $postLanguage value is
         * Norwegian in your case and you are switching it to English) so 
         * change this to match what you are doing with the other elements
         * being used from that process.
         */
        $postLanguage = "en-GB";
        if (is_page()) {
                $svPageID = get_top_parent_page_id(); // ID of parent page
                if ($svPageID == "565") { // ID of the "på svenska" page
                    $postLanguage = "sv";    
                }
            $locale = $postLanguage;
        }
    }

    // Always return the value being filtered.
    return $locale;
}

* Die Textdomäne für ein Plugin sollte in der Kopfzeile der Hauptdatei des Plugins vermerkt werden. Wenn Sie beispielsweise wp-members.php öffnen und den Plugin-Header betrachten, finden Sie diesen unter der Überschrift "Textdomäne:".

2
butlerblog