=========== jarn.jsi18n =========== `jarn.jsi18n `_ bietet eine i18n-Infrastruktur für Javascripts in Plone. Im Einzelnen bietet es - das einfache Laden von ``gettext``-Katalogen aus Plone - Message Factories, die denen in Python sehr ähnlich sind - die Verweundung von *local storage* moderner Browser um das wiederholte Laden der *Message Cataologs* zu vermeiden. Installation und Aktivierung ============================ Ihr Paket sollte abhängen von ``jarn.jsi18n``. Hierzu wird in der ``setup.py``-Datei unter ``install_requires`` folgendes eingetragen:: install_requires=[ 'setuptools', 'jarn.jsi18n' ], Für die Aktivierung auf der Plone-Site wird es noch in die ``profiles/default/metadata.xml`` eingetragen:: ... ... profile-jarn.jsi18n:default ``MessageFactory`` ================== Zum Instanziieren und Verwenden Um einer ``MessageFactory`` muss der ``ì18n``-Katalog geladen werden. Dies kann z.B. so geschehen:: $(document).ready(function () { jarn.i18n.loadCatalog('plone', 'de'); _ = jarn.i18n.MessageFactory('plone') }); Der zweite Parameter in ``loadCatalog`` spezifiziert die Sprache. Diese Angabe ist optional wenn das ``lang``-Attribut im HTML-Tag verwendet wird. Übersetzungen ============= Nachdem wir nun eine *Message Factory* haben, können wir auch Zeichenketten übersetzen:: > _('contribute'); hinzufügen oder mit Keyword-Parametern:: > _('Groups are: ${names}', {names: 'staff'}) "Gruppen sind: Mitarbeiter" Ggf. können auch mehrere Kataloge oder mehrere Sprachen für denselben Katalog geladen und instanziiert werden, z.B.:: > jarn.i18n.loadCatalog('plone', 'en'); > _en = jarn.i18n.MessageFactory('plone', 'en'); > _en('Contributor'); "Contributor" Caching ======= Sofern der Browser *local storage* unterstützt, werden die Kataloge lokal gespeichert. Somit lässt sich vermeiden, dass nicht jedesmal ein Ajax-Request ausgelöst wird um den Katalog erneut zu laden. Der gespeicherte Katalog ist üblicherweise für 24 Stunden gültig. Die Lebensdauer kann ggf. geändert werden mit ``jarn.i18n.setTTL(86400000)`` wobei der Wert in Millesekunden angegeben wird.