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
Contao 4.4.x/4.9.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 Ordner /app
oder /app/Resources
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):
dictionaries
*
Quellenname: Bezeichnung für den Aufruf in Jobs beisource
odertarget
oder bei Typxliff
ist das die Bezeichnung für die .xlf-Dateitype
Typ:contao
,metamodels
,compound
,memory
oderxliff
name
Name: Abhängig vom typcontao
:contao
metamodels
:<table_name>
compound
:*
frei vergebbarmemory
:*
frei vergebbarxliff
:*
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 Jobtype
Typ:copy
zum Kopieren der Übersetzungsdaten oderbatch
zum Aufruf/Zusammenfassen vorhandener Jobs
Typ copy
:
source
: Quellenbezeichnung aus Dictionariestarget
: Zielbezeichnung aus Dictionariessource_language
: Sprachkürzel z.B.en
,de
für die Quellensprachetarget_language
: Sprachkürzel z.B.de
,en
für die Zielsprachecopy-source
: Bestimmt das Verhalten beim Kopieren von Quelle zu Zieltrue
(default): Quelle zu Ziel immer kopiertif-empty
: Quelle zu Ziel nur kopiert, wenn Ziel leer oder nicht vorhandenfalse
: es wird nichts kopiert
copy-target
: Bestimmt das Verhalten beim Kopieren von Ziel zu Quelletrue
(default): Ziel zu Quelle immer kopiertif-empty
: Ziel zu Quelle nur kopiert, wenn Quelle leer oder nicht vorhandenfalse
: es wird nichts kopiert
remove-obsolete
: Bestimmt das Löschen eines Textknotensfalse
(default): es wird nichts gelöschttrue
: der Textknoten wird gelöscht, wenn Quelle leer oder nicht mehr vorhanden
filter
: Liste mit RegEx-Filtern auf dieid
im Knotentrans-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
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
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
oder
php vendor/bin/contao-console i18n:process import-en-ru
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:
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 €
(Spenden in Netto)