toscho.design

WordPress: Sprache der Ausgabe einstellen

Meine Sprache

Ich bin kein viel versprechendes Talent. Aber ein vielversprechendes … nun, lassen wir das. Will sagen: Mich hat die Reform der deutschen Rechtschreibung im Jahre 1996 nicht überzeugt. Die Reformen der Reform ebensowenig. Deshalb halte ich mich heute überwiegend an die klassische Orthographie, die seit dem letzten amtlichen Eingriff 1901 ganz allmählich durch den allgemeinen Sprachgebrauch entwickelt wurde.
Und gerade weil ich den Gedanken einer organischen Entwicklung so mag, halte ich mich nicht immer genau an die Regeln von 1995: Ich übertrete sie, wenn mein Sprachgefühl mir dazu rät.

Im Großen aber muß ich meine Sprache für Maschinen als de-DE-1901 kennzeichnen — der RFC 3066 verlangt es so.

Sprachausgabe in WordPress

In WordPress wird die Sprache des Blogs in der Datei wp-config.php angegeben:

define ('WPLANG', 'de_DE');

Dann holt sich das CMS automagisch die passende Sprachdatei namens de_DE.mo. Deshalb bringt es mir nichts, die präzise Sprache in der wp-config.php zu setzen: Eine Datei de_DE_1901.mo existiert ja leider nicht, und ich möchte auch nicht nach jeder Aktualisierung den Dateinamen hinterherrennen müssen.

Macht nichts.

In der Ausgabe für den Leser, im Frontend also, wird die Sprache nur an zwei Stellen angegeben: Im lang-Attribut des Elementes html:

<html lang="de-DE-1901">

Und im Feed, beispielsweise in der Datei /wp-includes/feed-atom.php:

xml:lang="<?php echo get_option('rss_language'); ?>"

Im Theme kann man diese Angabe entweder konkret in den Code schreiben oder die Funktion language_attributes() verwenden:

<html <?php language_attributes(); ?>>

Diese Funktion gibt die Schreibrichtung und die Sprache aus. Da ltr der Standardwert für das Attribut dir ist, kann das hier weggefiltert werden.

Die beiden Filter, die wir ansprechen müssen, lauten 'language_attributes' und 'pre_option_rss_language'.

Code zum Anpassen

Ich habe mir dafür eine kleine Klasse geschrieben, die ich in der functions.php des Themes einfach per require aufrufe:

<?php
/**
 * Adjust the public visible language declarations.
 *
 * @author "Thomas Scholz" http://toscho.de
 * @version 1.0
 */
class Toscho_Language_Filter
{
    /**
     * @var string
     */
    public static $lang = 'de';

    /**
     * Pseudo constructor.
     *
     * @param  string $lang The language according to …
     * @link   http://www.evertype.com/standards/iso639/iana-lang-assignments.html
     * @return void
     */
    public static function setup($lang = 'de-DE-1901')
    {
        self::$lang = $lang;

        add_filter(
            'language_attributes'
        ,   array ( __CLASS__, 'html' )
        );
        add_filter(
            'pre_option_rss_language'
        ,   array ( __CLASS__, 'get_lang' )
        );
    }

    /**
     * Returns the language string.
     * @return string
     */
    public static function get_lang()
    {
        return self::$lang;
    }

    /**
     * Output for language_attributes().
     * We drop the 'dir' attribute.
     *
     * @return string
     */
    public static function html()
    {
        return 'lang="' . self::$lang . '"';
    }

}
// Adjust this to your needs.
Toscho_Language_Filter::setup('de-DE-1901');

Wer mag, kann die Funktion setup() auch mit einer eigenen Kreation aufrufen. Dann muß man ein -x- davorsetzen, wie Ian Hickson das in den Spezifikationen zu HTML5 macht: lang="en-US-x-hixie".
Über den Nutzen möchte ich lieber nicht diskutieren.

Mehr davon

9 Kommentare

  1. Thorsten Rothschild am 01.09.2010 · 16:23

    Bringt das wirklich was wenn man das umstellt, ich mein in ordnung ich habe auch einen etwas anderen sprachstil aber tut das wirklich not? :)

  2. Thomas Scholz am 01.09.2010 · 16:42

    @Thorsten Rothschild: Ganz allgemein schadet es nicht. Wer aber …

    • eine automatische Rechtschreibkorrektur im Browser installiert hat
    • und das passende Wörterbuch besitzt
    • und einen Browser verwendet, der die Information an die Automatik durchreicht,
    • und einen Kommentar schreibt …

    … der wird zu klassischem Deutsch ermutigt.

    Also gut, es ist eine mentale Selbstbefleckung, mehr nicht. ☺

  3. Dirk am 04.10.2010 · 05:43

    Die einen sagen „klassisches Deutsch“, die anderen sagen „Rechtschreibfehler“.

  4. myblogtrainer am 04.11.2010 · 15:34

    Ich denke, jeder soll es so halten wie er will mit der Rechtschreibreform. Wir sind ja hier nicht mehr in der Schule und verstehen können es ja alle. Ich bin mittlerweile zur neuen Schreibweise übergegangen und wette auch da passieren noch Fehler ;-)
    Vielleicht sollte man sich manchmal an der Zielgruppe ausrichten.

    Ansonsten finde ich diesen Artikel gut. Ich verstehe alles. Ich frage mich halt, ob es für WordPress-Anfänger nicht zu abschreckend ist diesen ganzen Code zu sehen. Ich empfehle auf meiner Seite dann immer schon übersetzte Themes, die von vornherein funktionieren bzw. wo das hier schon alles eingebaut ist.

  5. Thomas Scholz am 04.11.2010 · 16:06

    @myblogtrainer:

    Ich frage mich halt, ob es für WordPress-Anfänger nicht zu abschreckend ist diesen ganzen Code zu sehen.

    Juckt mich nicht. Wer das nicht versteht, wagt den Einbau sicher nicht. Wenn doch … passiert nichts Schlimmes.

  6. Wiebke am 05.11.2010 · 12:09

    Hey :) vielen Dank für Deinen tollen Tipp, hat mir wirklich sehr weiter geholfen ...

  7. Frank am 16.11.2010 · 11:42

    Hi toller Beitrag. Ich als rooky kämpfe gerade damit, wo ich den tag am "Besten" ins theme integriere, dass er auch von den Spydern korrekt gelesen wird!
    THX

    Frank

  8. Frank am 16.11.2010 · 11:44

    Hi toller Beitrag. Ich als Rooky kämpfe gerade damit, wo ich den Tag am "Besten" ins theme integriere, dass er auch von den Spydern korrekt gelesen wird!
    THX

    Frank
    EHH Sorry ich meine den language tag

  9. Julia am 14.12.2010 · 15:26

    Hey,
    also ich bin auf jeden Fall auch noch ein Freund (eine Freundin) der alten Rechtschreibung von daher vielen Dank ;)

    lg