Anwendung des Multisite Language Switcher

Eine altgediente Seite wie diese hier soll nun mehrsprachig werden. Die Voraussetzung dafür habe ich gelegt, indem ich sie zur Wurzeldomain einer WPMU-Installation gemacht habe, s. http://internetdienste-berlin.de/wordpress-von-der-single-site-zur-multi-site/. Nun kann man eigentlich auf die Beschreibungen von Denis Plötner zurückgreifen und sein polyglottes System umsetzen. Aber die Betonung liegt auf altgedient, es liegen also schon eine Unmasse Texte und Galerien mit Beschreibungen in der Primärsprache, also Deutsch, vor und MSLS bietet für diese Situation, wenn ich es richtig sehe, keine Unterstützung. Man hat praktisch ein volles Primärsystem und eine leere Seite für die Übersetzung.

Meine Vorgehensweise war nun folgende. Ich habe auf der MySQL-Ebene, also in PHPmyAdmin die Primärtabellen wp_1_posts, wp_1_postmeta nach wp_2_posts und wp_2_postmeta kopiert. Beim Kopieren, empfiehlt es sich den Haken bei Drop Table zu setzen, denn die Zieltabellen sind bereits angelegt und können nicht überschrieben werden. Durch diese Kopie erhalten alle Posts die gleiche ID wie im Original und somit bleibt die Beziehung zwischen Post und Attachment erhalten. Die Bilder können nun in der anderen Sprache beschriftet werden, da die Bildbeschreibungen (Attachments) ja in Kopie vorliegen, während die Bilder selbst nur an einer Stelle bleiben, müssen also nicht noch einmal hochgeladen werden.

Es empfiehlt sich außerdem, die Tabelle, die für die Kategorien zuständig sind, ebenfalls zu kopieren, damit ist die Kategorienzuordnung bereits realisiert, aber natürlich nicht die Übersetzung. Diese führt man dann als Korrektur der Ausgangssprache durch.

Wenn nun auch die Artikel in der Übersetzungsseite die gleichen IDs haben wie die Ursprungsseite – in unterschiedlichen Tabellen -, ist damit natürlich noch kein Zusammenhang zwischen den korrespondierenden Artikeln hergestellt. Ich hatte ursprünglich gedacht, auch dies mit einer SQL-Operation zu erledigen, aber dies war doch etwas unhandlich. Die Zusammenhänge werden in der wp_options in serialisierten Einträgen hergestellt. Ich gehe deshalb den von MSLS vorgegebenen händischen Weg. Mit einer einfachen SQL-Operation ergänze ich aber die nicht-übersetzten Artikel mit einem entsprechenden Hinweis:

 update wp_2_posts set
`post_content` = CONCAT('<p class="notrans">Sorry, not yet translated!</p>',
               post_content);

Die Klassenangabe ermöglicht dann das Statement angemessen zu formatieren oder auszublenden. Für die Übersetzung steht mir dann im Editor immer der Originaltext zur Verfügung. Aus Bequemlichkeit und weil mein Englisch noch entwicklungsfähig ist, benutze ich dann einen automatischen Übersetzer (den Prompt Translator), überschreibe den Sorry-Text mit der erzeugten Übersetzung und korrigiere sie dann durch! Das ist unbedingt notwendig, selbst wenn Euer Englisch noch schlechter ist als meins, ist es immer noch besser als das gelieferte. Wer gar kein Englisch kann, sollte allerdings ganz darauf verzichten, es sei denn die deutschen Texte sind sehr sehr einfach geschrieben.

Nun kann es sein, dass außerdem einige Plugins eine eigene Datenverwaltung in Form von Tabellen haben, diese müssten ebenfalls ensprechend kopiert und dann die Inhalte übersetzt werden.

Gegebenenfalls muss man nun noch die Widgets nachtragen und die Kopfbilder für die übersetzte Seite noch einmal hochladen.

Eine besondere Schwierigkeit ergibt sich noch, wenn man als Blogtitel ein Grafik verwendet hat, die auch übersetzt werden muss/sollte. Hier hat man in der header.php beide Grafiken vorzusehen und schaltet sie dann je nach Sprachumgebung ein oder aus. Hier der Code für das Theme Twentyten.

In header.php ist  die ensprechende Stelle folgendermaßen zu überschreiben, natürlich mit den eigenen Dateinamen für die Bilder.

  
<<?php echo $heading_tag; ?> id="site-title">
     <span>
       <a href="<?php echo home_url( '/' ); ?>"
        title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>"
        rel="home">
        <img class="en schrift" src=<?php bloginfo( 'template_url' ); ?>
           /images/webkoch-en.png
          title="The Web Cook" alt="The Web Cook" />
         <img class="de schrift" src=<?php bloginfo( 'template_url' ); ?>
           /images/webkoch-de.png
          title="Der Web Koch" alt="Der Web Koch" />
        </a>
       </span>
    </<?php echo $heading_tag; ?>>

In style.css fügt man dann diese Statements an:

html body  img.schrift{display:none;}
*[lang |="en"] img.en {display:block;}
*[lang |="de"] img.de {display:block;}

So, nun hoffe ich, dass ich nichts Wichtiges vergessen habe. Die Gefahr besteht natürlich, dass ich Möglichkeiten von MSLS übersehen habe und die eine oder andere Arbeit vielleicht überflüssig ist. Es wäre schön, einen entprechenden Hinweis zu bekommen.