wir haben bei unserer Moodle-Installation an der FH Offenburg einige Änderungen und Erweiterungen in diversen Sprachbibliotheken in lang/de und lang/en vorgenommen.
Gibt es einen Trick , das ganze so zu gestalten, das man bei einem update nicht alte und neue files mergen muss - bisher haben wir die Änderungen ans Dateiende angehängt, damit sie wenigstens leicht zu finden sind.
Danke und Grüße,
Gisela
M. E. müsste folgendes lösbar sein:
Einlesen des Originaltextes, darstellen in Tabellenform. In einer Zusatzspalte trage ich meine Änderungen ein. Das Programm verwaltet nun an Hand des Originalbegriffes (englischer Platzhalter) den Standardtext und meinen Text. Mit einem Klick wird daraus meine individuelle Sprachdatei (wo keine Änderung ist, nehme Originaltext).
Kommt nun eine neue Sprachtabelle, lasse ich diese Importieren und kann über meine Anpassungen gehen. Klick und meine neue Sprachtabelle ist fertig.
Klar ist, dass es eine weitere Datei gibt
'Originalbegriff' zu meiner 'Änderung'
Schön wäre auch noch die Funktion: Tipp- / Ausdrucksfehler als E-Mail o. ä. melden ) Dann hätte Ralf Hilgenstock weniger Aufwand )
Für Programmierer/innen, die sich dieser Aufgabe stellen wollen, stehe ich gern zur Verfügung: info@aronline.de
Dag aus Berlin
hab die Vorgehensweise nicht verstanden: Wo wir der Originaltext eingelesen? Wo ist die Zusatzspalte? Und wo importiere ich eine neue Sprachdatei?
Grüße, Gisela
ich glaube, das war nur ein Gedankenspiel von Dag
Vielleicht schafft es irgendjemand das zu programmieren.
Marcus
bitte entschuldige, dass ich nicht sauber kommuniziert habe. Ich saß die Tage vor dem gleichen Problem und wollte deinen Beitrag als Impuls nehmen. So ist die 'Ideenbeschreibung' bitte zu verstehen.
Grüße
Dag
Wir bieten hierzu einen Service an:
ich könnte mir vorstellen, dass standardmäßig in jeder Sprachdatei an das Ende eine Anweisung in der Form:
if(file_exists('<sprachdatei>.user.php')
include('<sprachdatei>.user.php');
eingefügt wird.
Damit erhält jeder admin die Möglichkeit die Sprachdateien zu erweitern. Es muss dann lediglich die Datei '<sprachdatei>.user.php' mit den Sprachanpassungen in das entsprechende Verzeichnis kopiert werden. Ich weiß allerdings nicht um wieviel der Traffic steigen würde.
Vieleicht könnte ja so eine Änderung in die Standard-Sprachpakete eingearbeitet werden.
das verhindert nicht das Überschreiben beim Update. Dazu gibt es andere lösungen. Siehe unser Angebot.
Ralf.
Eine Möglichkeit ohne großen Aufwand besteht darin, das englische Verzeichnis der Sprachdateien zu nutzen und die eigenen Anpassungen im deutschen Bereich vorzunehmen. Dies geht natürlich nur, wenn man die englischen Sprachdateien nicht benötigt.
Konkret bedeutet dies:
- Standard deutsch im Verzeichnis ../lang/en speichern
- eigene Anpassungen normal in deutsch vornehmen
P.S: Damit scheidet diese Möglichkeit für Frau Hillebrand aus, da Sie ja Änderungen in ../lang/en und ../lang/de vornehmen möchte.
Hier mal ein Beispiel an der Datei "lang/de/moodle.php":
Beispiel "lang/de/moodle.php"
...
$string['yourself'] = 'selbst';
$string['yourteacher'] = 'Ihr $a';
$string['zippingbackup'] = 'Komprimiere Sicherung';
//include der individuellen Sprachergänzung
if(file_exists('moodle.user.php')
Beispiel "lang/de/moodle.user.php"
<?php
$string['zippingbackup'] = 'Komprimieres Backup';
?>
leider funktioniert in den Sprach-Dateien kein include()
Bis jetzt haben wir nur wenige Sprachanpassungen, wenn es mehr wird, werden wir vielleicht auf das Angebot von Ralf Hilgenstock zurückgreifen
Gisela
Damit der include-Befehl funktioniert, sollte möglichst der volle Pfad angegeben werden. Dies kannst du über eine moodle-Variable lösen.
Beispiel für forum.php (habe ich so getestet und hat funktioniert)
global $CFG;
if(file_exists($CFG->dirroot . '/lang/de/forum.user.php'))
{
include($CFG->dirroot . '/lang/de/forum.user.php');
}
Aber besser wäre es, wenn diese Erweiterung standardmäßig in allen Sprachdateien enthalten wäre. Denn ob du nun diese Anweisung oder deine Spracherweiterung einträgst, in jedem Fall muss du die Sprachdateien ändern, was natürlich nicht so gut ist.
Schöne Grüße,
Gisela
mir ist noch eine Verbesserung eingefallen. Damit kann in jeder Datei genau der gleiche Text stehen, was natürlich die Anpassung noch einfacher macht.
if(file_exists(__FILE__ . '.user'))
{
include(__FILE__ . '.user');
}
__FILE__ wird von PHP automatisch durch den Dateinamen (mit kompletten Pfad) ersetzt. Dieser Text ist jetzt allgemein und kann somit in jede Sprachdatei mit Copy/Paste integriert werden. Die user-Datei muss dann genauso wie die Sprachdatei heißen mit der Erweiterung ".user"
Beispiel für "forum.php" -> "forum.php.user"
Vieleicht kann das ja doch noch zum Standard werden. Wäre meiner Meinung nach nicht schlecht.
Hallo Andreas,
ich finde Deine Lösung sehr gut und denke, das Sie in den Standard aufgenommen werden kann. Ich würde vorschlagen, dass Du selbst einen entsprechenden Vorschlag im Developer- Forum unter Using Moodle machst und wir haben sicher schon bald eine Entscheidung.
Gruß André
und wo wird __FILE__ gesetzt?
Gisela
Ich habe das jetzt mal im Devoloper-Forum angesprochen (ich hoffe, dass mein Englisch ausreichend war ). Mal sehen, vieleicht wird's ja mal zum Standard.
Allerdings scheint es unter Windows so zu sein, dass die Datei moodle.php.user nicht mehr als PHP-Datei erkannt wird. Jedenfalls funktioniert
if (file_exists(__FILE__.'.user')) {
include(__FILE__.'.user');
}
unter Linux, aber nicht unter Windows. Damit kann ich leben, da unsere produktive Moodle-Installation unter Linux läuft, aber schön wäre natürlich eine einheitliche Lösung, auch für Windows.
Gisela
Jedenfalls klappt es jetzt mit der Endung .user.php auch unter Windows.
Nochmals vielen Dank, und vielleicht wird es ja zum Standard.
Schöne Ostern!
Gisela
ich habe mal das Problem in das Developerforum gestellt. Dabei habe ich erfahren, dass es bereits eine funktionieren Lösung für individuelle Sprachanpassungen gibt. Du brauchst also an den vorhandenen Sprachdateien keine Änderungen mehr durchführen.
Für jede Sprache kannst du im lang-Verzeichnis ein weiteres Sprachverzeichnis anlegen z.B. kannst du für "de" zusätzlich das Verzeichnis "de_neu" oder "de_standard" anlegen. Dort muss mindestens die Datei "moodle.php" vorhanden sein. In dieser Datei muss mindestens folgender Text stehen:
<?PHP
$string['parentlanguage'] = 'de';
$string['thislanguage'] = 'Deutsch-Standard';
?>
Als "parentlanguage" gibst du das Verzeichnis an, in dem die Haupt-Sprachdateien liegen. Mit "thislanguage" definierst du den anzuzeigenden Namen im Sprach-Menü.
Jetzt kannst du deine Sprachdateien erweitern indem du zum Beispiel im Verzeichnis "de_standard" eine Datei "forum.php" erstellst, in der nur die geänderten Attribute enthalten sind.
Nach jedem Upgrade von Moodle brauchst du jetzt nur noch das Verzeichnis "de_standard" mit deinen Änderungen in das lang-Verzeichnis kopieren. Der Rest funktioniert automatisch. Ich habe es probiert und es klappt super.
Hallo Andreas,
vielen Dank für diese Mitteilung. Hier habe ich offensichtlich etwas verpasst, denn ich habe ebenfalls nach einer besseren Lösung gesucht.
Also nochmal danke und schöne Ostergrüße,
Gisela
es funktioniert prima.
Einziges Mini-Problem: Unter Windows erscheinen dann die Monatsnamen im Kalender in englisch. Wenn ich auf normal Deutsch (de) umschalte, erscheinen sie in deutsch.
Bisher hab ich dieses Problem immer so behoben:
Unter Administration / Konfiguration / Variablen konfigurieren / locale musste man unter Windows "deu" eingeben, unter Linux "de_DE" - dann erschienen die Monatsnamen in der richtigen Sprache. Aber offenbar gibt es noch eine andere Schraube, an der man drehen muss. Allerdings hab ich in den Sprachpaketen keinen Hinweis gefunden, da tauchen Monatsnamen nirgends auf (im Gegensatz zu Wochentagen).
Vielleicht hat ja jemand noch einen Tipp dazu.
Gisela
Du findest aber in der Sprachdatei "calendar.php" die deutschen Monatsnamen.
Ich wünsche dir und allen anderen ein schönes Osterfest.
Andreas