Identifizieren zu übersetzender Inhalte

Die Übersetzungsregeln identifizieren die zu übersetzenden Inhalte für Seiten, Komponenten und Assets, die in die Übersetzungsprojekte integriert oder von diesen ausgeschlossen sind. Wenn eine Seite oder ein Asset übersetzt wird, extrahiert AEM diese Inhalte, sodass sie an den Übersetzungsdienstleister gesendet werden können.

Die Seiten und Assets werden als Knoten im JCR-Repository dargestellt. Bei dem extrahierten Inhalt handelt es sich um einen oder mehrere Eigenschaftswerte des Knotens. Übersetzungsregeln identifizieren die Eigenschaften, die den zu extrahierenden Inhalt enthalten.

Übersetzungsregeln werden im XML-Format ausgedrückt und an folgenden Orten gespeichert:

  • /libs/settings/translation/rules/translation_rules.xml
  • /apps/settings/translation/rules/translation_rules.xml
  • /conf/global/settings/translation/rules/translation_rules.xml

Die Datei gilt für alle Übersetzungsprojekte.

Die Regeln umfassen die folgenden Informationen:

  • Den Pfad des Knotens, auf den die Regel angewendet wird
    • Die Regel gilt auch für die nachfolgenden Elemente des Knotens.
  • Die Namen der Knoteneigenschaften, die den zu übersetzenden Inhalt enthalten
    • Die Eigenschaft kann sich speziell auf einen bestimmten Ressourcentyp oder auf alle Ressourcentypen beziehen.

Sie können beispielsweise eine Regel erstellen, die den Inhalt übersetzt, den Autoren allen Textkomponenten auf Ihren Seiten hinzufügen. Die Regel kann den Knoten /content und die Eigenschaft text für die Komponente core/wcm/components/text/v2/text identifizieren.

Es gibt eine eigene Konsole, die für die Konfiguration von Übersetzungsregeln hinzugefügt wurde. Die Definitionen in der Benutzeroberfläche füllen die Datei für Sie auf.

Eine Übersicht der Inhaltsübersetzungsfunktionen in AEM finden Sie unter Übersetzung von Inhalten für mehrsprachige Sites.

HINWEIS

AEM unterstützt die 1-zu-1-Zuordnung zwischen Ressourcentypen und Bezugsattributen für die Übersetzung von referenziertem Inhalt auf einer Seite.

Regelsyntax für Seiten, Komponenten und Assets

Eine Regel ist ein node-Element mit einem oder mehreren untergeordneten property-Elementen und keinem oder mehreren untergeordneten node-Elementen:

<node path="content path">
          <property name="property name" [translate="false"]/>
          <node resourceType="component path" >
               <property name="property name" [translate="false"]/>
          </node>
</node>

Jedes dieser node-Elemente hat die folgenden Eigenschaften:

  • Das path-Attribut enthält den Pfad zum Stammknoten des Zweigs, für den die Regeln gelten.
  • Die untergeordneten property-Elemente identifizieren die Knoteneigenschaften, die für alle Ressourcentypen zu übersetzen sind:
    • Das Attribut name enthält den Eigenschaftsnamen.
    • Das optionale Attribut translate ist false, wenn die Eigenschaft nicht übersetzt wurde. Standardmäßig lautet der Wert true. Dieses Attribut ist nützlich für die Außerkraftsetzung vorheriger Regeln.
  • Die untergeordneten node-Elemente identifizieren die Knoteneigenschaften, die für bestimmte Ressourcentypen zu übersetzen sind:
    • Das Attribut resourceType enthält den Pfad, der zu der für die Implementierung des Ressourcentyps verantwortlichen Komponente führt.
    • Die untergeordneten property-Elemente identifizieren die zu übersetzende Knoteneigenschaft. Verwenden Sie diesen Knoten auf dieselbe Art und Weise wie die untergeordneten property-Elemente zu den Knotenregeln.

Die folgende Beispielregel bewirkt, dass der Inhalt aller text-Eigenschaften für alle Seiten unter dem /content-Knoten übersetzt wird. Die Regel ist für alle Komponenten wirksam, die Inhalte in einer text-Eigenschaft speichern, wie z. B. die Textkomponente.

<node path="/content?lang=de">
          <property name="text"/>
</node>

Im folgenden Beispiel wird der Inhalt aller text-Eigenschaften übersetzt und auch andere Eigenschaften der Bildkomponente übersetzt. Wenn andere Komponenten über Eigenschaften mit demselben Namen verfügen, gilt die Regel nicht für sie.

<node path="/content?lang=de">
      <property name="text"/>
      <node resourceType="core/wcm/components/image/v2/image">
         <property name="image/alt"/>
         <property name="image/jcr:description"/>
         <property name="image/jcr:title"/>
      </node>
</node>

Regelsyntax für die Extrahierung von Assets von Seiten

Verwenden Sie die folgende Regelsyntax, um in andere Komponenten integrierte oder durch andere Komponenten referenzierte Assets einzubeziehen:

<assetNode resourceType="path to component" assetReferenceAttribute="property that stores asset"/>

Jedes assetNode-Element hat die folgenden Merkmale:

  • Ein resourceType-Attribut, das dem zu der Komponente führenden Pfad entspricht
  • Ein dem Namen der Eigenschaft entsprechendes assetReferenceAttribute, das (bei integrierten Assets) die Binärdaten des Assets oder den Pfad zum referenzierten Asset enthält

Im folgenden Beispiel werden Bilder aus der Bildkomponente extrahiert:

<assetNode resourceType="core/wcm/components/image/v2/image" assetReferenceAttribute="fileReference"/>

Außerkraftsetzungsregeln

Die translation_rules.xml-Datei besteht aus einem nodelist-Element mit mehreren untergeordneten node-Elementen. AEM liest die Knotenliste von oben nach unten. Wenn mehrere Regeln auf denselben Knoten abzielen, wird die in der Datei weiter unten aufgeführte Regel verwendet. Beispielsweise führen die folgenden Regeln dazu, dass alle Inhalte in den text-Eigenschaften mit Ausnahme der /content/mysite/en-Verzweigung der Seiten übersetzt werden:

<nodelist>
     <node path="/content%E2%80%9D%3E%20%20%20%20%20%20%20%20%20%20%20%3Cproperty%20name?lang=de="text" />
     </node>
     <node path=“/content/mysite/en”>
          <property name=“text” translate=“false" />
     </node>
<nodelist>

Filtern von Eigenschaften

Mit demfilter --Element können Sie auf Knoten mit einer spezifischen Eigenschaft filtern.

Beispielsweise veranlassen die folgenden Regeln, dass alle Inhalte in text-Eigenschaften übersetzt werden – mit Ausnahme der Knoten, bei denen die Eigenschaft draft auf true eingestellt ist.

<nodelist>
    <node path="/content%E2%80%9D%3E%20%20%20%20%20%3Cfilter%3E%20%20%20%3Cnode%20containsProperty?lang=de="draft" propertyValue="true" />
     </filter>
        <property name="text" />
    </node>
<nodelist>

Benutzeroberfläche für Übersetzungsregeln

Zum Konfigurieren von Übersetzungsregeln steht auch eine Konsole zur Verfügung.

So können Sie darauf zugreifen:

  1. Navigieren Sie zu Tools und dann zu Allgemein.

  2. Wählen Sie Übersetzungskonfiguration aus.

In der Benutzeroberfläche der Übersetzungsregeln haben Sie folgende Möglichkeiten:

  1. hinzufügen Kontext, mit dem Sie einen Pfad hinzufügen können.

    hinzufügen Übersetzungskontext

  2. Verwenden Sie den Pfadbrowser, um den erforderlichen Kontext auszuwählen, und tippen oder klicken Sie zum Speichern auf die Schaltfläche Bestätigen.

    Kontext auswählen

  3. Wählen Sie dann Ihren Kontext aus und klicken Sie dann auf Bearbeiten. Hierdurch wird der Editor für Übersetzungsregeln geöffnet.

    Editor für Übersetzungsregeln

Es gibt vier Attribute, die Sie über die Benutzeroberfläche ändern können:

  • isDeep
  • inherit
  • translate
  • updateDestinationLanguage

isDeep

isDeep ist auf Node-Filtern anwendbar und ist standardmäßig true. Es prüft, ob der Knoten oder seine Vorgängerelemente die Eigenschaft mit dem im Filter angegebenen Eigenschaftswert enthalten. Bei „false“ wird die Überprüfung nur für den aktuellen Knoten durchgeführt.

Beispielsweise werden untergeordnete Knoten zu einem Übersetzungsauftrag hinzugefügt, selbst wenn die Eigenschaft draftOnly des übergeordneten Knotens auf "true"gesetzt ist, um Entwurfsinhalte zu kennzeichnen. Hier kommt isDeep ins Spiel, prüft, ob bei den übergeordneten Knoten die Eigenschaft draftOnly auf „true“ eingestellt ist, und schließt diese untergeordneten Knoten aus.

Im Editor können Sie Ist Tief auf der Registerkarte Filter aktivieren/deaktivieren.

Regeln filtern

Hier ein Beispiel für die resultierende XML, wenn Ist Deep in der Benutzeroberfläche deaktiviert ist:

 <filter>
    <node containsProperty="draftOnly" isDeep="false" propertyValue="true"/>
</filter>

inherit

inherit ist auf Eigenschaften anwendbar. Standardmäßig wird jede Eigenschaft geerbt. Wenn Sie jedoch möchten, dass eine Eigenschaft nicht vom untergeordneten Element geerbt wird, können Sie diese Eigenschaft als "false"markieren, sodass sie nur auf diesen bestimmten Knoten angewendet wird.

In der Benutzeroberfläche können Sie Übernehmen auf der Registerkarte Eigenschaften aktivieren/deaktivieren.

translate

translate wird einfach verwendet, um anzugeben, ob eine Eigenschaft übersetzt werden soll oder nicht.

In der Benutzeroberfläche können Sie Übersetzen auf der Registerkarte Eigenschaften aktivieren/deaktivieren.

updateDestinationLanguage

updateDestinationLanguage wird für Eigenschaften verwendet, die keinen Text, sondern Sprachcodes haben, zum Beispiel jcr:language. Der Benutzer übersetzt keinen Text, sondern das Sprachschema von der Quelle ins Ziel. Solche Eigenschaften werden nicht zur Übersetzung versendet.

In der Benutzeroberfläche können Sie Übersetzen auf der Registerkarte Eigenschaften aktivieren/deaktivieren, um diesen Wert zu ändern, jedoch für die spezifischen Eigenschaften, die Sprachcodes als Wert haben.

Der Unterschied zwischen updateDestinationLanguage und translate lässt sich hier anhand eines einfachen Beispiels für einen Kontext mit zwei Regeln veranschaulichen:

updateDestinationLanguage-Beispiel

Das Ergebnis in der xml sieht wie folgt aus:

<property inherit="true" name="text" translate="true" updateDestinationLanguage="false"/>
<property inherit="true" name="jcr:language" translate="false" updateDestinationLanguage="true"/>

Manuelles Bearbeiten der Regeldatei

Die mit AEM installierte Datei translation_rules.xml enthält einen Standardsatz von Übersetzungsregeln. Sie können die Datei bearbeiten, damit die Anforderungen Ihrer Übersetzungsprojekte erfüllt werden. Sie können zum Beispiel Regeln hinzufügen, sodass die Inhalte Ihrer benutzerdefinierten Komponenten übersetzt werden.

Wenn Sie die Datei translation_rules.xml bearbeiten, bewahren Sie eine Sicherungskopie in einem Inhaltspaket auf. Die Neuinstallation bestimmter AEM kann die aktuelle translation_rules.xml-Datei durch das Original ersetzen. Um in dieser Situation die Regeln wiederherzustellen, können Sie das Paket installieren, das Ihre Sicherungskopie enthält.

HINWEIS

Erstellen Sie das Paket nach der Erstellung des Inhaltspakets bei jeder Bearbeitung der Datei neu.

Beispiel für eine Datei mit Übersetzungsregeln

<?xml version="1.0" encoding="UTF-8"?><nodelist>
  <node path="/content?lang=de">
    <property name="addLabel"/>
    <property name="allowedResponses"/>
    <property name="alt"/>
    <property name="attachFileLabel"/>
    <property name="benefits"/>
    <property name="buttonLabel"/>
    <property name="chartAlt"/>
    <property name="confirmationMessageToggle"/>
    <property name="confirmationMessageUntoggle"/>
    <property name="constraintMessage"/>
    <property name="contentLabel"/>
    <property name="denyText"/>
    <property name="detailDescription"/>
    <property name="emptyText"/>
    <property name="helpMessage"/>
    <property name="image/alt"/>
    <property name="image/jcr:description"/>
    <property name="image/jcr:title"/>
    <property name="jcr:description"/>
    <property name="jcr:title"/>
    <property name="heading"/>
    <property name="label"/>
    <property name="main"/>
    <property name="listLabel"/>
    <property name="moreText"/>
    <property name="pageTitle"/>
    <property name="placeholder"/>
    <property name="requiredMessage"/>
    <property name="resetTitle"/>
    <property name="subjectLabel"/>
    <property name="subtitle"/>
    <property name="tableData"/>
    <property name="text"/>
    <property name="title"/>
    <property name="navTitle"/>
    <property name="titleDivContent"/>
    <property name="toggleLabel"/>
    <property name="transitionLabel"/>
    <property name="untoggleLabel"/>
    <property name="name"/>
    <property name="occupations"/>
    <property name="greetingLabel"/>
    <property name="signInLabel"/>
    <property name="signOutLabel"/>
    <property name="pretitle"/>
    <property name="cq:panelTitle"/>
    <property name="actionText"/>
    <property name="cq:language" updateDestinationLanguage="true"/>
    <node pathContains="/cq:annotations?lang=de">
      <property name="text" translate="false"/>
    </node>
    <node path="/content/wknd?lang=de"/>
  </node>
  <node path="/content/forms?lang=de">
    <property name="text" translate="false"/>
  </node>
  <node path="/content/dam?lang=de">
    <property name="dc:description"/>
    <property name="dc:rights"/>
    <property name="dc:subject"/>
    <property name="dc:title"/>
    <property name="defaultContent"/>
    <property name="jcr:description"/>
    <property name="jcr:title"/>
    <property name="pdf:Title"/>
    <property name="xmpRights:UsageTerms"/>
    <property name="main"/>
    <property name="adventureActivity"/>
    <property name="adventureDescription"/>
    <property name="adventureDifficulty"/>
    <property name="adventureGearList"/>
    <property name="adventureGroupSize"/>
    <property name="adventureItinerary"/>
    <property name="adventurePrice"/>
    <property name="adventureTitle"/>
    <property name="adventureTripLength"/>
    <property name="adventureType"/>
    <node pathContains="/jcr:content/metadata/predictedTags?lang=de">
      <property name="name"/>
    </node>
  </node>
  <assetNode assetReferenceAttribute="fragmentPath" resourceType="cq/experience-fragments/editor/components/experiencefragment"/>
  <assetNode assetReferenceAttribute="fragmentVariationPath" resourceType="core/wcm/components/experiencefragment/v1/experiencefragment"/>
  <assetNode assetReferenceAttribute="fileReference" resourceType="dam/cfm/components/contentfragment"/>
  <assetNode resourceType="docs/components/download"/>
  <assetNode resourceType="docs/components/image"/>
  <assetNode assetReferenceAttribute="fileReference" resourceType="foundation/components/image"/>
  <assetNode assetReferenceAttribute="asset" resourceType="foundation/components/video"/>
  <assetNode assetReferenceAttribute="fileReference" resourceType="foundation/components/download"/>
  <assetNode assetReferenceAttribute="fileReference" resourceType="core/wcm/components/download/v1/download"/>
  <assetNode assetReferenceAttribute="fileReference" resourceType="wcm/foundation/components/image"/>
  <assetNode assetReferenceAttribute="fragmentPath" resourceType="core/wcm/components/contentfragment/v1/contentfragment"/>
  <assetNode assetReferenceAttribute="fileReference" resourceType="core/wcm/components/image/v2/image"/>
</nodelist>

Auf dieser Seite

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now