Mehrsprachige website, aber wie?
ingobar
- datenbank
- javascript
- php
Guten Morgen! Ich möchte für ein zweisprachiges Orchester einen Internetseite gestalten. Diese soll es in zwei Varianten geben: deutsch, ungarisch. Wie macht man das am effizientesten?
Folgende Ideen hatte ich schon:
Bei der ersten Variante hätte ich Sorge wegen irgendwelcher injections. Bei der zweiten Varianten würde nichts gehen, wenn jemand JS deaktiviert. Allerdings wollte ich auch gumby als framework für das responsive Design nehmen (--Ergänzung: Das gibt es nicht mehr, jetzt muss ich was neues suchen), dafür brauch ich ja nun auch JS. Die dritte ist vor allem mühsam.
Wie würdet ihr das machen?
Ingo
PS: Im Moment tendiere ich sogar zu einer Kombination aus 2. und 3. Ich würde json nehmen, um die Texte einfacher zu handeln und mit eine festen Struktur arbeiten, damit die Adressen "einfacher" sind. Also z.B. www.blablabla.de/de/inhalt.html und www.blablabla.de/hu/inhalt.html
PPS: Am liebsten wären mir natürlich auch Links zu Sourcecodes.
Hallo
Du hast an dieser Stelle zwei Aufgaben.
zu 1.:
zu 2.:
Tschö, Auge
Danke, dass du so ausführlich geantwortet hast. Das hilft natürlich beim Denken. Im Moment habe folgenen Ansatz: Für jede Sprache gibt es eine json-Datei mit den Texten, die per php eingelesen werden. Das Ganze werde ich dann noch irgendwie mit foundation so aufblasen und gestalten, wie ich es gerne hätte.
Wegen der Sprache werde ich einen Umschalter auf alle Fälle integrieren. „Content Negotiation“ schaue ich mir auch noch an.
Nochmals danke für deine Anregungen,
Ingo
Hallo ingobar,
Wegen der Sprache werde ich einen Umschalter auf alle Fälle integrieren. „Content Negotiation“ schaue ich mir auch noch an.
Zum Beispiel auch beim W3C https://www.w3.org/International/questions/qa-when-lang-neg
Bis demnächst
Matthias
@@Matthias Apsel
Wegen der Sprache werde ich einen Umschalter auf alle Fälle integrieren. „Content Negotiation“ schaue ich mir auch noch an.
Zum Beispiel auch beim W3C https://www.w3.org/International/questions/qa-when-lang-neg
Wobei der Artikel selbst auch ein Beispiel für content negotiation ist. Irgendwer hat den mal ins Deutsche übersetzt. ;-)
LLAP 🖖
Hallo,
warum nutzt Du nicht ein Content Management System, welches die benötigten Mechanismen und vor allem eine Pflegeoberfläche für die mehrsprachigen Inhalte mitbringt? Ich nutze z.B. sehr gern Processwire.
Viele Grüße Basti
warum nutzt Du nicht ein Content Management System
Ich habe mal eine zeitlang mit Wordpress gearbeitet, hatte dann aber wochenlang das Problem, dass ich es nicht dicht bekommen habe. Immer haben irgendwelche Hacker einen Weg durchgefunden. Alle möglichen PlugIns sollten das zwar verhindern, aber ich habe es nicht richtig dichtbekommen. Daher möchte ich lieber wieder was eigenes machen.
Aber danke für den Tipp mit ProcessWire, das kannte ich noch nicht.
@@ingobar
Ich möchte für ein zweisprachiges Orchester einen Internetseite gestalten. Diese soll es in zwei Varianten geben: deutsch, ungarisch. Wie macht man das am effizientesten?
Das Wie wäre die Folgefrage. Zunächst ist das Was zu klären: Was sind die Anforderungen?
Sind die deutschen und ungarischen Seiten Übersetzungen derselben Inhalte?
In dem Fall ist content negotiation ein Muss. (Wurde in diesem Thread ja schon angesprochen.)
Werden die Inhalte einmal erstellt und bleiben (bis auf kleine Korrekturen) statisch? Oder ändern sich die Inhalte ständig? Wenn ja, wer tut das: nur du oder sollen andere Personen auch Inhalte pflegen können?
Im ersten Fall oder wenn nur du Änderungen vornimmst, bist du mit reinen HTML-Seiten bestens bedient. Nur wenn auch andere ohne HTML-Kenntnisse Inhalte pflegen können sollen, brauchst du ein CMS.
Ist gewährleistet, dass zu jedem Zeitpunkt alle Seiten in beiden Sprachen verfügbar sind, oder kann es vorkommen, dass manche Seiten (zumindest zeitweise) nur in einer Sprache vorliegen (bspw. weil die Übersetzung noch auf sich warten lässt)?
Davon hängt u.a. ab, wie Verlinkungen zu setzen sind.
Folgende Ideen hatte ich schon:
1. php+mysql und dann mit get die Sprache übergeben
Das wäre eine Form der CMS-Variante. Würde ich nur machen, wenn ein CMS erforderlich ist.
2. cookie für die Sprache plazieren (oder auf get) und dann irgendwie mit json (und php) und javascript arbeiten.
Bietet sich zusätzlich zu content negotiation an. (Auch das wurde in diesem Thread schon angesprochen.)
3. Eine Seite in Deutsch erstellen und wenn diese fertig ist, einfach eine Kopie machen und übersetzen.
Wenn kein CMS erforderlich ist, würde ich statische HTML-Seiten erstellen. Manchmal ist die einfachste Lösung auch die beste.
Die dritte ist vor allem mühsam.
Inwiefern?
damit die Adressen "einfacher" sind. Also z.B. www.blablabla.de/de/inhalt.html und www.blablabla.de/hu/inhalt.html
Einfacher mit content negotiation hast du es mit Adressen wie example.net/inhalt.de.html
und example.net/inhalt.hu.html
; dann kannst du MultiViews
auf Apache einsetzen.
Und für Beispieldomains verwende bitte eine der nach BCP 32 dafür vorgesehenen (wie bspw. example.net
).
Eine gute Einführung gibt auch Guiding users to translated pages (Entwurf; später vermutlich hier (https://www.w3.org/International/questions/qa-site-conneg) verfügbar, dann vielleicht sogar in deutscher Übersetzung ;-)).
LLAP 🖖
Moin,
Ich möchte für ein zweisprachiges Orchester einen Internetseite gestalten. Diese soll es in zwei Varianten geben: deutsch, ungarisch. Wie macht man das am effizientesten?
Eine Seite? Und dafür (wie diskutiert) ein CMS mit Einarbeitungs- und Folgeproblemen ?
Ich habe eine ganz einfache PHP-Lösung. Ich nehme eine ganz normale HTML-Seite in einer PHP Datei und schreibe die Sprachen nacheinander in dieser Form:
<p>###deutsche Sprache###english language###Nederlandse taal###</p>
Lediglich die Bereiche mit den Sprachen werden jeweils in ein php-Kommando eingebettet:
<? zeig_lg( "<p>###deutsche Sprache###english language###Nederlandse taal###</p>" ); ?>
Daraus wird ein Array, auf Platz 0 ist immer deutsch, Platz 1 english usw:
function zeig_lg( $zeile )
{
global $lg_ndx;
// 2011-02-17 PRO ZEILE EINMAL: SPRACHEN-AUSWAHL
if ( strpos( 'x'.$zeile, '###' ))
{
$arr_lg = explode( '###', $zeile );
$zeile = $arr_lg[0].$arr_lg[$lg_ndx].$arr_lg[count($arr_lg)-1];
}
echo $zeile;
}
Bleibt nur noch, die Sprache festzulegen. Vorrang hat der Parameter lg beim Aufruf des PHP Programms, sonst wird die Browser-Sprache genommen:
$bia_lg =( $_REQUEST['lg'] ) ? $_REQUEST['lg'] : strtolower( $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
$arr_bia_lg = explode( ',', $bia_lg ); // ru,en;q=0.9,es;q=0.8,de;q=0.7
if ( $arr_bia_lg[0] ) $bia_lg = $arr_bia_lg[0];
// Sprach-Index bestimmen
if ( $bia_lg == 'de' ) { $lg_ndx = 1; }
else if ( $bia_lg == 'en' ) { $lg_ndx = 2; }
else if ( $bia_lg == 'nl' ) { $lg_ndx = 3; }
// meine Seiten laufen unter drei Domains: example.de, example.eu und example.com
// falls sowas reinkommt wie jp nimm de für example.de, sonst en
else if ( strpos( $bia_domain, '.de' )){ $lg_ndx = 1; }
else { $lg_ndx = 2; }
Und schon fertig. Hier zu sehen: http://remso.eu/_text/news.php?lg=nl
Linuchs
@@Linuchs
Ich habe eine ganz einfache PHP-Lösung. Ich nehme eine ganz normale HTML-Seite in einer PHP Datei und schreibe die Sprachen nacheinander in dieser Form:
<p>###deutsche Sprache###english language###Nederlandse taal###</p>
Das hört sich keinesfalls besser an als JSON.
Und was machst du mit <p><a href="deutsch">deutsche</a> <a href="Sprache">Sprache</a></p>
?
LLAP 🖖
Und was machst du mit
<p><a href="deutsch">deutsche</a> <a href="Sprache">Sprache</a></p>
?
Frage nicht verstanden. Was ist daran mehrsprachig?
Falls deine Feststellung ist, dass die Fuktion zeig_lg() nur einmal eine Sprache wählen kann: Ich nutze ich die Funktion auch mehrmals für einen Satz.
Linuchs
@@Linuchs
Und was machst du mit
<p><a href="deutsch">deutsche</a> <a href="Sprache">Sprache</a></p>
?Falls deine Feststellung ist, dass die Fuktion zeig_lg() nur einmal eine Sprache wählen kann: Ich nutze ich die Funktion auch mehrmals für einen Satz.
Und wie soll das gehen?
Wie machst du aus obigem deutschen Text diesen polnischen:
<p><a href="Sprache">język</a> <a href="deutsch">niemiecki</a></p>
?
LLAP 🖖
Wie machst du aus obigem deutschen Text diesen polnischen:
<p><a href="Sprache">język</a> <a href="deutsch">niemecki</a></p>
?
Die Worte (oder Sätze), die in der jeweiligen Sprache anzuzeigen sind, werden hintereinander geschrieben. Voraussetzung,: Das Programm hat "de" als ersten, "en" als zweiten, "pl" als dritten Index vorher festgelegt:
<? zeig_lg ( "<p><a href="Sprache">###Sprache###language###język###</a>" ); ?>
<? zeig_lg ( " <a href="deutsch">###deutsch###german###niemecki###</a></p>" ); ?>
Übrigens gebe ich die Zielsprache immer in ihrer eigenen Sprache an wie bei Wikipedia. Was sollte ein Pole mit dem Link nach einer Seite namens "niemecki" wenn er kein deutsch versteht?
Das ist Windoof-Denken. Da möchtest du etwas löschen, dann kommt ganz ernsthaft die Frage "wollen Sie wirklich?" und bei "ja" lacht sich Windoof schlapp mit der Meldung "Ihre Rechte reichen nicht aus" oder sinngemäß.
Linuchs
Hallo Linuchs,
Übrigens gebe ich die Zielsprache immer in ihrer eigenen Sprache an wie bei Wikipedia. Was sollte ein Pole mit dem Link nach einer Seite namens "niemecki" wenn er kein deutsch versteht?
???
Ein Pole weiß dann, dass sich hinter „Ta witryna w języku niemieckim“ deutschsprachige Inhalte verbergen und er sie vielleicht nicht anzuklicken braucht, weil er sie nicht versteht.
Anders sieht es für Sprachmenüs aus. Da sollte man tatsächlich die Zielsprache angeben.
Bis demnächst
Matthias
Content/Language Negotiation.
@@pl
Content/Language Negotiation.
Das ist sinnvoll.
Dein Beitrag eher nicht. Oder welchen Sinn hat es, dem Theo einen Begriff an den Kopf zu knallen? Zumal der schon mindestens dreimal in diesem Thread gefallen ist.
LLAP 🖖
Hast Du schonmal eine mehrsprachige Website programmiert? Wen ja, gibt Doch Deine Erfahrungen mit sowas hier weiter, es wäre eine Bereicherung.
Mfg
@@pl
Hast Du schonmal eine mehrsprachige Website programmiert? Wen ja, gibt Doch Deine Erfahrungen mit sowas hier weiter, es wäre eine Bereicherung.
Siehe Archiv.
LLAP 🖖