Andere Sprache - anderes Template???
Andere Sprache - anderes Template???
Hallo zusammen,
ich stehe mal wieder vor einem (kleinen??) Problem:
Ich habe eine Webseite in deutsch und in englisch erstellt - habe alle Artikel in englisch synchronisiert.
Wenn ich jetzt in der englischen Version ein anderes Template verwenden möchte wie in der deutschen, dann wird dieses Template auch in der deutschen Version geändert.
Ich habe aber im Layout einige fixe Textblöcke stehen - Übersetzung geht also nur über ein anderes Template.
Wie kann ich das lösen? Ich hätte gerne in der deutschen Version das Template "Standard" und in der englischen das Template "Standard englisch" - ich steh aufm Schlauch.....
Danke für eure Hilfe
LG
Thilo
ich stehe mal wieder vor einem (kleinen??) Problem:
Ich habe eine Webseite in deutsch und in englisch erstellt - habe alle Artikel in englisch synchronisiert.
Wenn ich jetzt in der englischen Version ein anderes Template verwenden möchte wie in der deutschen, dann wird dieses Template auch in der deutschen Version geändert.
Ich habe aber im Layout einige fixe Textblöcke stehen - Übersetzung geht also nur über ein anderes Template.
Wie kann ich das lösen? Ich hätte gerne in der deutschen Version das Template "Standard" und in der englischen das Template "Standard englisch" - ich steh aufm Schlauch.....
Danke für eure Hilfe
LG
Thilo
Re: Andere Sprache - anderes Template???
Das ist soweit noch richtig.thilo hat geschrieben:Wenn ich jetzt in der englischen Version ein anderes Template verwenden möchte wie in der deutschen, dann wird dieses Template auch in der deutschen Version geändert.
Dann wurde Contenido mit der Mehrsprachigkeit nicht richtig verstanden.Ich habe aber im Layout einige fixe Textblöcke stehen - Übersetzung geht also nur über ein anderes Template.
Das wird damit dann ja ausgehebelt.
Ein kleines Modul machen, das je nach eingestellter Sprache einen anderen Text aus gibt oder einbindet.Wie kann ich das lösen?
Das ist ganz falsch.Ich hätte gerne in der deutschen Version das Template "Standard" und in der englischen das Template "Standard englisch" - ich steh aufm Schlauch.....
Ein Modul sollte nur einmal vorkommen pro Sprache und ein Modul-Template auch.
Alles was sprachlich-inhaltlich relevant ist, wird vom Modul in das Template geschrieben, über z.B. i18n('text').
In der Modulübersetzung wird dann dieser Text in die andere Sprache übersetzt, z.b. indem man im Backend in die andere Sprache wechselt.
Das Template selbst enthält nur HTML und im Zweifel noch CSS, aber keine Inhalte.
Wenn man Eigenkonstruktionen von Templates hat, muss man das in einem kleinen Modul in der Art behandeln:
Code: Alles auswählen
if($lang = 2){
echo $text2;
}else{
echo $text1;
}
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
Re: Andere Sprache - anderes Template???
Hallo Faar,
danke für deine ausführliche Erklärung.
Aber ich fürchte da bin ich zu wenig Programmierer und zu sehr "Gestalter" um dir vollumfänglich folgen zu können.
Ich habe eine Webseite, die im Fussbereich einen kurzen Text enthält. Der ist auf sämtlichen Seiten identisch. Da ich diesen nicht auf jeder einzelnen Seite manuell einbinden wollte, habe ich ihn fix ins Layout geschrieben.
Nur muss er natürlich dann in der englischen Version übersetzt werden.
Die Lösung mit der Variablen klingt logisch. Allerdings reichen hier meine Fähigkeiten nicht aus, das funktionierend umzusetzen. Derzeit verwende ich für diesen Text ja kein Modul, in dem ich eine Variable für die Sprache festlegen könnte. Wenn ich ein Modul "content_text" verwenden würde, dann müsste ich den Text ja doch wieder auf sämtlichen Seiten von Hand einsetzen ?!?
Ich bräuchte also ein Modul, in dem der deutsche Text fix drinsteht - und dafür dann eine Modulübersetzung oder?!?
Wie müsste denn so ein Modul aussehen?
danke für deine ausführliche Erklärung.
Aber ich fürchte da bin ich zu wenig Programmierer und zu sehr "Gestalter" um dir vollumfänglich folgen zu können.
Ich habe eine Webseite, die im Fussbereich einen kurzen Text enthält. Der ist auf sämtlichen Seiten identisch. Da ich diesen nicht auf jeder einzelnen Seite manuell einbinden wollte, habe ich ihn fix ins Layout geschrieben.
Nur muss er natürlich dann in der englischen Version übersetzt werden.
Die Lösung mit der Variablen klingt logisch. Allerdings reichen hier meine Fähigkeiten nicht aus, das funktionierend umzusetzen. Derzeit verwende ich für diesen Text ja kein Modul, in dem ich eine Variable für die Sprache festlegen könnte. Wenn ich ein Modul "content_text" verwenden würde, dann müsste ich den Text ja doch wieder auf sämtlichen Seiten von Hand einsetzen ?!?
Ich bräuchte also ein Modul, in dem der deutsche Text fix drinsteht - und dafür dann eine Modulübersetzung oder?!?
Wie müsste denn so ein Modul aussehen?
Re: Andere Sprache - anderes Template???
Hallo thilo,
in Contenido 4.8 geht das wie folgt:
Ich denke mal, das sollte in Contenido 4.9 noch genauso funktionieren.
Gruß
Zuschauer
in Contenido 4.8 geht das wie folgt:
Code: Alles auswählen
<?php echo mi18n("Dies ist der übersetzbare Text der auf allen Seiten erscheint"); ?>
Gruß
Zuschauer
Re: Andere Sprache - anderes Template???
Hallo Zuschauer,
das klappt perfekt mit einem kurzen Text. Also wenn ich reinschreibe "Dies ist ein Text der übersetzt werden soll" dann haut das fehlerfrei hin.
Sobald ich einen längeren Text über copy & paste einfüge, steht der Text zwar auch drin, im Frontend wird aber vor dem Text die Zeile "Module Translation not found:" ausgegeben und danach dann der Text.
Mache ich da was falsch oder macht Contenido nen Fehler?
das klappt perfekt mit einem kurzen Text. Also wenn ich reinschreibe "Dies ist ein Text der übersetzt werden soll" dann haut das fehlerfrei hin.
Sobald ich einen längeren Text über copy & paste einfüge, steht der Text zwar auch drin, im Frontend wird aber vor dem Text die Zeile "Module Translation not found:" ausgegeben und danach dann der Text.
Mache ich da was falsch oder macht Contenido nen Fehler?
Re: Andere Sprache - anderes Template???
Ach ja, in Contenido 4.9 musst du unbedingt für jede Sprache eine Übersetzung eingeben.
Du kannst also im Modul auch einfach nur einen kurzen Platzhalter einfügen und den richtigen Text dann in der Übersetzung.
Gruß
Zuschauer
Du kannst also im Modul auch einfach nur einen kurzen Platzhalter einfügen und den richtigen Text dann in der Übersetzung.
Gruß
Zuschauer
Re: Andere Sprache - anderes Template???
Hallo Thilo,
Zuschauer hat eigentlich schon alles soweit vollständig erklärt.
Bis auf eine Anmerkung noch, zu der Ansicht auf jeder Seite:
Wenn man diesen kleinen Code in ein neues Modul packt, hat man den Vorteil, dass man dieses Modul in einem Template (Vorlage) eintragen kann.
Da man viele Templates entwerfen kann, kann man auch Templates ohne dieses Modul zusammenstellen und hat somit eine erhöhte Flexibilität bezüglich der Verwendung.
Alles was man dann noch braucht, das ist ein Container an der Stelle im Layout, wo bisher der Text stand.
Dort wird im Template dann das Modul eingetragen.
VG,
Faar
Zuschauer hat eigentlich schon alles soweit vollständig erklärt.
Bis auf eine Anmerkung noch, zu der Ansicht auf jeder Seite:
Wenn man diesen kleinen Code in ein neues Modul packt, hat man den Vorteil, dass man dieses Modul in einem Template (Vorlage) eintragen kann.
Da man viele Templates entwerfen kann, kann man auch Templates ohne dieses Modul zusammenstellen und hat somit eine erhöhte Flexibilität bezüglich der Verwendung.
Alles was man dann noch braucht, das ist ein Container an der Stelle im Layout, wo bisher der Text stand.
Dort wird im Template dann das Modul eingetragen.
VG,
Faar
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
Re: Andere Sprache - anderes Template???
Danke Faar und Zuschauer,
ich wäre auf diese Lösung nie gekommen - sie ist aber doch wesentlich komfortabler und auch logischer als meine "Variante".
Und nach einigem Basteln hab ichs nun auch hinbekommen.
An alle die diese Lösung nachbasteln: es gibt offenbar Probleme, wenn man größere Textblöcke per Copy & Paste in das Übersetzungsfeld kopiert und einfach auf den grünen Haken klickt. Bei mir hats geholfen, das komplette Modul erstmal mit einem kurzen Test-Text (manuell getippt) anzulegen, zu übersetzen und zu testen. Erst dann habe ich den Originaltext reinkopiert. Trotz Plain-Text-Editor wollte Copy & Paste auch nach dem 20. Neuanlegen des Moduls nicht klappen....
Jedenfalls vielen Dank für eure Hilfe !!! Hat super geklappt und ich habs sogar begriffen
ich wäre auf diese Lösung nie gekommen - sie ist aber doch wesentlich komfortabler und auch logischer als meine "Variante".
Und nach einigem Basteln hab ichs nun auch hinbekommen.
An alle die diese Lösung nachbasteln: es gibt offenbar Probleme, wenn man größere Textblöcke per Copy & Paste in das Übersetzungsfeld kopiert und einfach auf den grünen Haken klickt. Bei mir hats geholfen, das komplette Modul erstmal mit einem kurzen Test-Text (manuell getippt) anzulegen, zu übersetzen und zu testen. Erst dann habe ich den Originaltext reinkopiert. Trotz Plain-Text-Editor wollte Copy & Paste auch nach dem 20. Neuanlegen des Moduls nicht klappen....
Jedenfalls vielen Dank für eure Hilfe !!! Hat super geklappt und ich habs sogar begriffen
Re: Andere Sprache - anderes Template???
Wenn es zu groß wird, ist der mi18n() Ansatz nicht mehr der beste Weg, da würde ich dann doch mein oben genannter Ansatz mit der Sprachauswahl if($lang=1) nehmen, und fertige Textbausteine einfügen. Du kannst die ja aus dem Upload-Verzeichnis verlinken, z.B. mittels include().
Dann wäre der Inhalt über die Dateiverwaltung veränderbar.
Aber Achtung. hier wären Sicherheits-Filter sinnvoll, damit niemand über das Upload-Verzeichnis einen Schadcode einschleusen kann.
Dann wäre der Inhalt über die Dateiverwaltung veränderbar.
Aber Achtung. hier wären Sicherheits-Filter sinnvoll, damit niemand über das Upload-Verzeichnis einen Schadcode einschleusen kann.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
-
- Beiträge: 4251
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Kontaktdaten:
Re: Andere Sprache - anderes Template???
Bei großen Texten bietet sich die Verwendung von sprachabhängigen Templates wohl eher an. Zum einen sind diese direkt beim Modul vorgehalten und man umgeht die Probleme bei Upload-Dateien. Je nach Sprache nutzt das Modul ein anderes Template, bei nicht Vorhandensein ein default-Template.
Ein weiterer Vorteil, man kann sogar HTML-Tags nutzen in Templates, was sich in der mi18n()-Funktion je nach Tag schwierig gestaltet.
Gruß aus Franken
Ortwin
Ein weiterer Vorteil, man kann sogar HTML-Tags nutzen in Templates, was sich in der mi18n()-Funktion je nach Tag schwierig gestaltet.
Gruß aus Franken
Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Re: Andere Sprache - anderes Template???
Ich habe ein etwas ähnliches Problem - nur geht es bei mir nicht um einen Text, den ich übersetzen will. Es soll jeweils pro Sprache eine andere Datei geladen werden, die später per PHP weiter "verarbeitet" wird.
Ich habe also ein Modul erstellt und versuche jetzt, mit diesem Codeschnipsel
die verschiedenen Sprachen anzusprechen. Das sieht bei mir folgendermaßen aus:
Trotzdem wird immer nur die erste Datei geladen.
Dann ist mir aufgefallen: Müsste es nicht sogar ($lang == 1) heißen? Mit = weise ich doch zu und mit == "vergleiche" ich, oder? Aber wenn ich das eingebe, zeigt er mir nur die dritte Datei an.
Ich kenne mich leider mit PHP noch nicht so wirklich gut aus, kann mir da jemand weiterhelfen?
Vielen Dank schon mal.
LG
Miriam
Ich habe also ein Modul erstellt und versuche jetzt, mit diesem Codeschnipsel
Code: Alles auswählen
if($lang = 2){
echo $text2;
}else{
echo $text1;
}
Code: Alles auswählen
if ($lang = 1) {
$quote = file("./upload/_inhalte/quotes.txt");
} elseif ($lang = 2) {
$quote = file("./upload/_inhalte/quotes2.txt");
} else {
$quote = file("./upload/_inhalte/quotes3.txt");
}
Dann ist mir aufgefallen: Müsste es nicht sogar ($lang == 1) heißen? Mit = weise ich doch zu und mit == "vergleiche" ich, oder? Aber wenn ich das eingebe, zeigt er mir nur die dritte Datei an.
Ich kenne mich leider mit PHP noch nicht so wirklich gut aus, kann mir da jemand weiterhelfen?
Vielen Dank schon mal.
LG
Miriam
Re: Andere Sprache - anderes Template???
Mach da mal überall ein doppeltes == draus. Sonst vergleichst Du nicht den Inhalt der Variablen sondern weist ihr den Wert zu - wie Du geschrieben hast. Denn damit ist die Bedingung automatisch erfüllt und else kommt niemals zum Tragen...if($lang = 2){
http://php.net/manual/de/control-structures.elseif.php
Wenn das nicht hilft, setz mal den zu vergleichenden Wert in "". Evtl. hapert es hier dran: http://php.net/manual/de/language.types ... ggling.php (String vs. Zahl) - auch wenn es eigentlich so funktionieren sollte...
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.
Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)
Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.
Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)
Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)
Re: Andere Sprache - anderes Template???
Vielen Dank für die Tips.
Das doppelte == habe ich eingesetzt und auch mal die "" ausprobiert. In beiden Fällen wird mir in allen Sprachen das quotes3 ausgegeben.
Kann man denn irgendwie herausfinden, ob die Variable $lang überhaupt das richtige ausgibt? Ich hatte es einfach mit
probiert. Da wird dann aber nichts angezeigt.
Muss ich das $lang vorher denn irgendwie definieren? Ich dachte halt, die Variable steht einfach zur Verfügung, aber vielleicht ist das gar nicht der Fall...
Das doppelte == habe ich eingesetzt und auch mal die "" ausprobiert. In beiden Fällen wird mir in allen Sprachen das quotes3 ausgegeben.
Kann man denn irgendwie herausfinden, ob die Variable $lang überhaupt das richtige ausgibt? Ich hatte es einfach mit
Code: Alles auswählen
echo $lang;
Muss ich das $lang vorher denn irgendwie definieren? Ich dachte halt, die Variable steht einfach zur Verfügung, aber vielleicht ist das gar nicht der Fall...
Re: Andere Sprache - anderes Template???
Okay, ich habe noch ein wenig rumprobiert und es funktioniert nun alles.
Es lag daran, dass ich eine function eingebaut hatte (den gesamten PHP-Code für das Modul habe ich von jemandem bekommen) und innerhalb dieser function ließ sich die Variable $lang nicht aufrufen.
Wenn ich alles ohne die function baue, läuft es super. Wenn ich jetzt noch mehr lerne über PHP, werde ich hoffentlich noch verstehen, warum im Modul in diesem Fall keine function benutzt werden sollte...
Trotzdem danke für die Hilfe!
Es lag daran, dass ich eine function eingebaut hatte (den gesamten PHP-Code für das Modul habe ich von jemandem bekommen) und innerhalb dieser function ließ sich die Variable $lang nicht aufrufen.
Wenn ich alles ohne die function baue, läuft es super. Wenn ich jetzt noch mehr lerne über PHP, werde ich hoffentlich noch verstehen, warum im Modul in diesem Fall keine function benutzt werden sollte...
Trotzdem danke für die Hilfe!
Re: Andere Sprache - anderes Template???
Gerne...
Dann ist auch klar, dass immer nur das letzte else zum Tragen kommt wenn vorher korrekt == gesetzt wurde. Du kannst den Wert von $lang - der grundsätzlich immer zur Verfügung steht - auch beim Aufruf an die Function übergeben. Aber wenn's jetzt funktioniert, passt's ja...innerhalb dieser function ließ sich die Variable $lang nicht aufrufen
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.
Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)
Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.
Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)
Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)