Ist es irgendwie möglich mit Wordpress eine 2-sprachige Seite hinzubekommen? Also z.B. Deutsch und Englisch?
2-sprachige Seite mit Wordpress???
-
-
- Gerade eben
- Anzeige
Hallo!
Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.
- ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
- ✔️ Deutsche Server & DSGVO-konform
- ✔️ Persönlicher Support (kein 0815-Ticket-System)
-
Schau dir mal das Plugin Polyglott an.
-
PolyGlot ist ein sehr "komisches" PlugIn.
In den meisten Fällen will man ja die Seite entweder "de" ODER "en" anzeigen, aber doch nicht z.B. "de" mit ggf. "en"-Beiträgen darunter...oder?!
Das ist auch der Grund, wieso ich aktuell versuche nen eigenes PlugIn zu coden, welches diese Aufgabe lösen soll.(je nach Auswahl das gesamte WP in einer Sprache)
Threads dazu:
ThemaAusgabe der Kategorien und Posts ändern
Hi.
BTW @ Arno Simon
http://forum.wordpress-deutschland.org/showpost.php?p=26803&postcount=5
Was genau bewirkt dieses PlugIn? Konnte es nicht eindeutig erkennen - leider.
Zum Thema:
Problem : Adminpanel
Auf der Seite "post.php" (Admin->Schreiben->Beitrag Schreiben) und an anderen Stellen gibt es ja die Auswahl der Kategorien im Rechten Bereich.
Mein Wunsch ist, das man diese Auswahl etwas begrenzt. Und zwar sollen nur die Kategorien (Sub-Kategorien) der "default" Kategorie angezeigt werden.
Wenn also…LJay24. Januar 2006 um 17:16 ThemaCore Function wp_list_pages durch eigene ersetzen
Hi.
Ich möchte mir ein PlugIn schreiben, in dem ich allerdings eine eigene Funktion für die Ausgabe der Pages (normal: wp_list_pages) erstellt habe.
Durch manipulation des Quelltextes nicht sicher realisierbar, daher benötigte ich eine komplette neue Funktion.
Nun möchte ich aber das Plugin anweisen, meine Funktion anstelle der orginalen zu bentuzen.
Leider kommte ich mir remove_function und add_function nicht wirklich weiter.
Ziel ist es, das template nicht auf den Namen der neuen Funktion ändern…LJay24. Januar 2006 um 13:11 ThemaKategorieseite bauen?
mhh, jetzt hab ich so lange gesucht und das erstemal keine antwort in unserm forum gefunden. merkwürdig :-)
darum hier mal meine frage:
wie baue ich ein kategorie template, das auch wirklich nur den Inhalt der gewählten kategorie anzeigt?
eigentlich ganz einfach dachte ich, mmmh vielleicht mach ich auch nur einen denkfehler. also hier mal mein Kategoriebaum- Hauptkategorie 1
- Sub 1 zu Haupt 1
- Sub 2 zu Haupt 1
- Hauptkategorie 2
- .....
gerhardb23. Januar 2006 um 16:26 Sobald ich etwas vorzeigbares habe worauf man aufbauen könnte, werd ich es an gegebener Stelle posten.
- Hauptkategorie 1
-
Zitat von LJay
PolyGlot ist ein sehr "komisches" PlugIn.
In den meisten Fällen will man ja die Seite entweder "de" ODER "en" anzeigen, aber doch nicht z.B. "de" mit ggf. "en"-Beiträgen darunter...Kein Problem damit, wenn man es anders konfiguriert als auf der Demoseite ;)
Bin aber gespannt auf deine Entwicklung.
-
Zitat von Olafb
...wenn man es anders konfiguriert als auf der Demoseite ;)...
Wie konfiguiert man es anders damit es wie funzt?
Hast du nen Beispiel, wo du es anders einsetzt?Zitat von Olafb...Bin aber gespannt auf deine Entwicklung.
ich auch... ich auch... ;)Zumal ich WP Neuling bin und mit dem PHP-Stil so meine Schwierigkeiten habe...
"The Loop" watn dat? -
Hier der aktuelle Stand (unkommentiert)
ml_multilingual.phpPHP
Alles anzeigen<?php /* Plugin Name: Multilanguage WP Plugin URI: http://www.code-in-design.de (deep-link folgt) Description: Make WP to a multilanguage WP. Complete WP can displaed in different languages. Version: 0.3 Author: Jens Lojek Author URI: http://www.code-in-design.de/ */ // Default language for text not enclosed in <lang_xx></lang_xx> $default_lang = 'de'; // Name of cookie - default:'wp_lang_pref'.$cookiehash $lang_pref_cookie = 'wp_lang_pref'.$cookiehash; // Use cruft-free URLs to view other languages? MUST ADD REWRITE RULES: // RewriteRule ^(.*)/xx/?$ /$1?lp_lang_view=xx [QSA] // above should be modified to match your other rewrite rules and added // for each language 'xx' you will be using. $lang_rewrite = TRUE; // Should Language Picker attempt to dynamically change the WP locale // setting based on user's prefered language? Note, for this to work // .mo files must be renamed to match the languages in use on your // blog. For example, de_DE.mo might become de.mo. $lang_change_locale = TRUE; // Initialization stuff $lp_lang_pref = (isset($HTTP_COOKIE_VARS[$lang_pref_cookie])) ? trim($HTTP_COOKIE_VARS[$lang_pref_cookie]) : FALSE; if ($_GET["lp_lang_pref"]) { setcookie($lang_pref_cookie, $_GET["lp_lang_pref"], time() + 30000000, COOKIEPATH); $lp_lang_pref=$_GET["lp_lang_pref"]; } $lp_lang_pref = ($_GET["lp_lang_view"]) ? $_GET["lp_lang_view"] : $lp_lang_pref; if ($lp_lang_pref_not_set = (!$lp_lang_pref)) $lp_lang_pref = $default_lang; if ($lang_change_locale && class_exists('streamreader')){ $locale = $lp_lang_pref; $mofile = ABSPATH . WPINC . "/languages/$locale.mo"; load_default_textdomain(); require(ABSPATH . WPINC . '/locale.php'); } if (!defined('WPLANG')){ define('WPLANG', $lp_lang_pref); } function getcatid_for_lang_pref(){ global $wpdb, $lp_lang_pref; $catid = $wpdb->get_row("SELECT cat_ID " . "FROM $wpdb->categories c " . "WHERE c.cat_name LIKE '" . $lp_lang_pref . "'"); return $catid->cat_ID; } $ml_main_catid = getcatid_for_lang_pref(); // lists all main cats (category_parent=0) because on use ml this are the language categories as flag with language-switcher function mp_flags(){ global $wpdb; $thelist = '<ul>'; $flags = $wpdb->get_results("SELECT category_nicename FROM $wpdb->categories WHERE category_parent= 0"); foreach($flags as $flag){ $thelist .= '<li><a href="?lp_lang_pref=' . $flag->category_nicename . '" title="' . $flag->category_nicename . '"><img src="/wp-content/plugins/ml_flags/' . $flag->category_nicename . '.png" border="0" alt="' . $flag->category_nicename . '" title="' . $flag->category_nicename . '"></a></li>'; } $thelist .= '</ul>'; return $thelist; } // a bit modified core get_pages() function // now we only show pages which in main categorie we define by default language (getcatid_for_lang_pref) function &ml_get_pages($args = '') { global $wpdb; parse_str($args, $r); if (!isset($r['child_of'])) $r['child_of'] = 0; if (!isset($r['sort_column'])) $r['sort_column'] = 'post_title'; if (!isset($r['sort_order'])) $r['sort_order'] = 'ASC'; if (!isset($r['catid'])) $r['catid'] = getcatid_for_lang_pref(); $exclusions = ''; if (!empty($r['exclude'])) { $expages = preg_split('/[\s,]+/',$r['exclude']); if (count($expages)) { foreach ($expages as $expage) { $exclusions .= ' AND ID <> ' . intval($expage) . ' '; } } } $pages = $wpdb->get_results("SELECT * " . "FROM $wpdb->posts p " . "LEFT JOIN $wpdb->post2cat p2c ON (p2c.post_id = p.ID) " . "WHERE p.post_status = 'static' " . "AND p2c.category_id = '" . $r['catid'] . "'" . "$exclusions " . "ORDER BY " . $r['sort_column'] . " " . $r['sort_order']); if ( empty($pages) ) return array(); // Update cache. update_page_cache($pages); if ($r['child_of']) $pages = & get_page_children($r['child_of'], $pages); return $pages; } // simple modification of core function wp_list_pages() // now we have an option "child_of" with functionality like child_of on wp_list_cats() function ml_wp_list_pages($args = ''){ parse_str($args, $r); if ( !isset($r['depth']) ) $r['depth'] = 0; if ( !isset($r['show_date']) ) $r['show_date'] = ''; if ( !isset($r['child_of']) ) $r['child_of'] = 0; if ( !isset($r['title_li']) ) $r['title_li'] = __('Pages'); if ( !isset($r['echo']) ) $r['echo'] = 1; $output = ''; // Query pages. $pages = & ml_get_pages($args); if ( $pages ) : if ( $r['title_li'] ) $output .= '<li class="pagenav">' . $r['title_li'] . '<ul>'; // Now loop over all pages that were selected $page_tree = Array(); foreach($pages as $page) { // set the title for the current page $page_tree[$page->ID]['title'] = $page->post_title; $page_tree[$page->ID]['name'] = $page->post_name; if (! empty($r['show_date'])) { if ('modified' == $r['show_date']) $page_tree[$page->ID]['ts'] = $page->post_modified; else $page_tree[$page->ID]['ts'] = $page->post_date; } if ( $page->post_parent != $page->ID) $page_tree[$page->post_parent]['children'][] = $page->ID; } $output .= _page_level_out($r['child_of'],$page_tree, $r, 0, false); if ( $r['title_li'] ) $output .= '</ul></li>'; endif; $output = apply_filters('ml_wp_list_pages', $output); if ( $r['echo'] ) echo $output; else return $output; } // get the top cat_ID from a post // the cat_ID from the first main cat of this post function ml_main_catid_from_post(){ global $wpdb; $cat = get_the_category(); $cat = $cat[0]; while($cat->category_parent != 0){ $cat = $wpdb->get_row("SELECT cat_ID, category_parent FROM $wpdb->categories WHERE cat_ID = $cat->category_parent"); } return $cat->cat_ID; } function as_posts_where_filter4cats ($where) { if( !(strpos($where, ' OR category_id') === false) ){ $where = preg_replace('/(OR category_id = )([\d]*)/', '', $where); } return $where; } add_filter('posts_where','as_posts_where_filter4cats'); ?> -
bzgl. PM:
Aber was genau hast du da realisiert. Ich sehe einige (eher wenige) Posts sind wahlweise in de und en zu finden.
Das Menü ist aber einheitlich!? und wie siehts im Adminbereich aus?Bei PolyGlot musste man doch jede Sprache durch nen TAG im Post selbst einfügen?! Fazit: 1Post mit allen Sprachen!
Mein Problem dabei:
1. Bei sagen wir 6 Sprachen, wäre der Post etwas lang (auch schon bei 3)
2. Man muss peinlich genau auf die TAGs im Post achten. Bei längeren Posts gibts oft Tipfehler.
3. Nehmen wir an es gibt mehrere Admins die jeweils ihre Sprache betreuen - dann müssten alle in ein und demselben Post rumwuschteln.
4. Was, wenn ich mal einen deutschen Post oder ne Page hab, die es in englisch garnicht geben soll/brauch?
5. Stell dir das ganze mal als umfangreiches CMS mit FAQs und vielen Beiträgen vor - das endet schon nach kurzer Zeit im Kaos.findest du nich auch?
-
Zitat von LJay
Aber was genau hast du da realisiert. Ich sehe einige (eher wenige) Posts sind wahlweise in de und en zu finden.
Das Menü ist aber einheitlich!? und wie siehts im Adminbereich aus?
Alle Seiten sind in deutsch und englisch vorhanden. Menü usw. hab ich noch nicht berücksichtigt weil mir zu kompliziert. Admin ist nach setzen des Cookies komplett englisch.In allem anderem gebe ich dir Recht, deshalb bin ich ja an deiner Lösung interessiert. Wobei ich als Alleinredakteur mit 2 Sprachen vorerst damit keine Probleme habe. Und beim übersetzen (Frau) macht es sich sehr gut wenn sie die de-Texte gleichzeiteig sieht.
Zusatzfrage, bei dir steht auch was von $lang_rewrite = TRUE; geht das bei dir? Ich hab das mit Polyglot nicht hinbekommen. Hättest du da noch einen Tipp für mich?
-
Zitat von Olafb
Zusatzfrage, bei dir steht auch was von $lang_rewrite = TRUE; geht das bei dir? Ich hab das mit Polyglot nicht hinbekommen. Hättest du da noch einen Tipp für mich?
Das ist nen Code-Schnipsel vom language picker, wobei genau diese Zeile aktuell noch keinerlei Auswirkung hat.
Damit muss ich mich aber später auch noch befassen, denn die PermLink Struktur soll ja auch angepasst werden, damit es alles funzt.Kann ich dir daher aktuell nichts zu sagen.
-
PlugIn Download-Link
Hier werd ich vorerst immer die aktuelle Version bereitstellen!
Achtung:
Verwendung auf eigene Gefahr. PlugIn noch im Entwicklungsstadium (pre alpha)!
PlugIn steht unter der GPL.http://proto.code-in-design.de/downloads/ml_multilingual.phps
(Please rename "ml_multilingual.phps" to "ml_multilingual.php") -
Danke!!! Polyglot ist für meinen Zweck perfekt!
-
Hier die neue Version 0.5
http://proto.code-in-design.de/downloads/ml_multilingual.phpsIm Adminbereich (posts) werden nun nur noch die Kategorien/Subcats. der vorausgewählten angezeigt.
Da hab ich allerdings nen Schönheitsfehler den ich auch nach 1h rumprobieren und lesen nicht beheben konnte.
Über den Kategorien wird normalerweise noch die Überschrift "Kategorien" angezeigt. Das bekomm ich immo noch nicht wieder hinzugefügt, da ich aktuell nicht in der Lage bin, mit JS auf den <legend> TAG innerhalb von "<fieldset id="categorydiv">" zuzugreifen.BTW: Die Kategorieauswahl im Adminbereich wird durch JS ersetzt. Denn dann gehts auch ohne Hack einer WP Datei.
Wer jetzt schon Verbesserungsvorschläge hat, immer her damit!
Freu: Bisher komplett ohne Hack ausgekommen.
This PlugIn is 100% Hack free -
Hier die neue Version 0.6
http://proto.code-in-design.de/downloads/ml_multilingual.phpsAktuell beherrscht es u.a. folgende Funktionen:
- Anzeige/Auswahl der verfügbaren Sprachen mit Flaggen.
- Default Sprache wird im Cookie gespeichert
- Lokalisierung von WP auf die ausgewählte Sprache (liest .mo files ein)
- ermitteln der cat_ID für die ausgewählte Sprache (Kat. muss eine Hauptkat. sein- ohne parent)
- modifiziertes wp_list_pages um Ausgabe auf Pages der Hauptkat. und deren Subkats. zu beschränken
- ermitteln der Hauptkat. cat_ID für einen gewählten Post
- Beschränkung der posts Ausgabe auf posts der gewählten Hauptkat und deren Subkats.
- modifizierte Ausgabe der Kategorieauswahl im Adminbereich (Beschränkung auf 1 Hauptkat.)
- Kategorieauswahl auch bei pages möglich
- Sprachauswahl im Adminbereich kann durch Userlevel eingeschränkt werdenToDo:
- Bugfix bei Ausgabe der posts auf Userseite:
Es werden zwar nur posts aus unterkategorien der Mainkat ausgegeben, aber keine aus der obersten direkt.
- Finetuning der Anzeige im Adminbereich fü Auswahl der Kategorien (siehe dazu auch:Themaper JS ein fieldset einfügen
Hi.
Kennt sich jemand etwas besser mit JavaScript/DOM aus?
Ich habe eine Seite mit sagen wir 4 fieldsets die jeweils eine eindeutige id haben
(Quelltext, 1 Zeile)
Nun kann ich nur am Ende der Seite neuen Quellcode einfügen und möchte ein weiteres fieldset zwischen dem 2. und 3. einfügen.
(per JavaScript)
Bisher habe ich mich soweit belesen, das man via getElementsByID() eins der vorhanden fieldsets auslesen kann und "Kind"-Objekte hinzufügen könnte.
Ich suche aber eine Möglichkeit sozusagen dem…LJay25. Januar 2006 um 16:13 )
- auslesen der preferierten Sprache aus dem Browser des Users um Vorauswahl zu realisieren
- Sprachauswahl im Frontend unabhängig vom Adminbereich gestalten. Sonst kann Admin im Frontend die Sprache switchen und somit auch im adminpanel auf die posts und pages der sprache zugreifen. (zusätzliches cookie?!oder userlevel beschränkung auf alles funktionen im adminbereich ausweiten, aber wie ausschliessen wenn admin im frontend wie normaler user ist?)
- Prüfroutinen auf Vorhandensein von Kategorien die einer Sprache zugeordnet werden können
- Quellcode-Optimierung
- Dokumentierung
- Beispielumgebung aufsetzen
- ausgiebig testen -
Aktuell wird davon ausgegangen das die Unterteilung des Contents mittels Kategorien dargestellt wird.
Beispiel für 3 Sprachen WP:
1. deutsch "de"
2. englisch "en"
3. französisch "fr"Anordnung der Kategorien muss demzufolge wie folgt aussehen:
cat_ID=1 -> "de" (parent=0)
[indent]cat_ID=4 -> "subcat1 von de" (parent=1)[/indent]
[indent]cat_ID=5 -> "subcat2 von de" (parent=1)[/indent]
[indent][indent]cat_ID=6 -> "subcat1 von subcat2 von de" (parent=5)[/indent][/indent]
[indent][indent]...[/indent][/indent]
[indent]...[/indent]
cat_ID=2 -> "en" (parent=0)
[indent]cat_ID=7 -> "subcat1 von en" (parent=2)[/indent]
[indent]...[/indent]
cat_ID=3 -> "fr" (parent=0)
[indent]cat_ID=8 -> "subcat1 von fr" (parent=3)[/indent]
[indent]cat_ID=9 -> "subcat2 von fr" (parent=3)[/indent]
[indent]...[/indent]In /wp-includes/languages/ müssen demnach eine de.mo, en.mo und fr.mo vorhanden sein um auch das WP selbst zu lokalisieren.(standard mo-files umbenennen reicht aus)
Jedes Post und jede Page kann nun immer einer Kategorie in der jeweiligen "Sprache" zugeordnet werden.
-
Liest sich sehr gut, Glückwunsch. Wird viele Wünsche erfüllen!!!
-
leider werde ich auf Grund eines BUGs im WP die aktuelle Version nicht weiter entwickeln können.
Allerdings für WP2 werde ich es umbauen und fertigstellen. (BugFix ist nur für WP2 vorhanden) -
Bugfix:
- Bugfix bei Ausgabe der posts auf Userseite:
Es werden zwar nur posts aus unterkategorien der Mainkat ausgegeben, aber keine aus der obersten direkt.wird nun korrekt mit ausgelesen und angezeigt.
----
Kategorien einer Sprache mit gleichem nicename wie in einer anderen Sprache, werden nun korrekt angezeigt. Vorher konnte man nicht in die 2. switchen.
Leider nur Workaround um den Bug von WP zu umgehen.Musste nun aber doch nicht gleich desshalb auf WP2 ausweichen, zumal es dort auch nur mit offiziellem BugFix gehen würde...
-
ToDo:
Adminbereich: beim schreiben/anlegen einer Pages wird aktuell die Kategorieauswahl nicht berücksichtigt beim speichern.
Vermutlich, weil die Auswahl am Ende (ausserhalb des forms) des quelltext steht und somit nicht im form-scope übergeben wird...
ToDo:
Auf Sprache beschränkte Anzeige der pages bei Verwaltung->Pages -
...shit... grosses Prob...
Beim anlegen oder ändern von pages hab ich nun zwar eine kategorieauswahl, allerdings speichert er leider keine ausgewählten Kategorien ab.
Vielmehr setzt er die Kategorie immer auf die default-kat. :(muss irgendwie das form-field der Kat-Auswahl mit übergeben könne?!
Ideen?
-
Zitat von LJay
Beim anlegen oder ändern von pages hab ich nun zwar eine kategorieauswahl, allerdings speichert er leider keine ausgewählten Kategorien ab.
Vielmehr setzt er die Kategorie immer auf die default-kat. :(Problem gelöst: (siehe dazu:
Themaper JS ein fieldset einfügen
Hi.
Kennt sich jemand etwas besser mit JavaScript/DOM aus?
Ich habe eine Seite mit sagen wir 4 fieldsets die jeweils eine eindeutige id haben
(Quelltext, 1 Zeile)
Nun kann ich nur am Ende der Seite neuen Quellcode einfügen und möchte ein weiteres fieldset zwischen dem 2. und 3. einfügen.
(per JavaScript)
Bisher habe ich mich soweit belesen, das man via getElementsByID() eins der vorhanden fieldsets auslesen kann und "Kind"-Objekte hinzufügen könnte.
Ich suche aber eine Möglichkeit sozusagen dem…LJay25. Januar 2006 um 16:13 )
-
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!