Locale-Konzept

Da es immer wieder zu Fragen und Problemen führt, wird auf dieser Seite das SvxLink-locale-Konzept etwas genauer beschrieben. Der Hintergrund des locale-Konzeptes ist einerseits den Usern eine einfache Anpassung an die in der jeweiligen Landessprache üblichen Ausdrucksweise zu ermöglichen. Andererseits sollen diese userspezifischen Änderungen nicht bei Systemupdates jedes Mal neu überschrieben werden sondern natürlich auch erhalten bleiben. Es ist deshalb ungünstig die mitinstallierten tcl-Dateien nach den eigenen Bedürfnissen zu verändern, da diese Änderungen nach jedem Update wieder verloren gehen würden. Auch ein Sichern der tcl-Dateien und späteres Rücksichern ist ungünstig, da die neuen tcl-Dateien eventuell neue oder veränderte Prozeduren enthalten könnten, die dann durch die alten Einstellungen überschrieben würden.

Beim Start von SvxLink wird normalerweise vom Eventhandler zunächst die Datei events.tcl geladen, welche die anderen modul- und logikspezifischen tcl-Dateien nachlädt. Das passiert in der folgenden Reihenfolge (Stand 1/2012 für deutsche Umgebung):

1) /usr/share/svxlink/events.d/
2) /usr/share/svxlink/events.d/local/
3) /usr/share/svxlink/sounds/de_DE/events.d/
4) /usr/share/svxlink/sounds/de_DE/events.d/local/
5) /usr/share/svxlink/modules.d/

Wenn man also eine tcl-Systemfunktion mit einer eigenen Funktion überschreiben möchte um z.B. die Ansage der Uhrzeit an die deutsche Sprechweise anzupassen, so erstellt man jeweils in den zugehörigen local-Verzeichnissen eine beliebige tcl-Datei, definiert darin zunächst den Namespace und innerhalb dieses die eigene Funktion. Da diese eigene Datei im local-Verzeichnis NACH den System-tcl’s gelesen wird, werden die System-tcl-Funktionen durch die selbstdefinierten Funktionen überschrieben.

Hier mal Beispiel für die Änderung des roger beeps, dieser wird in der Datei Logic.tcl generiert. Im Beispiel soll die Tonhöhe von 440Hz auf 800Hz verändert werden:

1) Erstellen Sie eine Datei beep.tcl mit folgendem Inhalt:

namespace eval Logic {
#
# Executed when the squelch just have closed and the RGR_SOUND_DELAY timer has
# expired.
#
proc send_rgr_sound {} {
  playTone 800 80 50;
  playSilence 50;
  }
}

2) Speichern Sie diese Datei in dem Verzeichnis /usr/share/svxlink/sounds/de_DE/events.d/local/ ab. Starten Sie SvxLink neu, damit die neuen Einstellungen geladen werden können.