Seite 1 von 1
[WISH] mi18n und checken von includes
Verfasst: Di 6. Jan 2015, 12:27
von rethus
Wenn man ein Modul hat, das Multi-Lingual aufgebaut ist, UND Dateien (z.B. PHP-Klassen) inkludiert, funktioniert die Mehrsprachigkeit nur noch, wenn man mi18n() doppelt nutzt.
Einmal dort wo man diese braucht (z.B. in der Klasse), einmal in dem Modul-Output.
Daher hier mein Vorschlag, dass Contenido checkt, ob PHP-Dateien inkludiert wurden, und diese dann auf der Suche nach mi18n() mit parst.
Re: [WISH] mi18n und checken von includes
Verfasst: Do 8. Jan 2015, 09:12
von frederic.schneider_4fb
Wir werden Deinen Vorschlag intern diskutieren und geben dann eine Rückmeldung an Dich. Vielen Dank!
Re: [WISH] mi18n und checken von includes
Verfasst: Do 8. Jan 2015, 10:04
von frederic.schneider_4fb
Lieber rethus,
wie versprochen haben ich Deinen Wunsch eben intern diskutiert. Es gibt ein paar Haken:
Zumindest wir schreiben (i. d. R.) keine includes oder Klassen (mehr) in eine Modul-Datei, sondern nutzen z. B. den Autoloader. Wie möchtest Du in diesem Fall herausfinden, was alles geladen wird? Zudem hat der Parse Performanceeinwirkungen. Grundsätzlich können wir Deinen Gedanken jedoch nachvollziehen und stellen uns deshalb gerne hier einer Diskussion. Vielleicht finden wir gemeinsam einen Weg?
Re: [WISH] mi18n und checken von includes
Verfasst: Do 8. Jan 2015, 10:16
von Oldperl
rethus hat geschrieben:Daher hier mein Vorschlag, dass Contenido checkt, ob PHP-Dateien inkludiert wurden, und diese dann auf der Suche nach mi18n() mit parst.
Eine Möglichkeit, aber schwer zu realisieren. Ich lege in meinen Klassen immer ein Array für die Strings an und eine Methode die dieses Array im Modul selbst per mi18n übersetzt an.
Wobei ich generell versuche mi18n in externen Dateien zu vermeiden und falls doch notwendig dort lieber i18n mit entsprechenden locale-Dateien nutze.
Entsprechend verfahre ich beispielsweise auch bei JS, dort gebe ich ein translation-Array mit mi18n übersetzt direkt im Modul mit aus.
Gruß aus Franken
Ortwin
Re: [WISH] mi18n und checken von includes
Verfasst: Do 8. Jan 2015, 11:59
von rethus
hi frederic.schneider_4fb
wie greift denn der Autoloader? Liest er z.B. auch alle Klassen aus meinen Plugin-Verzeichnissen aus?
Aktuell geht es mir darum, dass ich Ausgabemodule für ein Plugin habe. Das Plugin hat eine Klasse, die teilweise Textmeldungen (z.B. Fehlerausgaben, etc.) enthält.
Hi Oldperl
Ich lege in meinen Klassen immer ein Array für die Strings an und eine Methode die dieses Array im Modul selbst per mi18n übersetzt an.
Kannst du da mal ein Beispiel deiner Methode im Modul zeigen?
Mit i18n ist auch ein Ansatz, dieser stellt mich jedoch vor Problemen, wenn die Sprache mal eben schnell über Contenido-Backend, oder durch einen Redakteur (native - Speaker) gemacht werden soll. Denen möchte ich ungerne ein jonglieren mit poEdit zumuten.
Re: [WISH] mi18n und checken von includes
Verfasst: Do 8. Jan 2015, 12:01
von frederic.schneider_4fb
Re: [WISH] mi18n und checken von includes
Verfasst: So 11. Jan 2015, 22:43
von Oldperl
rethus hat geschrieben:Kannst du da mal ein Beispiel deiner Methode im Modul zeigen?
Sorry, grad nix griffbereit.
Aber vom Ablauf
- Im Modul ein Array mit den Übersetzungen per mi18n-Funktion und String-Schlüsseln (Keys).
- In der Klasse ein Array mit gleichlautenden Keys und den englischen Texten.
- Eine Klassenmethode (set) die das Array aus dem Modul mit dem Klassen-Array synct.
- Der Klassenmethode wird das Array aus dem Modul übergeben und dann mit dem Klassen-Array mit den Originaltexten zusammengeführt.
http://php.net/manual/de/function.array-merge.php
Gruß aus Franken
Ortwin
Re: [WISH] mi18n und checken von includes
Verfasst: Mo 12. Jan 2015, 10:58
von rethus
Ok, danke für die Anregung. Hört sich nach einem gangbaren Weg an.
Hab hin und her überlegt, aber auch keinen anderen Ansatz gefunden. Da beim Übersetzen die includes scheinbar gar nicht befeuert werden (sonst würde ja auch mi18n() funktionieren), wird es keine andere Möglichkeit geben als den Umweg über das Modul und dem dortigen Definieren von mi18n mit anschließender Übergabe in die Klassen und Funktionen.