Mehrsprachigkeit_Verzeichnisstruktur

Guite edited this page Nov 15, 2014 · 1 revision

== Verzeichnisstruktur ==

'''Kurzbeschreibung:''' Zikula ist ein modulares System, weswegen die meisten Ausgaben von Modulen stammen - außerdem gibt es Augaben von Themes und einige von Core. Zum Beispiel gibt DBUtil verschiedene Fehlermeldungen aus.

Gettext arbeitet mit Katalogen, in denen die Ausgaben organisiert sind. Für jeden dieser Kataloge gibt es einen spezifischen Wirkungsbereich - in Zikula gibt es 3 Arten von Wirkungsbereichen:

{| border=1 class="wikitable" !'''System-Teil''' !'''Text Domain''' !'''Beispiel''' !'''Pfade''' !'''Dateiname''' |- | module | MODULNAME | News, EZComments, Dizkus | ''modules/MODULNAME/locale/SPRACHE/LC_MESSAGES/'' | z.B. module_ezcomments.mo |- | theme | THEMENAME | andreas08, seabreeze, rss | ''themes/THEMENAME/locale/SPRACHE/LC_MESSAGES/'' | z.B. theme_andreas08.mo |- | core | zikula | - | ''locale//LC_MESSAGES/'' | zikula.mo |}

=== Vorwort ===

Gettext-Module (auch Themes) verfügen nun über das Verzeichnis /locale. Darin ist eine Datei im Format module_foo.pot enthalten. Diese POT-Datei ist quasi ein Extrakt aller unübersetzten Gettext-Zeichenketten des Moduls. Man kann es grob mit den Inhalten der Dateien aus dem /pnlang-Verzeichnis vergleichen. Die Datei dient als Schablone für Übersetzungen in andere Sprachen.

Die Übersetzungen des Cores befinden sich im Verzeichnis /locale und liegen in folgender Struktur vor. Im folgenden Beispiel gehen wir von einer deutschen Übersetzung mit dem Sprachcode" aus.

==== Core ==== */locale */locale/zikula.pot */locale/de/locale.ini */locale/de/LC_MESSAGES/zikula.po */locale/de/LC_MESSAGES/zikula.mo

'''Erklärung der unterschiedlichen Dateitypen'''
*zikula.pot - Eine Vorlage aller unübersetzeten Zeichenketten *locale.ini - beinhaltet Informationen über die entsprechende Lokalisierung (Währung, Tausendertrennzeichen, Wochenbeginn, etc.) *zikula.po - die übersetzte Datei *zikula.mo - kompilierte Version der übersetzten Datei (wird von Zikula genutzt)

Die Dateien für die Core-Übersetzungen haben alle die gleichen Dateinamen: zikula.pot zikula.po zikula.mo

==== Module ==== Die Übersetzungen für Module liegen in einem Unterverzeichnis namens "locale" innerhalb des Modulverzeichnisses. Die Dateinamen beinhaltet das Präfix "module_" und sind komplett in Kleinschreibweise betitelt.

'''Beispiel am Modul "Foo"''' *Foo/locale/module_foo.pot *Foo/locale/de/LC_MESSAGES/module_foo.po *Foo/locale/de/LC_MESSAGES/module_foo.mo

==== Themes ==== Innerhalb von Themes werden die Sprachdateien auch in einem Unterverzeichnis namens "locale" gespeichert. Die Dateinamen müssen klein geschrieben und mit dem Präfix "theme_" verstehen werden.

'''Beispiel am Theme "Bar"''' *Bar/locale/theme_bar.pot *Bar/locale/de/LC_MESSAGES/theme_bar.po *Bar/locale/de/LC_MESSAGES/theme_bar.mo

=== Überschreiben von Übersetzungen === Vorhandene Übersetzungen können überschrieben und somit individualisiert werden, indem im Verzeichnis /config/locale/ eine, dem folgenden Beispiel entsprechende, Struktur angelegt wird. Hier kann auch eine Kopie der sprachabhängigen "locale.ini" vorhanden sein, falls die vorhandenen Einstellungen geändert werden sollen.

Hier können sämtliche .PO/.MO-Dateien aus Core-, Modul- oder Themes vorhanden sein. Folgend ein Beispiel für die deutschen Sprache ("de"), bei der die Übersetzungen aus Core und dem Modul "Foo" überschrieben werden.

*config/locale *config/locale/de/locale.ini *config/locale/de/LC_MESSAGES/zikula.po *config/locale/de/LC_MESSAGES/zikula.mo *config/locale/de/LC_MESSAGES/module_foo.po *config/locale/de/LC_MESSAGES/module_foo.mo

Die Dateien können relativ einfach mit einem Tool, wie beispielsweise POEdit, bearbeitet werden und in veränderter Form unter /config/locale abgespeichert werden.

=== Installation der Übersetzungen === Nach der Übersetzung kannst Du Deine Arbeit als .mo-Datei abspeichern: *''modules/MODULNAME/locale/SPRACHE/LC_MESSAGES/MODULNAME.mo''

In diesem Fall ist "SPRACHE" mindestens ein 2-stelliger Ländercode nach [http://en.wikipedia.org/wiki/ISO_639-1 ISO 639-1]: *''de'' = Deutsch Es gehen aber auch genauere Definitionen der Sprache: *''de_DE'' = Deutsch / Deutschland *''de_AT'' = Deutsch / Österreich *''en_US'' = Englisch / USA Und sogar die Codierung lässt sich integrieren: *''de_DE.UTF-8'' = Deutsch / Österreich / /UTF-8 kodiert Gettext sucht dann vom Speziellen (''de_DE.UTF-8'') zum Allgemeinen (''de'') nach passenden Sprachdateien. Wenn Du also Deine Site auf ''de_DE.UTF-8'' eingestellt hast und es das für Modul-X nicht gibt, sucht gettext nach ''de_DE'' und wenn es das nicht gibt nach ''de''.

Neben dem Standard-Pfad ''modules/MODULNAME/locale/SPRACHE/LC_MESSAGES/'' kannst Du die Übersetzungen auch in ''/config/locale/module/News/de/LC_MESSAGES/'' ablegen, um die mitgelieferten im Modulverzeichnis zu überschreiben.

'''Achtung:''' *In dem Sprachverzeichnis muss es ein Verzeichnis LC_MESSAGES gehen, in dem die .mo-Dateien liegen!

'''Beispiel:'''

Zusammenfassend kann man sagen, dass die Übersetzung eines Modul in einer Datei liegt: *''modules/example/locale/de/LC_MESSAGES/example.mo''

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.