XLIFF-Ex-Import für MetaModels

Warnung

Das Tool XLIFF-Ex-Import ist noch im Fundraising und wird erst nach Erreichen der Zielsumme von z.Z. 5.100,00 € frei geschaltet.
Eine Vorab-Installation über das „Early-Adopter-Programm“ möglich – siehe unten

Mit dem Tool XLIFF-Ex-Import können die Inhalte einer Contao-Installation für eine Übersetzung exportiert und wieder importiert werden. Neben den normalen Inhalten von Contao werden auch die mehrsprachigen Inhalte von MetaModels exportiert bzw. importiert.

Als Export wird eine XLIFF-Datei erzeugt, die von gängigen Übersetzungstools eingelesen werden kann. Zum Beispiel mit dem Tool Poedit. In der Zusammenarbeit mit Übersetzungsbüros ist XLIFF Standard.

Sind die Übersetzungen in die exportierte XLIFF-Datei eingepflegt, kann diese wieder importiert werden.

Der Export und Import erfolgt über Konsolenaufrufe - die Konfiguration über eine selbst zu erstellende YAML-Datei.

Aktuell werden folgende Module unterstützt:

  • Contao (Core)

  • MetaModels (Daten)

  • RockSolid Custom-Elements

Mehr zur weiteren Planung und Ausbau siehe unten

Early-Adopter-Programm

Das Projekt ist in Version 1.0 fertig aber aktuell noch nicht frei verfügbar. Die Refinanzierung erfolgt über ein „Early-Adopter-Programm“, d.h. man kann die Erweiterung(en) bei Zahlung einer Spende sofort einsetzen. Die Zahlung berechtigt zum Einsatz für ein Projekt. Rechtsansprüche jedweder Art sind nach Zahlung einer Spende ausgeschlossen.

Die Höhe der Spende sollte mindestens 350€*1 betragen.

Für die Spende wird eine Rechnung mit ausgewiesener MwSt. bzw. bei vorhandener EU-Tax-ID für das EU-Ausland in Netto erstellt.
Bei Interesse oder weiteren Fragen bitte eine E-Mail an info@e-spin.de

*1 Netto – ggf. zzgl. MwSt.

Installation per Contao-Manager oder Composer

Voraussetzungen für die Installation:

  • MetaModels core 2.1/2.2/2.3

  • Contao 4.4.x/4.9.x/4.13.x

Konfiguration

Nach der erfolgreichen Installation muss der Export und Import entsprechend der eigenen Vorgaben und Wünsche konfiguriert werden.

Zunächst wird ein Ordner /translations im Installationsverzeichnis von Contao anlegt. Dort ist die Ablage der Exportierten XLIFF-Dateien bzw. von dort werden diese wieder beim Import eingelesen.

Weiterhin ist im Projektordner der Contao Instalation eine Konfigurationsdatei .translation-jobs.yml anzulegen. Mit dieser Konfigurationsdatei wird festgelegt, was exportiert bzw. importiert werden soll - z.B. nur Contao oder nur MM oder beides - sowie werden hier einzelne Jobs definiert, die per Konsolenaufruf gestartet werden.

Somit ist die Konfigurationsdatei in die Bereiche dictionaries und jobs eingeteilt - die Parameter sind wie folgt (siehe auch Beispiel):

Bemerkung

wenn folgende Meldung beim composer update erscheint
No default map builder defined, please install an extension that provides „cyberspectrum_i18n.contao.default_map_builder“.
ist das ein Hinweis, dass eine Erweiterung wie Changelanguage o.ä. fehlt

dictionaries

  • * Quellenname: Bezeichnung für den Aufruf in Jobs bei source oder target oder bei Typ xliff ist das die Bezeichnung für die .xlf-Datei

  • type Typ: contao, metamodels, compound, memory oder xliff

  • name Name: Abhängig vom typ

    • contao: contao

    • metamodels: <table_name>

    • compound: * frei vergebbar

    • memory: * frei vergebbar

    • xliff: * frei vergebbar

Dictionaries vom Typ compound können wiederum vorhandene Dictionaries beinhalten und diese um weitere Quellen ergänzen - siehe Beispiel

jobs

  • * Jobname: Bezeichnung für den Aufruf auf der Konsole oder in einem anderen Job

  • type Typ: copy zum Kopieren der Übersetzungsdaten oder batch zum Aufruf/Zusammenfassen vorhandener Jobs

Typ copy:

  • source: Quellenbezeichnung aus Dictionaries

  • target: Zielbezeichnung aus Dictionaries

  • source_language: Sprachkürzel z.B. en, de für die Quellensprache

  • target_language: Sprachkürzel z.B. de, en für die Zielsprache

  • copy-source: Bestimmt das Verhalten beim Kopieren von Quelle zu Ziel

    • true (default): Quelle zu Ziel immer kopiert

    • if-empty: Quelle zu Ziel nur kopiert, wenn Ziel leer oder nicht vorhanden

    • false: es wird nichts kopiert

  • copy-target: Bestimmt das Verhalten beim Kopieren von Ziel zu Quelle

    • true (default): Ziel zu Quelle immer kopiert

    • if-empty: Ziel zu Quelle nur kopiert, wenn Quelle leer oder nicht vorhanden

    • false: es wird nichts kopiert

  • remove-obsolete: Bestimmt das Löschen eines Textknotens

    • false (default): es wird nichts gelöscht

    • true: der Textknoten wird gelöscht, wenn Quelle leer oder nicht mehr vorhanden

  • filter: Liste mit RegEx-Filtern auf die id im Knoten trans-unit zum Ausschließen von Inhalten

Type batch

  • jobs: Liste mit Jobbezeichnungen, die abgearbeitet werden sollen

Export

Der Export erfolgt über einen Konsolenaufruf mit einem Jobnamen als Parameter - z.B.

php vendor/bin/contao-console i18n:process export-all -c`pwd`/.translation-jobs.yml

Es kann aber auch eine einzelne Sprache exportiert werden, wenn ein entsprechender Job definiert wurde - z.B.

php vendor/bin/contao-console i18n:process export-en-ru -c`pwd`/.translation-jobs.yml

Mit dem Parameter --help werden alle Parameter ausgegeben z.B. der Verbose-Parameter (-v, -vv -vvv) für genauere weitere Informationen des Aufrufs oder --dry-run für einen „Trockenlauf“.

Import

Der Import erfolgt analog dem Export - z.B.

php vendor/bin/contao-console i18n:process import-all -c`pwd`/.translation-jobs.yml

oder

php vendor/bin/contao-console i18n:process import-en-ru -c`pwd`/.translation-jobs.yml

Debug

Es besteht die Möglichkeit, das Mapping der Übersetzung auf Probleme hin zu untersuchen. Aktuell steht ChangeLanguage als Mapping-Provider zur Verfügung.

Zum Debug wird der Aufruf mit den Parametern der Tabelle der Quellsprache sowie der Zielsprache aufgerufen. Über den Parameter --help kann ein Hilfetext ausgegeben werden.

Ein Debugaufruf kann z.B. wie folgt aussehen:

php vendor/bin/contao-console debug:i18n-map tl_article.tl_content en de

Es folgt eine tabellarische Auflistung des Mappings. Gegebenenfalls werden vorweg Hinweise auf Probleme ausgegeben wie z.B.

WARNING   [app] Article 17 (index: 0) has no fallback set, expect problems, I guess it is 13
["id" => 17,"index" => 0,"guessed" => 13,"msg_type" => "article_fallback_guess"]

Hier sollte man den Artikel mit der ID 17 im Backend aufsuchen und die Angabe des Fallbackartikels prüfen.

Beispiel

 1 dictionaries:
 2   contao_all:
 3     type: contao
 4     name: contao
 5
 6   combined-content:
 7     type: compound
 8     name: content
 9     dictionaries:
10       content: contao_all
11       my_staff_export:
12         type: metamodels
13         name: mm_staff
14       # Shorthand version: name as key
15       # mm_staff:
16       #   type: metamodels
17       mm_division:
18         type: metamodels
19       mm_projects:
20         type: metamodels
21
22   mmworkshop:
23     type: xliff
24
25 jobs:
26   ## Export
27
28   # EN => DE
29   export-en-de:
30     type: copy
31     source: combined-content
32     target: mmworkshop
33     source_language: en
34     target_language: de
35     copy-source: true
36     copy-target: if-empty
37     remove-obsolete: true
38     filter:
39       - /^content\.tl_article\.[0-9]+\.title$/
40       - /^content\.tl_article\.[0-9]+\.alias$/
41
42   # Export all.
43   export-all:
44     type: batch
45     jobs:
46       - export-en-de
47
48   ## Import
49
50   # EN => DE
51   import-en-de:
52     type: copy
53     source: mmworkshop
54     target: combined-content
55     source_language: en
56     target_language: de
57     copy-source: false
58     copy-target: true
59     remove-obsolete: false
60     filter:
61       - /^content\.tl_article\.[0-9]+\.title$/
62       - /^content\.tl_article\.[0-9]+\.alias$/
63
64   # Import all.
65   import-all:
66     type: batch
67     jobs:
68       - import-en-de
69
70   all:
71     type: batch
72     jobs:
73       - export-all
74       - import-all

Die Dictionaries mm_staff, mm_division und mm_projects sind die übersetzten MetaModels - aus mmworkshop wird der Dateiname mmworkshop.xlf gebildet. Mit den Jobnamen z.B. export-all oder import-all werden die Jobs auf der Konsole aufgerufen.

Eine exportierte XLIFF-Datei kann in einem XLIFF-Editor wie z.B. Poedit geöffnet und bearbeitet werden - siehe Screenshot:

img_poedit

Erweiterungsmöglichkeiten

Ausgabetypen

  • po

  • csv

  • xml

Unterstützung anderer Erweiterungen

  • MetaModels Backend

  • Isotope

Spenden

Ein Dank für die Spenden* für die Erweiterung an:

  • N.N.: 2.700 €

  • iMi: 350 €

(Spenden in Netto)