Das sieht schonmal gut aus. Du müsstest dort theoretisch schon auf alle serendipity config variablen zugreifen können. Die die Du suchst wäre $serendipity['template'].
OK, so funktioniert es nun wunderbar template-unabhängig!
Code: Select all
$probelang = dirname(__FILE__) . '/../../templates/' . $serendipity['template'] . '/UTF-8/my_lang_' . $serendipity['lang'] . '.inc.php';
if (file_exists($probelang)) {
include $probelang;
}
Und dann noch jeweils einmal ohne das UTF-8/ und mit einem ../ weniger
Die globale Lösung sähe dann so aus, daß dieser Code in ALLE Standard-Lang-Dateien rein müßte
Nein, das kostet einen File-Lookup für JEDEN s9y request, da das einer der zentarlen Teile ist. So etwas möchte ich definitiv vermeiden und verweise stattdessen auf eigene Sprachkonstanten oder halt manuelle Anpassung der Dateien.
Was genau ist ein File-Lookup? Das "include" oder das "file_exists"? Ersteres findet ja nur statt, wenn wirklich so eine Sprachdatei hinterlegt wurde.
Und wenn letzteres: Ist das wirklich
derart problematisch? Ich meine, es werden doch zig Dateien includiert, jedes Plugin hat seine Sprachdatei ... fällt da ein "file_exists" ins Gewicht?
Und alle Alternativ-Vorschläge haben leider so einen gewissen Hack-Beigeschmack. In der lang-Datei selber rumspielen (egal ob man nun per Hand meinen Code oben eingibt oder direkt die Konstanten ändert - beim nächsten Update ist wieder alles weg!) oder eigene Konstanten einbaut.
Letzteres ist für den Nutzer nur schwer möglich und selbst als template-Bauer ist das nicht so dolle: Normalerweise enthält ein Template ja nur die tpl-Dateien, die sich von denen des default-Templates unterscheiden (so habe ich das verstanden). Nun müßte man etliche tpl-Dateien mehr selber bereitstellen (und bei Updates pflegen!), nur weil man dort eine Textausgabe ändern will.
Und ich glaube, daß durchaus ein Interesse besteht,
einfach den einen oder anderen Text zu ändern; und zwar sowohl für Template-Entwickler (die ja vielleicht noch in ihren tpl-Dateien eigene Konstanten verwenden könnten) als auch für normale Benutzer, die das nur hochladen und dann nutzen wollen. Denen kann man schon sagen: "Leg eine my_lang_de.inc.php mit Deinen geänderten Texten an" - abr wohl kaum: "Tausche in allen tpl-Dateien die Konstanten gegen eigenes aus." Letzeres bedeutet nebenbei bemerkt auch, daß sie mindestens eine englische fallback-Datei mit den neuen Konstanten noch zusätzlich anlegen müßten!
Fazit:
s.o. wenn das "file_exists" nicht so "teuer" ist wie das "include", dann hoffe ich, das Problem ist doch kein so großes.
Und wenn doch: Vielleicht können meine Argumente ja dennoch überzeugen.
Wobei: Wenn wirklich bereits das "file_exists" so problematisch ist: Eine if-Variablen-Abfrage müßte doch "drin" sein, oder?
Dann folgender Vorschlag:
Im Admin-Bereich unter "Styles" eine generelle Abfrage: "Sollen ggf. vorhandene eigene Texte benutzt werden?"
Und dann in den lang-Datei:
Code: Select all
if ($serendipity["eigeneTexte"]) {
$probelang = dirname(__FILE__) . '/../../templates/' . $serendipity['template'] . '/UTF-8/my_lang_' . $serendipity['lang'] . '.inc.php';
if (file_exists($probelang)) {
include $probelang;
}
}
Wäre das ein gangbarer Kompromiß?