Ili2db und TRANSLATION OF-Modelle

Mal zur allgemeinen Klärung was Model Baker bzw. ili2db im Moment macht.

Model Baker setzt den ili2db Parameter --createNlsTabs beim Ansteuern des Schema Imports. Damit wird die Datenbankstruktur zwar noch in der Originalsprache angelegt, es werden aber Meta-Tabellen erstellt mit den Übersetzungen. Diese verwendet dann Model Baker im GUI (Formulare, Layernamen etc.) und folglich ist das Backend in der Originalsprache und das Frontend in der übersetzten Sprache.

Falls jemand wünscht, auch die Datenbankstruktur in der Originalsprache zu halten, müsste er „manuell“ den ili2db Parameter --nameLang fr angeben. Man könnte auch dieses Setting im GUI des Model Bakers exponieren, allerdings wurde in den Abklärungen davon ausgegangen, dass die Datenbankstruktur meistens im Original gehalten werden möchte, damit von den Usern bisher verwendete individuelle SQL Scripts kompatibel bleiben.

Im exportierten XTF wird in ili2db (und folglich auch Model Baker) ohne weitere Angaben die Originalsprache verwendet und nur wenn man das Übersetzungsmodell als --exportModels angibt in der übersetzten Sprache. Das heisst also, dass beides möglich ist. Soweit ich es gerade im Kopf habe, wird ohne diesem Parameter in dem Format exportiert, in dem die Daten gehalten werden. Das würde vermutlich bedeuten, dass wenn die Datenbankstruktur original ist, dann auch original und wenn übersetzt (mit der oben genannten Funktion), dann auch übersetzt.

Ob die Option für das exportieren in der übersetzten Sprache für INTERLIS 2.4 Modelle grundsätzlich ausgeschlossen werden soll, überlasse ich ili2db. Vermutlich macht es schon Sinn, wenn es per Definition nicht erlaubt ist.

Es gibt einen Blogpost (für Enduser) der dies (hoffentlich) bisschen erklärt: Übersetzungsmodelle in QGIS Model Baker – OPENGIS.ch

3 „Gefällt mir“

Hoi Dave – merci1000 für deine erklärenden Ausführungen! Kann es sein, dass das mit ili2gpkg nicht so angesteuert wird/werden kann? Ich haben den erwähnten kleinen Modelltest damit gemacht und der Erfassungsdialog in QGIS war deutsch und nicht wie erwartet französisch… Oder habe ich in der Handhabung der Tools etwas nicht richtig kapiert?

Es „sollte“ auch mit Geopackage so funktionieren. Ausser es ist ein Bug. Ich werde es morgen nochmals überprüfen.

Das kann ich nicht reproduzieren. Kann es sein, dass dies noch mit dem übersetzten Modell getesetet wurde, das fälschlicherweise (de) enthielt? Falls ja, kannst du es nochmals mit dem angepassten Modell testen? Falls es dann noch immer nicht geht, schlage ich vor dass du einen Issue betreffend diesem Problem auf dem Model Baker Repo eröffnest.

OK, merci für den Hinweis!
Ich habe das Franz.-Modell neu in QGIS Model Baker umgesetzt. Mit dem korrigierten ILI (fr) anstatt (de) ergibt sich, dass man die Sprache auswählen kann und dann französische Erfassungsdialoge erhält!
Der XTF-Datenexport liefert standardmässig Transferdaten gemäss Originalmodell (z.B. NameDe und nicht etwa NomFr).
Dieser Workflow scheint also sauber zu funktionieren! Merci1000 für die Unterstützung!

modelbaker-config

2 „Gefällt mir“

Ich habe im Rahmen der KGK-CGC eine kurze Präsentation als Erläuterung der Mehrsprachigkeit in INTERLIS-2.4-Modellen erstellt:

Multilinguisme-dans-les-modeles-de-donnees.pdf (511,8 KB)

1 „Gefällt mir“

Irgendwie haben wir hier einen Knopf. Der letzte Teil vom Satz dürfte ja gar nicht gehen? Ein Export in der übersetzten Sprache ist nicht INTERLIS 2.4 konform.

Im Übrigen gibt der ilivalidator keine Fehlermeldung, wenn ein DMAV-Operat mit französischer XML-Notation geprüft wird. Auch das ist nicht INTERLIS 2.4 konform.

Mir scheint bei der Erweiterung der ilitools auf ILI 2.4 ist diese Anpassung im Referenzhandbuch, dass das XTF nur in der Sprache des Originalmodells gültig ist, nicht berücksichtigt und umgesetzt worden. Wenn dem so wäre, müsste das zeitnah nachgeholt werden.

2 „Gefällt mir“

Wir schauen uns den Sachverhalt auf Codeseite am Montag an und ergänzen damit die aktuellen Informationen.

2 „Gefällt mir“

Irgendwie haben wir hier einen Knopf. Der letzte Teil vom Satz dürfte ja gar nicht gehen? Ein Export in der übersetzten Sprache ist nicht INTERLIS 2.4 konform.

Sorry., unklar ausgedrückt. Model Baker „muss“ hier keinen Unterschied zwischen 2.3 und 2.4 machen - das überlässt er bequem ili2db. Ich beschrieb hier, wie es bisher es mit 2.3 gemacht wurde.

Mit 2.4 würde es vermutlich trotz --exportModels dann in der Originalsprache exportieren. Ich müsste das aber selbst testen, ob es ili2db „fälschlicherweise“ noch immer in der übersetzten Sprache exportiert (aber ich sehe es ist gerade Freitag und 6 Uhr :beer_mug: :wink: )

1 „Gefällt mir“

Also. Ich hab es jetzt noch getestet. Ich habe das deutsche Modell als 2.3 und 2.4:

INTERLIS 2.3;
MODEL Gebaeudeinventar_V1 (de)
AT "http://modelbaker.ch"
VERSION "2024-08-08" =
  IMPORTS GeometryCHLV95_V1;
[...]

bzw.

INTERLIS 2.4;
MODEL Gebaeudeinventar_V2 (de)
AT "http://modelbaker.ch"
VERSION "2024-08-08" =
  IMPORTS GeometryCHLV95_V2;
[...]

Und die Übersetzungen:

INTERLIS 2.3;
MODEL InventaireBatiments_V1 (fr)
AT "http://modelbaker.ch"
VERSION "2024-09-24" 
TRANSLATION OF Gebaeudeinventar_V1 ["2024-08-08"] =
  IMPORTS GeometryCHLV95_V1;
[...]

bzw.

INTERLIS 2.4;
MODEL InventaireBatiments_V2 (fr)
AT "http://modelbaker.ch"
VERSION "2024-09-24" 
TRANSLATION OF Gebaeudeinventar_V2 ["2024-08-08"] =
  IMPORTS GeometryCHLV95_V2;
[...]

Ich importiere mit ili2gpkg die französischen Modelle:

java -jar /home/dave/dev/opengisch/QgisModelBakerLibrary/modelbaker/iliwrapper/bin/ili2gpkg-5.3.1/ili2gpkg-5.3.1.jar --schemaimport --dbfile /home/dave/qgis-projects/translation-interlis/invtest23.gpkg --smart2Inheritance --createNlsTab --createMetaInfo --models InventaireBatiments_V1 /home/dave/dev/opengisch/teaching-and-talks/teaching-modelbaker-course/data/Translation/InventaireBatiments_V1.ili

bzw.

java -jar /home/dave/dev/opengisch/QgisModelBakerLibrary/modelbaker/iliwrapper/bin/ili2gpkg-5.3.1/ili2gpkg-5.3.1.jar --schemaimport --dbfile /home/dave/qgis-projects/translation-interlis/invtest24.gpkg --smart2Inheritance --createNlsTab --createMetaInfo --models InventaireBatiments_V2 /home/dave/dev/opengisch/teaching-and-talks/teaching-modelbaker-course/data/Translation/InventaireBatiments_V2.ili

Und exportiere wieder, wobei ich hier explizit als --exportModel das französische Modell angebe (dazu musste ich das Kommando manuell bearbeiten - Model Baker bietet das übersetzte Modell beim Export nicht im GUI an):

java -jar /home/dave/dev/opengisch/QgisModelBakerLibrary/modelbaker/iliwrapper/bin/ili2gpkg-5.3.1/ili2gpkg-5.3.1.jar --dbfile /home/dave/qgis-projects/translation-interlis/invtest23.gpkg --export --disableValidation --exportModels InventaireBatiments_V1 --models Gebaeudeinventar_V1 --iliMetaAttrs NULL /home/dave/qgis-projects/translation-interlis/invtest23.xtf

bzw.

java -jar /home/dave/dev/opengisch/QgisModelBakerLibrary/modelbaker/iliwrapper/bin/ili2gpkg-5.3.1/ili2gpkg-5.3.1.jar --dbfile /home/dave/qgis-projects/translation-interlis/invtest24.gpkg --export --disableValidation --exportModels InventaireBatiments_V2 --models Gebaeudeinventar_V2 --iliMetaAttrs NULL /home/dave/qgis-projects/translation-interlis/invtest24.xtf

Und das Resultat ist:

<?xml version="1.0" encoding="UTF-8"?><TRANSFER xmlns="http://www.interlis.ch/INTERLIS2.3">
<HEADERSECTION SENDER="ili2gpkg-5.3.1-f0afad5e9490e4458bc64826cc8f403aef706816" VERSION="2.3"><MODELS><MODEL NAME="InventaireBatiments_V1" VERSION="2024-09-24" URI="http://modelbaker.ch"></MODEL></MODELS></HEADERSECTION>
<DATASECTION>
<InventaireBatiments_V1.Construction BID="Gebaeudeinventar_V1.Bauwerk">
<InventaireBatiments_V1.Construction.Batiment TID="d30e0fb7-a357-4438-ad5d-465bf0e5b085"><EGID>213</EGID><CantonIdentifiant>ZH</CantonIdentifiant><Coordonnees><COORD><C1>2453924.088</C1><C2>1218700.107</C2></COORD></Coordonnees><PeriodeDeConstruction>1900</PeriodeDeConstruction><AbriDeProtection>false</AbriDeProtection></InventaireBatiments_V1.Construction.Batiment>
</InventaireBatiments_V1.Construction>
</DATASECTION>
</TRANSFER>

bzw.

<?xml version="1.0" encoding="UTF-8"?><ili:transfer xmlns:ili="http://www.interlis.ch/xtf/2.4/INTERLIS" xmlns:geom="http://www.interlis.ch/geometry/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:InventaireBatiments_V2="http://www.interlis.ch/xtf/2.4/InventaireBatiments_V2">
<ili:headersection><ili:models><ili:model>InventaireBatiments_V2</ili:model></ili:models><ili:sender>ili2gpkg-5.3.1-f0afad5e9490e4458bc64826cc8f403aef706816</ili:sender></ili:headersection>
<ili:datasection>
<InventaireBatiments_V2:Construction ili:bid="Gebaeudeinventar_V2.Bauwerk">
<InventaireBatiments_V2:Batiment ili:tid="dfc6a7b4-03aa-44f2-96df-7cd1ff1dda4e"><InventaireBatiments_V2:EGID>123</InventaireBatiments_V2:EGID><InventaireBatiments_V2:CantonIdentifiant>ZH</InventaireBatiments_V2:CantonIdentifiant><InventaireBatiments_V2:Coordonnees><geom:coord><geom:c1>2281659.871</geom:c1><geom:c2>1237807.403</geom:c2></geom:coord></InventaireBatiments_V2:Coordonnees><InventaireBatiments_V2:PeriodeDeConstruction>1990</InventaireBatiments_V2:PeriodeDeConstruction><InventaireBatiments_V2:AbriDeProtection>false</InventaireBatiments_V2:AbriDeProtection>
</InventaireBatiments_V2:Batiment>
</ili:datasection>
</ili:transfer>

beides übersetzt…

Fazit:

ili2db generiert das XTF mit 2.4 nach wie vor übersetzt, wenn man den Parameter --exportModel ensprechend setzt. Da könnte man sagen, dass ili2db dies falsch macht, vorausgesetzt es möchte sich streng an die Spezifikation halten und sich nicht auf die Benutzer:innen verlassen, dass diese auch die Parameter nicht absichtlich „falsch“ setzen.

Danke @signedav : Deine Testergebnisse decken sich mit unseren Erkenntnissen und Ansichten. Ob im Falle eines Datenexports eines übersetzten 2.4-Modells die Option --exportModel unterdrückt werden soll, lässt sich m.E. diskutieren.

Bezüglich ilivalidator implementieren wir aktuell einen Patch und releasen einen SNAPSHOT voraussichtlich heute.

Danke @olivergrimm

--exportModel braucht es nach wie vor, um anzugeben, ob die Daten eines erweiterten Modells im Format des Basismodells exportiert werden sollen (auch bei übersetzten Modellen). Die Option soll also nicht direkt unterdrückt werden, sondern es soll einfach evtl. in der Originalsprache exportiert werden.

(Das hast du ja vermutlich schon so gemeint. Nur zur Präzisierung, damit es nicht falsch verstanden wird :slight_smile: )

1 „Gefällt mir“

Wir testen nun einen internen SNAPSHOT-Release des ilivalidators, welcher im Falle eines 2.4-XTFs, welches nicht der Modell-Originalsprache entspricht, die folgende Meldung ausgibt:

Info: first validation pass...

Error: DMAV_Immeubles_V1_0.Immeubles: tid 369fc5a0-4b9a-481d-8662-11570b6a0da2: INTERLIS 2.4 transfers must be in the base language. The basket DMAV_Immeubles_V1_0.Immeubles has language (fr), the base has (de)

Error: DMAV_TerritoiresEnMouvementPermanent_V1_0.TerritoireMouvementPermanent: tid b7fae33a-9144-4d30-847b-7622269f88ef: INTERLIS 2.4 transfers must be in the base language. The basket DMAV_TerritoiresEnMouvementPermanent_V1_0.TerritoireMouvementPermanent has language (fr), the base has (de)
2 „Gefällt mir“