Eigene Sprachelemente integrieren

Eigene Sprachelemente integrieren

von Gisela Hillenbrand -
Anzahl Antworten: 24
Nutzerbild von Deutsche Moodle Übersetzer Nutzerbild von Translators
Hallo,

 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
Mittelwert:  -
Als Antwort auf Gisela Hillenbrand

Re: Eigene Sprachelemente integrieren

von Dag Klimas -
Nutzerbild von Besonders aktive Moodler Nutzerbild von Deutsche Moodle Übersetzer Nutzerbild von Translators
Genau vor diesem Thema stand ich die Tage auch. Den Lösungsansatz habe ich auch, nur bin ich kein Programmierer (habe hohe Achtung vor diesen, wenn sie Qualität liefern).

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 zwinkernd) Dann hätte Ralf Hilgenstock weniger Aufwand  zwinkernd)

Für Programmierer/innen, die sich dieser Aufgabe stellen wollen, stehe ich gern zur Verfügung: info@aronline.de

Dag aus Berlin
Als Antwort auf Dag Klimas

Re: Eigene Sprachelemente integrieren

von Gisela Hillenbrand -
Nutzerbild von Deutsche Moodle Übersetzer Nutzerbild von Translators
Hallo Dag,

hab die Vorgehensweise nicht verstanden: Wo wir der Originaltext eingelesen? Wo ist die Zusatzspalte? Und wo importiere ich eine neue Sprachdatei?

Grüße, Gisela
Als Antwort auf Gisela Hillenbrand

Re: Eigene Sprachelemente integrieren

von Marcus Schubert -
Hallo Gisela,

ich glaube, das war nur ein Gedankenspiel von Dag winken

Vielleicht schafft es irgendjemand das zu programmieren.

Marcus
Als Antwort auf Gisela Hillenbrand

Re: Eigene Sprachelemente integrieren

von Dag Klimas -
Nutzerbild von Besonders aktive Moodler Nutzerbild von Deutsche Moodle Übersetzer Nutzerbild von Translators
Hallo Gisela,

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
Als Antwort auf Gisela Hillenbrand

Re: Eigene Sprachelemente integrieren

von Andreas Grabs -
Nutzerbild von Besonders aktive Moodler Nutzerbild von Entwickler
Hallo,
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.
Als Antwort auf Andreas Grabs

Re: Eigene Sprachelemente integrieren

von Ralf Hilgenstock -
Nutzerbild von Besonders aktive Moodler Nutzerbild von Deutsche Moodle Übersetzer Nutzerbild von Entwickler Nutzerbild von Moodle Partner Nutzerbild von Translators
Andreas,
das verhindert nicht das Überschreiben beim Update. Dazu gibt es andere lösungen. Siehe unser Angebot.
Ralf.
Als Antwort auf Ralf Hilgenstock

Re: Eigene Sprachelemente integrieren

von André Krüger -

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.

Als Antwort auf Ralf Hilgenstock

Re: Eigene Sprachelemente integrieren

von Andreas Grabs -
Nutzerbild von Besonders aktive Moodler Nutzerbild von Entwickler
Wenn die "include"-Anweisung im Standard-Sprachpaket integriert wäre, dann bräuchte an den Sprachdateien selbst nichts mehr geändert werden. Die individuellen Änderungen wären dann in den extra Dateien (<sprachdatei>.user.php), die einfach nur nach einem Update von Moodle in das "lang/<land>"-Verzeichnis kopiert werden müssen. Das ist dann nur noch ein Arbeitsschritt. Im Vergleich zum Editieren eine enorme Erleichterung.
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')
include('moodle.user.php');
?>

Beispiel "lang/de/moodle.user.php"

<?php
$string['zippingbackup'] = 'Komprimieres Backup';
?>



Als Antwort auf Andreas Grabs

Re: Eigene Sprachelemente integrieren

von Gisela Hillenbrand -
Nutzerbild von Deutsche Moodle Übersetzer Nutzerbild von Translators
Hallo Andreas,

leider funktioniert in den Sprach-Dateien kein include() traurig
Bis jetzt haben wir nur wenige Sprachanpassungen, wenn es mehr wird, werden wir vielleicht auf das Angebot von Ralf Hilgenstock zurückgreifen zwinkernd

Gisela
Als Antwort auf Gisela Hillenbrand

Re: Eigene Sprachelemente integrieren

von Andreas Grabs -
Nutzerbild von Besonders aktive Moodler Nutzerbild von Entwickler
Hallo 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.
Als Antwort auf Andreas Grabs

Re: Eigene Sprachelemente integrieren

von Gisela Hillenbrand -
Nutzerbild von Deutsche Moodle Übersetzer Nutzerbild von Translators
Super, vielen Dank. Es hat geklappt und ist in jedem Fall eine Erleichterung, auch wenn man beim update trotzdem noch mal an die Sprachpakete ran muss, so weiss man wenigstens genau, wo lächelnd

Schöne Grüße,

Gisela
Als Antwort auf Andreas Grabs

Re: Eigene Sprachelemente integrieren

von Andreas Grabs -
Nutzerbild von Besonders aktive Moodler Nutzerbild von Entwickler
Hallo 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.
Als Antwort auf Andreas Grabs

Re: Eigene Sprachelemente integrieren

von André Krüger -

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é

      

Als Antwort auf Andreas Grabs

Re: Eigene Sprachelemente integrieren

von Gisela Hillenbrand -
Nutzerbild von Deutsche Moodle Übersetzer Nutzerbild von Translators
Hallo Andreas,

und wo wird __FILE__ gesetzt?

Gisela
Als Antwort auf Gisela Hillenbrand

Re: Eigene Sprachelemente integrieren

von Andreas Grabs -
Nutzerbild von Besonders aktive Moodler Nutzerbild von Entwickler
__FILE__ ist eine Konstante von PHP und liefert immer den jeweiligen Dateinamen einschließlich des kompletten Pfades. Diese Konstante muss nicht gesetzt werden.
Ich habe das jetzt mal im Devoloper-Forum angesprochen (ich hoffe, dass mein Englisch ausreichend war zwinkernd ). Mal sehen, vieleicht wird's ja mal zum Standard.
Als Antwort auf Andreas Grabs

Re: Eigene Sprachelemente integrieren

von Gisela Hillenbrand -
Nutzerbild von Deutsche Moodle Übersetzer Nutzerbild von Translators
... ah, jetzt hab ich es verstanden - __FILE__ liefert den Dateinamen der Datei, in der __FILE__ verwendet wird (also z.B.bei der Standardsprachbibliothek moodle.php), und deshalb muss man die Endung .user auch hinten dran hängen.
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


Als Antwort auf Gisela Hillenbrand

Re: Eigene Sprachelemente integrieren

von Andreas Grabs -
Nutzerbild von Besonders aktive Moodler Nutzerbild von Entwickler
Die einfachste Möglichkeit, die mir dazu einfällt wäre, dass anstelle von ".user" einfach ".user.php" angehängt wird. Damit ist es dann wieder eine php-Datei.
Als Antwort auf Andreas Grabs

Re: Eigene Sprachelemente integrieren

von Gisela Hillenbrand -
Nutzerbild von Deutsche Moodle Übersetzer Nutzerbild von Translators
... komisch, ich dächte, dass hätte ich gestern schon (vergebens) probiert.

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
Als Antwort auf Gisela Hillenbrand

Re: Eigene Sprachelemente integrieren

von Andreas Grabs -
Nutzerbild von Besonders aktive Moodler Nutzerbild von Entwickler
Hallo 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.

Als Antwort auf Andreas Grabs

Re: Eigene Sprachelemente integrieren

von André Krüger -

Hallo Andreas,

vielen Dank für diese Mitteilung. Hier habe ich offensichtlich etwas verpasst, denn ich habe ebenfalls nach einer besseren Lösung gesucht.

Als Antwort auf Andreas Grabs

Re: Eigene Sprachelemente integrieren

von Gisela Hillenbrand -
Nutzerbild von Deutsche Moodle Übersetzer Nutzerbild von Translators
Hallo Andreas,

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
Als Antwort auf Gisela Hillenbrand

Re: Eigene Sprachelemente integrieren

von Andreas Grabs -
Nutzerbild von Besonders aktive Moodler Nutzerbild von Entwickler
Also bei mir unter Linux läuft alles normal. Die Windowsversion habe ich nicht installiert.
Du findest aber in der Sprachdatei "calendar.php" die deutschen Monatsnamen.

Ich wünsche dir und allen anderen ein schönes Osterfest.
Andreas