Ich musste auch mal eine Seite in 4 Sprachen anlegen. Nachdem diese ganzen Übersetzungsplugins nicht das Wahre waren, habe ich es ganz einfach selbst programmiert.
Erst mal eine Seitenstruktur anlegen, wo die Oberste Seite immer die Sprache war, darunter dann die eigentlichen Seiten. Also
DE
- Home
- News
- Zeugs
- Dings
EN
- Home
- News
- Stuff
- Things
FR
- Maison
- Nouvelles
- Trucs
- Autres Trucs
usw.
DANN war das komplizierteste, immer die korrekte Navi anzuzeigen, also immer gleich in die Unterseite von DE oder EN zu gehen. Das habe ich mit Sessions gelöst.
In der header.php steht z.b. als erstes drin
<?php
session_start();
global $lang_id, $lang_post_id;
$lang = $_GET['lang'];
if(isset($_SESSION['language'])) {
if (($_SESSION['language'] <> $lang) && (!$lang == "")) {
$_SESSION['language'] = $lang;
}
if (!$lang) {
$_SESSION['language'] = $_SESSION['language'];
}
} else {
if (!$lang) {
$lang = "de";
}
$_SESSION['language'] = $lang;
}
// **********************
// Hier werden die Sprachen angesteuert. Da kein Plugin meine Wünsche erfüllen konnte
// habe ich es so gemacht.
// $lang_id ist die SEITEN-ID der Übersichtsseite einer Sprache.
// Alle weiteren Seiten dieser Sprache befinden sich in der
// Hierarchie unterhalb dieser Seite. ID muss man nach dem
// Anlegen rausfinden und hier eintragen
// $lang_post_id ist die KATEGORIE-ID.
// Beiträge werden in Sprach-Kategorien unterteilt.
switch ($_SESSION['language']) {
case "de":
$lang_id = 20;
$lang_post_id=3;
break;
case "en":
$lang_id = 35;
$lang_post_id=4;
break;
case "it":
$lang_id = 42;
$lang_post_id=5;
break;
case "fr":
$lang_id = 41;
$lang_post_id=6;
break;
}
?>
Alles anzeigen
Dann brauche ich bei der Navi nur das hier angeben:
<div id="st_navi">
<div id="menu"><ul><?php wp_list_pages('sort_column=menu_order&title_li=&child_of='.$lang_id); ?></ul></div>
</div>
Das war die Seitensteuerung.
Bei den Posts habe ich dann ebenfalls DE, EN, FR und IT Kategorien angelegt, in der index.php steht drin
<?php
// Homepage darf nur Beiträge aus der gewählten Sprache anzeigen.
if (is_home()) {
query_posts("cat=".$lang_post_id);
}
?>
Funktioniert eigentlich ganz gut. Ach ja, die Sprachänderung geht dann mittels
<div id="st_flags">
<a href="<?php bloginfo('url'); ?>/?lang=de"><img src="<?php bloginfo('template_directory'); ?>/img/flag_de.gif" border="0"></a>
<a href="<?php bloginfo('url'); ?>/?lang=en"><img src="<?php bloginfo('template_directory'); ?>/img/flag_en.gif" border="0"></a>
<a href="<?php bloginfo('url'); ?>/?lang=it"><img src="<?php bloginfo('template_directory'); ?>/img/flag_it.gif" border="0"></a>
<a href="<?php bloginfo('url'); ?>/?lang=fr"><img src="<?php bloginfo('template_directory'); ?>/img/flag_fr.gif" border="0"></a>
</div>