Benutzer-Werkzeuge

Webseiten-Werkzeuge


dev:284:translate

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
dev:284:translate [19.07.2018 11:17] – [Allgemeiner Aufbau der Übersetzungs-Struktur] Manuela v.d.Deckendev:284:translate [19.07.2018 11:51] Manuela v.d.Decken
Zeile 5: Zeile 5:
  
 Der Einfachheit halber rede ich hier immer nur von 'Sprachdateien'. Real müssen die Übersetzungen jedoch längst nicht mehr zwingend in PHP-Dateien als Arrays definiert werden. Es ist jetzt jedes denkbare, geeignete Dateiformat möglich. Die Daten müssen nicht einmal auf dem selben Server liegen. Auch könnten die Daten durch einen WebService zur Verfügung gestellt oder in einer Datenbank abgelegt werden. Dazu ist einzig und allein jeweils ein kleiner, spezialisierter Treiber nötig, der jederzeit, auch temporär sogar für ein einzelnes Addon oder Template, eingebunden werden kann. Der Einfachheit halber rede ich hier immer nur von 'Sprachdateien'. Real müssen die Übersetzungen jedoch längst nicht mehr zwingend in PHP-Dateien als Arrays definiert werden. Es ist jetzt jedes denkbare, geeignete Dateiformat möglich. Die Daten müssen nicht einmal auf dem selben Server liegen. Auch könnten die Daten durch einen WebService zur Verfügung gestellt oder in einer Datenbank abgelegt werden. Dazu ist einzig und allein jeweils ein kleiner, spezialisierter Treiber nötig, der jederzeit, auch temporär sogar für ein einzelnes Addon oder Template, eingebunden werden kann.
-=== Aufbau der Sprachdateien (EN.php) ===+ 
 +==== Aufbau der Sprachdateien (EN.php) ====
 Dies ist die bevorzugte und auch dringend empfohlene Art:\\ Dies ist die bevorzugte und auch dringend empfohlene Art:\\
 //(übersichtlich und schon im Texteditor einfach zu sortieren)// //(übersichtlich und schon im Texteditor einfach zu sortieren)//
Zeile 40: Zeile 41:
 Zwingend ist derzeit jedoch noch der Präfix "$MOD_MyModule_" bzw."$MOD_MyModule[". Zwingend ist derzeit jedoch noch der Präfix "$MOD_MyModule_" bzw."$MOD_MyModule[".
 Nur so lassen sich ungewollte Überschneidungen der Schlüsselwörter verhindern. Nur so lassen sich ungewollte Überschneidungen der Schlüsselwörter verhindern.
 +
 +==== Aufbau der DB-Sprachtabelle ====
 +FIXME
  
 ===== Historisches ===== ===== Historisches =====
 +Fangen wir beim Stand vor der 2.10.0. Im zentralen Sprachverzeichnis des Core existieren eine große Anzahl von Sprachdateien (DE.php | EN.php | usw.). Ja, es waren noch reale Dateien!. Jede dieser Dateien enthält eine schier unüberschaubare Anzahl von Sprachvariablen (genauer gesagt, derzeit etwas über 600!!). Das benutzte System erfordert, dass in jeder Sprachdatei jeder Eintrag vorhanden ist. Fehlt einer, löst das im Benutzungsfall häufig einen Laufzeitfehler aus. Sobald WebsiteBaker startet, wird zwangsweise eine dieser Sprachdateien mit ihren vollen 600 Einträgen geladen. völlig unabhängig davon, ob auch nur ein einziger davon benötigt wird! Selbstverständlich laden dann verschiedene Addons ihre eigenen Sprachdateien noch zusätzlich dazu. Bei mehreren verschiedenen Addons auf einer Seite kann da zusätzlich noch eine ganz erkleckliche Anzahl zusammenkommen.\\ //(Aus historischen Zeiten sind da auch die längst veralteten Übersetzungen von sehr vielen uralten Modulen enthalten und eine wirkliche Pflege der Dateien ist, mit vernünftigem Zeit-/Arbeitsaufwand praktisch unmöglich. Wer was anderes behauptet, darf gerne ab sofort die Pflege dieser fossilen Dateien übernehmen.;-))//\\
  
-Die Zeiten, als in Addons die Übersetzungen noch mit solchen und ähnlichen, abenteuerlichen Konstrukten 'eingebaut' werden mussten, sind damit eindeutig Vergangenheit.<PHP>+Die Sprachdateien sowohl im Core als auch in Modulen mussten mit solchen und ähnlichen, abenteuerlichen Konstrukten 'eingebaut' werden
 +<PHP>
 // Load Language file // Load Language file
 if(is_readable(WB_PATH.'/modules/MyModule/languages/EN.php')) { if(is_readable(WB_PATH.'/modules/MyModule/languages/EN.php')) {
Zeile 57: Zeile 63:
     require_once(WB_PATH.'/modules/MyModule/languages/'.LANGUAGE.'.php');     require_once(WB_PATH.'/modules/MyModule/languages/'.LANGUAGE.'.php');
 }     }    
-</PHP>Ab jetzt genügt ein einfaches: <php>$oTrans->enableAddon('modules\\MyModule');</php>  +</PHP> 
-und schon ist alles erledigt. +Die Ausgabe erfolgte nach dem rudimentären Muster:
- +
-Wenn jetzt die berechtigte Frage kommt: 'was ist dann alles erledigt?', dann einfach weiterlesen. +
- +
-==== Übersetzungen vor 2.10.0 ==== +
-Fangen wir beim Stand vor der 2.10.0. Im zentralen Sprachverzeichnis des Core existieren eine große Anzahl von Sprachdateien (DE.php | EN.php | usw.). Jede dieser Dateien enthält eine schier unüberschaubare Anzahl von Sprachvariablen (genauer gesagt, derzeit etwas über 600!!). Das benutzte System erfordert, dass in jeder Sprachdatei jeder Eintrag vorhanden ist. Fehlt einer, löst das im Benutzungsfall häufig einen Laufzeitfehler aus. Sobald WebsiteBaker startet, wird zwangsweise eine dieser Sprachdateien mit ihren vollen 600 Einträgen geladen. völlig unabhängig davon, ob auch nur ein einziger davon benötigt wird! Selbstverständlich laden dann verschiedene Addons ihre eigenen Sprachdateien noch zusätzlich dazu. Bei mehreren verschiedenen Addons auf einer Seite kann da zusätzlich noch eine ganz erkleckliche Anzahl zusammenkommen.\\ //(Aus historischen Zeiten sind da auch die längst veralteten Übersetzungen von sehr vielen uralten Modulen enthalten und eine wirkliche Pflege der Dateien ist, mit vernünftigem Zeit-/Arbeitsaufwand praktisch unmöglich. Wer was anderes behauptet, darf gerne ab sofort die Pflege dieser fossilen Dateien übernehmen.;-))//\\ +
-Ab 2.10.0 beginnt die schrittweise Umstellung auf **Translate**. Bis diese komplett abgeschlossen ist, bleiben parallel dazu die 'alten' Sprachvariablen funktionsfähig. +
-<div important>Die Benutzung der alten Sprachvariablen ist deprecatet!\\ Die alten Sprachvariablen werden mit Abschluss der Umstellung ohne extra Ankündigung aus dem System entfernt!</div> +
- +
-Solange jedoch die Variablen aus den Sprachdateien noch nach alter Prä-Translate-Methode benutzt werden,+
 <PHP> <PHP>
 // Syntax Typ 1 // Syntax Typ 1
Zeile 80: Zeile 77:
 echo $MOD_MyModule_MESSAGE['ARCHIVE_DELETED']; echo $MOD_MyModule_MESSAGE['ARCHIVE_DELETED'];
 </PHP> </PHP>
-solange kann auf die oft ellenlangen Präfixes leider noch nicht verzichtet werden+Nach dieser alten Prä-Translate-Methode sind leider noch die teils ellenlangen Präfixes notwendig
 +<div important>Die Benutzung der alten Sprachvariablen ist deprecatet!\\ Die alten Sprachvariablen werden mit Abschluss der Umstellung auf **Translate** ohne extra Ankündigung aus dem System entfernt, was auch die obigen Ausgabemethoden entfernt.</div>
  
 +===== Die Zukunft =====
 +hat bereits begonnen.
 +<div info>Ab 2.10.0 beginnt die schrittweise Umstellung auf **Translate**. Bis diese komplett abgeschlossen ist, bleiben parallel dazu die 'alten' Sprachvariablen funktionsfähig.</div>
 +Wo die Umstellung schon erfolgte, genügt ab jetzt ein einfaches: <php>$oTrans->enableAddon('modules\\MyModule');</php> 
 +und schon ist alles erledigt.
  
 +Wenn jetzt die berechtigte Frage kommt: 'was ist dann alles erledigt?', dann einfach weiterlesen, wie **Translate** funktioniert.
  
 ==== Das Grundsystem hinter Translate ==== ==== Das Grundsystem hinter Translate ====
dev/284/translate.txt · Zuletzt geändert: 31.08.2023 08:22 von Manuela v.d.Decken