Der Siegfried Locale Editor kann mit einem Doppelklick auf das Programmicon gestartet. Ein Doppelklick auf vorhandene "locale"-Dateien startet auch den Editor. Hierbei wird automatisch die "locale"-Datei in den Editierbereich geladen.
Der Editor kann auch über das Terminal gestartet werden mit folgendem Aufruf:
LocaleEditor <RETURN>
Zur einwandfreien Funktion der Anwendung benötigt der Siegfried Locale Editor die Library "sfliblocale.so" im lokalen "lib" Verzeichnis oder im Verzeichnis "\boot\home\config\lib". Ist die Library nicht vorhanden wird der Startvorgang mit der Fehlermeldung "Could not open "LocaleEditor" (Missing library: sfliblocale.so)" ab.
"locale"-Dateien enthalten hauptsächlich Textdaten einer Anwendung. Es werden aber auch noch zusätzliche Daten verwaltet:
Diese drei Angaben werden oberhalb des Editierbereich in die entsprechenden Felder ("Language", "Version" und "Application ID") eingegeben bzw. bei bestehenden Dateien editiert.
Der Name der Sprache (z.B. "Deutsch", "English"), ist der Name der bei der Auswertung der Sprache einer "locale"-Datei zurückgeliefert wird und sollte sinnvoller weise die Sprache sein in dem der Text gespeichert ist :-). Der Dateiname einer "locale"-Datei ist völlig losgelöst von seinem Inhalt. Prinzipiell könnte eine "locale"-Datei für schwedische Texte "Tomate.locale" oder "Suaheli.locale" benannt werden, sinnvoll ist dies aber nicht! Normalerweise wird man eine "locale"-Datei immer nach ihrem sprachlichen Inhalt benennen, ggf. mit Bezug auf die Applikation die die Datei nutzt (z.B. "SFImageDeutsch.locale").
Die Anwendungs-ID (Application ID) ist eine eindeutige Kennung für das Programm das "locale"-Dateien nutzt. Damit kann die Anwendung bestimmen, ob die zu nutzende "locale"-Datei zugehörig ist. Nichts bringt seltsamer Ergebnisse auf den Bildschirm als eine "locale"-Datei die garnicht zu der Anwendung gehört die sie nutzt! :-) Die Anwendungs-ID wird vom Aufsteller der Anwendung vergeben. Alle "locale"-Dateien einer Anwendung müssen über dieselbe ID verfügen, sonst werden sie ignoriert. Wie sich die ID aufbaut ist dem Aufsteller überlassen, er kann eine beliebige Zeichenkette verwenden. Als sinnvoll erweist es sich eine Kennung zu verwenden die einen Bezug auf die jeweilige Anwendung hat. Bei dem Siegfried Locale Editor wir z.B. "siegfried localeeditor locale" als ID verwendet.
Hinweis für Entwickler: es spricht nichts dagegen als ID die Signatur des BApplication-Objekts der Anwendung zu verwenden, da dies hinreichend eindeutig ist.
Der Editierbereich nimmt innerhalb des Editors den grössten Bereich ein und ist das zentrale Element des Siegfried Locale Editors. Hier werden alle Texte verwaltet die innerhalb einer Anwendung lokalisiert werden sollen (im Normalfall sind dies alle Texte die in einer Anwendung vorkommen). Die Texte organisieren sich zeilenweise und werden durch ein <RETURN> voneinander getrennt. Die Reihenfolge der Texte ist zwingend! Die Identifizierung der Texte von der Anwendungsseite mittels der "sfliblocale.so" Library erfolgt über die Zeilennummer des Textes. In Prinzip baut sich die Textverwaltung wie eine Tabelle auf: jede Tabellenzeile enthält einen Text für das Anwendungsprogramm. Die Anwendung fordert einen Text über die Library mittels der Tabellenzeile an. Wird z.B. eine 10 als Tabellenzeile an die Library übergeben, wird immer der Text der Tabellenzeile 10 zurückgeliefert, egal was in der Zeile steht.
Texte die länger sind als die Breite des Editorfensters werden automatisch umgebrochen. Die Umbruchstelle wird nicht mit einem <RETURN> versehen. Es handelt sich also bei jeder zu lokalisieremder Textzeile um Fließtext. Leerzeilen werden beim Speichern der Daten ignoriert. Zusätzlich können Kommentarzeilen eingefügt werden. Eine Kommentarzeile wird mit einem Semikolon " ; " am Anfang markiert. Das Ende einer Kommentarzeile wird mit einem <RETURN> begrenzt. Kommentarzeilen werden in der Farbe rot dargestellt. WICHTIG: Kommentarzeilen werden nicht in den "locale"-Datei gespeichert und sind somit temporär!
Werden bestehende "locale"-Dateien erweitert, geschieht dies immer dadurch das neue Texte als neue Zeile am Ende des Textbereichs angefügt werden. Ein Hinzufügen von Zeilen inmitten bestehender Text führt zu einem Bruch der Abwärtskompatibilität und fällt somit ganz klar in die Kategorie "SF_DONT_DO_THAT"! :-)
Innerhalb des Editierbereich stehen dem Anwender wie gewohnt die Standard- Editiermöglichkeiten "Cut/Copy/Paste/Undo" zur Verfügung. Allerdings sollte mit den Funktionen vorsichtig umgegangen werden. Unbeabsichtigtes Entfernen und/oder Einfügen von Zeilen führt zu einer Verschiebung der Zeilen, was bei einer späteren Nutzung zu recht seltsamen Ergebnissen führt, wenn Text an der falschen Stelle ausgegeben werden.
Eine Referenz ist eine Hilfe für den Bearbeiter von "locale"-Dateien. Es handelt sich dabei um automatisch erzeugte Kommentarzeilen. Die entweder aus den Daten einer existierenden "locale"-Datei bestehen oder direkt aus einer Anwendung ermittelt werden die die "sfliblocale.so" Library unterstützt. Hierbei wird jede Textzeile in eine zweizeilige Kommentarzeile umgewandelt:
; #ID1:
; Erste Textzeile
; #ID2:
; Zweite Textzeile
; #ID3:
; Dritte Textzeile
:
:
:
; #IDn:
; n-te Textzeile
Die erste Kommentarzeile gibt die Position innerhalb der Tabelle an und die zweite Zeile enthält den Text der Zeile. Das ganze dient als Vereinfachung bzw. Vorlage zum Erstellen/Erweitern von "locale"-Dateien. Soll eine die "locale"-Datei für eine neue Sprache erzeugt werden ist in den jeweiligen Leerzeilen nur noch die entsprechenden Übersetzung einzutragen. Bei bestehenden "locale"-Dateien sieht man darüber welche Texte noch hinzugefügt werden müssen:
; #ID1:
; Erste Textzeile
First text line
; #ID2:
; Zweite Textzeile
Second text line
; #ID3:
; Dritte Textzeile
Third text line
:
:
:
; #IDn-1:
; (n-1)te Textzeile
; #IDn:
; n-te Textzeile
Zum Laden einer Referenz stehen zwei Möglichkeiten zur Verfügung:
War schon eine Referenz geladen wird diese durch das erneute Einladen ersetzt. Bestehende übersetzte Texte werden dabei nicht gelöscht. Das Laden einer Referenz fügt sich nahtlos in bestehende Texte ein.
Eine neue "locale"-Datei wird entweder aus einer schon bestehende "locale"-Datei als Vorlage erzeugt (über "Load" in der Referenz-Zeile) oder es werden die Textdaten direkt aus einer Anwendung geladen. In beiden Fällen steht der Text als Referenz-Kommentar zur Verfügung. Vorzuziehen ist eigentlich immer der zweite Weg über das direkte Einladen der Referenz per Scripting. Hierbei ist immer sichergestellt das auch wirklich alle Texte als Vorlage vorhanden sind. Wird eine bestehende "locale"- Datei genutzt, kann es unter Umständen möglich sein das es sich bei dieser Datei um eine älter Version handelt die noch nicht alle Text beinhaltet (wenn z.B. eine Anwendung erweitert wurde und die "locale"-Dateien noch nicht angepasst wurden).
Das Erzeugen einer neuen "locale"-Datei teilt sich in 5 Schritte:
Das Editieren einer bestehenden "locale"-Datei ist dann sinnvoll wenn z.B. Schreibfehler in der Datei entdeckt wurden oder wenn die Anwendung um neue Texte erweitert wurde.
Das Laden einer "locale"-Datei zum Editieren erfolgt über den "Load"-Button der "Sprache/Language" Zeile. Es öffnet sich ein Dateiauswahlfenster in den Pfad und Dateiname ausgewählt werden können. Wird eine "locale"-Datei mit "OK" zum Laden bestätigt wird der Text in den Editierbereich geladen und die Felder "Sprache/Language", "Version", "Applikations-ID/Application ID" entsprechend gesetzt.
Es ist möglich nachträglich eine Referenz zu der geladen Datei anzuzeigen. Dazu ist einfach über "Load" oder das "Application" PopUp-Menü eine entsprechende Referenz zu wählen. Die Referenzdaten werden dann automatisch in die Textdaten eingefügt. Es übrigens gleichgültig ob zuerst die Textdaten und dann die Referenz geladen wird oder umgekehrt. In jedem Fall werden die Daten entsprechend eingefügt.
Um immer den aktuellen Stand der Textdaten zu erhalten ist das Einladen der Referenz über das PopUp-Menü vorzuziehen. Ein Scrollen zum Ende des Editierbereichs zeigt dann ob neue Texte hinzugefügt werden müssen oder nicht.