Durch den Fehler „
Nutzungsbestimmungen in den verschiedenen EAs“ ist mir etwas aufgefallen, was doch zumindest für die Entwickler unter euch sehr interessant sein dürfte.
Hier steckte weniger ein Logikfehler dahinter, als einfach eine Unachtsamkeit. Sprachvariablen werden aktuell für eine Endanwendung und nicht für ein Paket gespeichert, braucht man diese nun in einer anderen Endanwendung, müssen diese erneut erstellt werden. So ein Schönheitsfehler ist aber bei Paketen wie
Nutzungsbestimmungen oder auch bei der
Hilfe nicht gerade gewünscht.
Die Lösung hinter diesem Problem ist aber relativ einfach. Dem
LanguageEditor wird in der Methode
updateItems die
packageID des Paketes übergeben. Dafür besitzt das WCF die Methode
getPackageID.
Folgender Code zeigt, wie es gemacht wird.
|
PHP Source code
|
1
2
3
|
$language = new LanguageEditor($languageID);
$language->updateItems(array('wcf.test.test' => $name), 0,
WCF::getPackageID('paket'));
|
Jetzt besteht nur noch das Problem, dass wir die Sprache der einzelnen Endanwendungen aktualisieren müssen, da reicht ein Aufruf der Funktionen
deleteLanguageFiles und
deleteCompiledTemplates , mit der entsprechenden
languageID und der Kategorie.
|
PHP Source code
|
1
2
|
LanguageEditor::deleteLanguageFiles($languageID, 'wcf.test');
LanguageEditor::deleteCompiledTemplates();
|
Zusammen sieht es nun so aus:
|
PHP Source code
|
1
2
3
4
5
|
$language = new LanguageEditor($languageID);
$language->updateItems(array('wcf.test.test' => $name), 0,
WCF::getPackageID('paket'));
LanguageEditor::deleteLanguageFiles($languageID, 'wcf.test');
LanguageEditor::deleteCompiledTemplates();
|
Man sollte dabei beachten, dass diese Art der Speicherung von Sprachvariablen nur in einem einzigartigen WCF-Paket erfolgen sollte, da es sonst zu anderen Fehlern kommen könnte.