ich habe ein Modul entwickelt, welches sich oxid-konform an Sprachdateien orientiert. Das ganze läuft auch auf Oxid 4.9.x
Jetzt habe ich das ganze auf 4.7.x getestet, und da werden die Konstanten nicht aufgelöst bzw. ersetzt. Ich weiß, dass es dafür einen anderen “Ablageplatz” gibt, damit diese korrekt angezeigt werden können, aber:
Wie schaffe ich es nun, dass ich nur eine Sprachdatei habe (die gepflegt / erweitert) werden muss?
Ich könnte natürlich eine zweite Sprachdatei anlegen, aber das ist wohl nicht im Sinne des Erfinders.
Für die Version 4.9.x habe ich die Übersetzungen hier:
[B]/modules/myModule/application/views/admin/de/my_lang.php[/B]
[QUOTE=vanilla thunder;179387]Was wäre denn deiner Meinung nach eine schöne Lösung?[/QUOTE]
Einen zentralen Pfad zu haben, der sich nicht ändert?
wieso im Backend unter “views/admin/de”, fürs frontend dann in “application/translation” oder in anderen Versionen out/admin/de bzw. “/translations”?
Klar, hinterher kann man es natürlich nicht mehr ändern, aber wieso die Sprachdateien für Front- und Backend an verschiedenen Punkten liegen müssen, ist mir schleierhaft.
Ebenfalls: Wenn ich einen Ordner “/translations/de/myfile_lang.php” sehe, dann gehe ich davon aus, dass dort eine Sprachdatei liegt, nicht ein include zu einer Datei, die aus legacy-Gründen woanders liegt bzw. liegen muss.
auch in 4.9er Shops kann man die Lang Files in views/admin/ bzw translations/ ablegen, du hast dich aber dafür entschieden, sie in application/views/admin/ bzw application/translations/ abzulegen.
Warum OXID verschiedene Pfade anbietet, weiß ich nicht. Ich glaube aber, dass es an die Ordnerstruktur des Shops angelehnt sein wollte.
[QUOTE=vanilla thunder;179390]auch in 4.9er Shops kann man die Lang Files in views/admin/ bzw translations/ ablegen, du hast dich aber dafür entschieden, sie in application/views/admin/ bzw application/translations/ abzulegen.
Warum OXID verschiedene Pfade anbietet, weiß ich nicht. Ich glaube aber, dass es an die Ordnerstruktur des Shops angelehnt sein wollte.[/QUOTE]
Okay. Ich hatte offenbar bei dem include nen Fehler. Habe es gestern nochmal in ruhe getestet und damit klappt es. Danke für die Hilfe, Vanilla
[QUOTE=vanilla thunder;179390]auch in 4.9er Shops kann man die Lang Files in views/admin/ bzw translations/ ablegen[/QUOTE]
Genau, seit 4.7 sind die Ordner views/admin/ (Backend) und translations/ (Frontend). Neu in 4.9 ist dass zusätzlich auch geht: application/views/admin/ (Backend) und application/translations/ (Frontend). Aber lt. einem Developer sollte man kein application-Verzeichhnis in Modulen verwenden: “in module, you do not need application dir at all. in module we just extend models, controllers, core etc. files.”
Dass es verschiedene Pfade für Frontend/Backend gibt ist unschön, aber folgt einer gewissen Logik, weil “admin” ähnlich wie ein Theme behandelt wird, und die theme-Sprachdateien liegen beim Theme. Also views/azure/de und eben views/admin/de.
Irgendwie hat hier jeder Recht und auch nicht. Ich habbe es getestet: application/translations/ geht ohne ThemeSwitcher, out/lang/ geht mit, aber nur 4.96 translations im Modulroot geht hier,. bei unserem Tetsshop 4.92 geht das aber wiederum nicht. Da geht out/lang mit Switcher und application/translations/ oder translations/ mit Switch, die beiden aber nicht ohne. Und ja, TMP immer geleert.
Jetzt habe ich die Ordner nicht nur umbenannt, sondern gelöscht. Wenn damit modulname/translations/de gemeint ist, dann definitiv NEIN. Die Modulübersetzung fehlt je nach Template-Switch. Kann das jemand anders auch mal in 4.92 prüfen?
Schau mal in den Code von oethemeswitcherlang.php:
// Modules language files
if (is_array($aModuleInfo)) {
foreach ($aModuleInfo as $sPath) {
$sFullPath = $oConfig->getModulesDir() . $sPath . '/translations/' . $sLang;
// for < 4.6 modules, since 4.7/5.0 translation files should be in modules/modulepath/translations/ dir
if (!is_dir($sFullPath)) {
$sFullPath = $oConfig->getModulesDir() . $sPath . '/out/lang/' . $sLang;
}
$aLangFiles = $this->_appendLangFile($aLangFiles, $sFullPath);
}
}
modulname/translations wird also auch im Templateswitcher von 4.9.2 geladen. Wenn das bei dir nicht funktioniert, solltest du mal schauen woran das liegt.
Doch, das funktioniert, aber ohne Aktivierung von [B]OXID eShop theme switch[/B] wird die Übersetzung in modulroot/translations/de nicht gefunden. Dann nur in den anderen Ordnern, wie oben beschrieben. Und es liegt auch nicht an anderen Modulen oder Änderungen. Den Shop (4.92) habe ich gerade neu installiert und 2 verschiedene Module ausprobiert. Bei beiden wird, wenn [B]OXID eShop theme switch [/B] deaktiviert ist, die Übersetzung nicht gefunden.
[QUOTE=adamweber;179426]aber ohne Aktivierung von [B]OXID eShop theme switch[/B] wird die Übersetzung in modulroot/translations/de nicht gefunden[/QUOTE]
Doch das wird sie