Did you find this page useful? Give us feedback.
Did you find the information
on this page useful?

Yes
Somewhat
No
  Tell us more about your choice:
Missing information
Incorrect information
Misleading information
I have a question
Other
  Enter your comment in the box below

  Type the letters
simple PHP captcha
 

Typisches Beispiel für das Importieren von mehrsprachigen XML-Dateien:

Es sind Einträge vorhanden, die Zeichenfolgen oder Textstücke für mehrere Sprachen aufweisen, und im Idealfall ist eine ID auf Eintragsebene vorhanden, die als Kontext-ID verwendet werden kann.  In diesem Beispiel wird aus dem Englischen ins Deutsche und Französische übersetzt; Englisch ist dabei die einzige Sprache, die immer eingetragen ist.

1. Erstellen Sie ein Projekt für Englisch–Deutsch (optional Französisch).

2. Wählen Sie auf der Registerkarte Dokumente des Menübands die Optionen Import > Import mit Optionen > Filter für mehrsprachige XML-Dateien > Importregeln bearbeiten aus.

3. Erweitern Sie einige der Knoten. Klicken Sie auf den ersten string-Elementknoten. (Klicken Sie auf das Wort string, nicht auf den Textinhalt.)

memoQ kopiert den XPath in diesen Knoten in das Feld XPath für ausgewählte Zeile:

/doc[1]/entry[1]/string[1]

Gehen Sie also im ersten doc-Element zum ersten entry-Element und dort zum ersten string-Element.

Zuerst löschen Sie alle "Seriennummern", sodass das Ergebnis so aussieht:

/doc/entry/string

Das heißt, Sie gehen in jedem doc-Element (auch wenn in diesem Beispiel nur eins vorhanden ist) zu jedem entry-Element und in diesen Einträgen zu jedem string-Element. Das Ergebnis von diesem XPath ist ein "Knotensatz", also mehrere Knoten aus dem XML-Code. Im Beispiel sind jedoch nur die englischen Strings erforderlich. Sie müssen die Ergebnisse filtern, um einen Filter für den Wert des lang-Attributs zu erhalten:

/doc/entry/string[@lang='en']

[@lang='en'] am Ende bedeutet "nur, wenn der Wert des lang-Attributs "en" ist".

Mit diesem XPath-Ausdruck wird jede englische Zeichenfolge zurückgegeben. Platzieren Sie dies im Feld XPath-Inhalt. Wählen Sie in der Liste Englisch aus.

Im Feld XPath-Kontext (ID) für Inhalt benötigen Sie diese Angabe:

/doc/entry/@id

Das heißt: Gehen Sie in jedem doc-Element zu jedem entry-Element, und übernehmen Sie den Wert des ID-Attributs. Hiermit wird ebenfalls ein "Knotensatz" zurückgegeben, und zwar in der gleichen Reihenfolge wie die Zeichenfolgen.

Beispiel: Der erste durch den XPath-Inhalt festgelegte englische Text lautet "apple", und die erste durch den XPath-Inhalt festgelegte Kontext-ID ist entry1. memoQ "verknüpft" diese miteinander.

Klicken Sie auf Im Regelsatz speichern. Wiederholen Sie die Schritte für Deutsch und Französisch. Stellen Sie sicher, dass Sie den lang-Attributwert "filter" in "de" und "fr" ändern, und wählen Sie Deutsch und Französisch als Sprachen aus. Im folgenden Screenshot ist dies für Deutsch dargestellt:

 

Untypisches Beispiel für den Import von mehrsprachigen XML-Dateien:

Dieses Beispiel ist etwas schwieriger. Die name-Elemente in den row-Elementen enthalten die zu übersetzenden Textabschnitte. Allerdings sind sie nicht ordentlich unter ein und demselben übergeordneten Element eingeordnet, und hinsichtlich der Reihenfolge geht es ebenfalls durcheinander. Außerdem wird hier mit einem Elementwert die Sprache festgelegt, und dieses Element befindet sich auf der gleichen Ebene wie das name-Element mit dem zu übersetzenden Text. Die IDs, die für den Kontext verwendet werden müssen, werden mit jedem row-Element gespeichert – nicht in einem übergeordneten Element.

Inhaltsregel für Englisch:

/data/row[id_lang = '2']/name

Das heißt, Sie gehen zu jedem einzelnen data-Element, darin zu jedem einzelnen row-Element, das als Inhalt des id_lang-Elements den Wert 2 aufweist, und sie nehmen den Inhalt des name-Elements als Text für Englisch. In diesem Beispiel sind zwei solcher Knoten vorhanden. Der Knotensatz enthält also zwei Knoten.

Kontextregel für Englisch:

/data/row[id_lang = '2']/id_attribute

Diese Regel ist der Inhaltsregel sehr ähnlich, aber Sie müssen den Inhalt des id_attribute-Elements statt des name-Elements verwenden. Sie müssen nach Sprache filtern. Wenn Sie [id_lang = '2'] nicht mit angeben, umfasst Ihr Ergebnis 1, 2, 1, 2 (die Inhalte aller id_lang-Elemente im Dokument), was vier Knoten entspricht, obwohl nur zwei Knoten mit englischem Text vorhanden sind. Fügen Sie zwei weitere Knoten mit deutschem Text hinzu. Sie benötigen dazu die beiden IDs, durch die sie miteinander verbunden sind.

Die Regeln für Deutsch sind identisch, allerdings ist der Sprachcode 1 statt 2.

Die Reihenfolge der Texte geht zwar durcheinander (eine deutsche, dann zwei englische Zeichenfolgen und dann wieder eine deutsche Zeichenfolge), aber memoQ verwendet die Kontext-IDs, um sie einander zuzuordnen.

Hinweis: Ein langes Dokument kann unsortiert angegeben werden, solange die Zeichenfolgen durch die Kontext-IDs richtig miteinander verknüpft werden.

 

Mögliche Probleme:

Kontext-ID: Die Fragestellung, was als Kontext-ID verwendet werden soll, kann kompliziert sein. Dabei sollte es sich um eine ID handeln, die eindeutig ist und mit den entsprechenden Sprachversionen der zu importierenden Zeichenfolgen verknüpft werden kann.

"Asymmetrische" Dateien: Wenn Sie das typische Beispiel betrachten, ist festzustellen, dass für jeden Eintrag genau eine Quelle für die Kontext-ID vorhanden ist und genau eine für jede Sprache zu importierende Textquelle. Dies muss in jedem Fall immer so sein. Es ist nicht möglich, die Datei zu importieren, wenn an irgendeiner Stelle die Kontext-ID oder der Knoten für den Text in einer der Sprachen fehlt oder wenn für eine Sprache mehrere Textknoten vorhanden sind. Von allem ist genau eins erforderlich.

Beim Dateiimport wird eine Fehlermeldung mit der Angabe angezeigt, dass die Struktur anders ist. Dies kann vorkommen, wenn der Knoten, aus dem Sie den Text importieren, für eine der Sprachen zusätzliche Tags enthält. Beispiel:

<string lang="de"></string>

<string lang="en">Lemon</string>

<string lang="fr">< tag>cit</ tag>< tag>ron</tag></string>

Dies kann problematisch sein, da in einigen Fällen diese Tags von memoQ möglicherweise als strukturelle Tags erkannt werden und somit versucht wird, zwei Segmente für den französischen Text zu erstellen. Dann müssen Sie dieses Tag auf der Registerkarte Sonstige Tags und Attribute als Inline-Tag festlegen. Dadurch wird sichergestellt, dass das Tag als Inline-Tag importiert wird und dass keine derartige Abweichung zwischen den Sprachen vorkommt.