[Vienna-pm] Lokalisierung

Maros Kollar maros at k-1.com
Wed Sep 6 01:36:01 PDT 2006


Hallo Vienna.pm!
Ich bastle gerade an einer größeren Applikation und mich quält schon
seit zwei Tagen das Thema Lokalisierung: Wie designe ich meine Klassen
im Hinblick auf L10N am besten?

Folgende Ausgangslage:
- Ich habe eine Basisklassevon (nennen wir sie 'BASE') der sich beliebig
viele Applikationsklassen (nennen wir sie 'MYAPPLICATION') ableiten.
- Zusätzlich zur Basisklasse habe ich eine Requestklasse (BASE::Request)
welche für jeden Request ein Objekt erstellt, in welchem die aktuelle
Sprache gespeichert wird. Analog zur Basisklasse gibt es für jede
Applikation eine abgeleitete Requestklasse (MYAPPLICATION::Request).
Jeder Request kann eine andere Sprache haben.

Folgende Struktur für die L10N habe ich mir überlegt:
- Eine globale Lokalisierungsklasse (sprachunabhängig) mit allen
Methoden (BASE::L10N)
- Eine globale Klasse pro Sprache (in der alle Übersetzungen stehen) die
von der globalen Lokalisierungsklasse erbt (z.B: BASE::L10N::de)
- Eine abgeleitete Klasse pro Sprache und Applikation (in der eigene
Übersetzungen stehen, bzw. die globalen Übersetzungen überladen werden
können) (z.B: MYAPPLICATION::L10N::de)

So weit so gut, jedoch stellt sich für mich das Problem wie ich die
Übersetzungs-Methode aufrufe.

MYAPPLICATION::L10N::DE->translate('string');
Ich mag ja nicht überall in den hintersten Winkel den Namen der
Applikationklasse und die gewählte Sprache durch reichen müssen.

BASE::L10N->translate('string');
oder:
use BASE::L10N qw(translate);
translate('string');
So schon eher. Aber wie weiß die BASE::L10N Klasse welche Sprache und
Applikationsklasse sie nehmen soll?

Bisher habe ich die aktuell Sprache/Applikation in eine Klassenvariable
in BASE::L10N geschrieben, aber das halte ich für ein bisserl gefährlich
(wg. Mod_perl) und zudem für unelegant (diese Information hat imho  in
einer globalen Klasse nichts verloren)

Habt  Ihr irgendwelche Vorschläge wie man die Aufrufmethode oder gar die
ganze Struktur besser gestalten kann, oder passt dass eh so wie es ist?
Hat jemand mit so etwas schon Erfahrung?
Bin für jeden sachdienlichen Hinweis dankbar

Lg
Maroš







More information about the Vienna-pm mailing list