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