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.
Wenn Sie mit der Übersetzung von Inhalten noch nicht vertraut sind, lesen Sie bitte unsere Sites-Übersetzungs-Tour, die Sie durch die Übersetzung Ihrer AEM Sites-Inhalte mithilfe der leistungsstarken Übersetzungs-Tools von AEM führt und ideal für alle ist, die keine Erfahrung mit AEM oder Übersetzungen haben.
Die in diesem Dokument beschriebenen Übersetzungsregeln gelten nur dann für Inhaltsfragmente, wenn die Option Aktivieren von Inhaltsmodellfeldern für die Übersetzung auf der Konfigurationsebene des Übersetzungs-Integrations-Frameworks nicht aktiviert wurde.
Wenn die Option Aktivieren von Inhaltsmodellfeldern für die Übersetzung aktiv ist, verwendet AEM das Feld Übersetzbar bei Inhaltsfragmentmodellen, um zu bestimmen, ob das Feld übersetzt werden soll, und um automatisch Übersetzungsregeln zu erstellen. Diese Option ersetzt ggf. von Ihnen erstellte Übersetzungsregeln und erfordert keine Eingriffe oder zusätzlichen Schritte.
Wenn Sie Übersetzungsregeln für die Übersetzung Ihrer Inhaltsfragmente verwenden möchten, muss die Option Aktivieren von Inhaltsmodellfeldern für die Übersetzung in der Framework-Konfiguration für die Übersetzungsintegration deaktiviert sein und Sie müssen die unten beschriebenen Schritte ausführen, um Ihre Regeln zu erstellen.
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. Die Ü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:
Sie können zum Beispiel eine Regel erstellen, die den von den Autoren hinzugefügten Inhalt für alle Textkomponenten auf Ihren Seiten übersetzt. 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.
Einen Überblick über die Funktionen zur Übersetzung von Inhalten in AEM erhalten Sie unter Übersetzen von Inhalten für mehrsprachige Sites.
AEM unterstützt die 1-zu-1-Zuordnung zwischen Ressourcentypen und Bezugsattributen für die Übersetzung von referenziertem Inhalt auf einer Seite.
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:
path
-Attribut enthält den Pfad zum Stammknoten des Zweigs, für den die Regeln gelten.property
-Elemente identifizieren die Knoteneigenschaften, die für alle Ressourcentypen zu übersetzen sind:
name
enthält den Eigenschaftsnamen.translate
ist gleich false
, wenn die Eigenschaft nicht übersetzt ist. Standardmäßig lautet der Wert true
. Dieses Attribut ist nützlich für die Außerkraftsetzung vorheriger Regeln.node
-Elemente identifizieren die Knoteneigenschaften, die für bestimmte Ressourcentypen zu übersetzen sind:
resourceType
enthält den Pfad, der zu der für die Implementierung des Ressourcentyps verantwortlichen Komponente führt.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 veranlasst, dass alle text
-Eigenschaften für alle Seiten unter dem Knoten /content
übersetzt werden. Die Regel ist für alle Komponenten wirksam, die Inhalte in einer text
-Eigenschaft speichern, wie z. B. die Textkomponente.
<node path="/content">
<property name="text"/>
</node>
Das folgende Beispiel übersetzt den Inhalt aller text
-Eigenschaften sowie andere Eigenschaften der Bildkomponente. Wenn andere Komponenten über Eigenschaften mit demselben Namen verfügen, gilt die Regel nicht für sie.
<node path="/content">
<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>
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:
resourceType
-Attribut, das dem zu der Komponente führenden Pfad entsprichtassetReferenceAttribute
, das (bei integrierten Assets) die Binärdaten des Assets oder den Pfad zum referenzierten Asset enthältDas folgende Beispiel extrahiert Bilder aus der Bildkomponente:
<assetNode resourceType="core/wcm/components/image/v2/image" assetReferenceAttribute="fileReference"/>
Die Datei translation_rules.xml
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 veranlassen die folgenden Regeln, dass alle Inhalte in den text
-Eigenschaften übersetzt werden, außer dem Seitenzweig /content/mysite/en
:
<nodelist>
<node path="/content”>
<property name="text" />
</node>
<node path=“/content/mysite/en”>
<property name=“text” translate=“false" />
</node>
<nodelist>
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”>
<filter>
<node containsProperty="draft" propertyValue="true" />
</filter>
<property name="text" />
</node>
<nodelist>
Zum Konfigurieren von Übersetzungsregeln steht auch eine Konsole zur Verfügung.
So können Sie darauf zugreifen:
Navigieren Sie zu Tools und dann zu Allgemein.
Wählen Sie Übersetzungskonfiguration aus.
In der Benutzeroberfläche für Übersetzungsregeln können Sie:
Kontext hinzufügen, mit dem Sie einen Pfad hinzufügen können.
Verwenden Sie den Pfad-Browser, um den erforderlichen Kontext auszuwählen, und tippen oder klicken Sie zum Speichern auf die Schaltfläche Bestätigen.
Anschließend müssen Sie Ihren Kontext auswählen und dann auf Bearbeiten klicken. Hierdurch wird der Editor für Übersetzungsregeln geöffnet.
Es gibt vier Attribute, die Sie über die Benutzeroberfläche ändern können:
isDeep
inherit
translate
updateDestinationLanguage
isDeep
lässt sich auf Knotenfilter anwenden und ist standardmäßig auf „true“ eingestellt. 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 einem Übersetzungsauftrag selbst dann hinzugefügt, wenn beim übergeordneten Knoten die Eigenschaft draftOnly
auf „true“ eingestellt 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 Is Deep auf der Registerkarte Filter aktivieren/deaktivieren.
Im folgenden Beispiel ist die XML dargestellt, die generiert wird, wenn Is Deep in der Benutzeroberfläche deaktiviert ist:
<filter>
<node containsProperty="draftOnly" isDeep="false" propertyValue="true"/>
</filter>
inherit
ist auf Eigenschaften anwendbar. Standardmäßig werden alle Eigenschaften übernommen. Sollten Sie jedoch wünschen, dass manche Eigenschaften nicht für das untergeordnete Element übernommen werden, können Sie diese Eigenschaft als „false“ markieren, sodass sie nur auf diesen spezifischen Knoten angewendet wird.
In der Benutzeroberfläche können Sie Übernehmen auf der Registerkarte Eigenschaften aktivieren/deaktivieren.
translate
wird einfach verwendet, um anzugeben, ob eine Eigenschaft zu übersetzen ist oder nicht.
In der Benutzeroberfläche können Sie Übersetzen auf der Registerkarte Eigenschaften aktivieren/deaktivieren.
updateDestinationLanguage
wird für Eigenschaften verwendet, die keinen Text, sondern Sprach-Codes enthalten, wie 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 auf der Registerkarte Eigenschaften die Option Übersetzen aktivieren/deaktivieren, um diesen Wert zu ändern, allerdings nur für die spezifischen Eigenschaften, die Sprach-Codes 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:
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"/>
Die in AEM installierte Datei translation_rules.xml
enthält einen Standardsatz an Ü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, speichern Sie zuvor eine Sicherungskopie im Inhaltspaket. Mit der Neuinstallation bestimmter AEM-Packages kann die aktuelle translation_rules.xml
-Datei durch das Original ersetzt werden. Um in dieser Situation die Regeln wiederherzustellen, können Sie das Paket installieren, das Ihre Sicherungskopie enthält.
Erstellen Sie das Paket nach der Erstellung des Inhaltspakets bei jeder Bearbeitung der Datei neu.
<?xml version="1.0" encoding="UTF-8"?><nodelist>
<node path="/content">
<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">
<property name="text" translate="false"/>
</node>
<node path="/content/wknd"/>
</node>
<node path="/content/forms">
<property name="text" translate="false"/>
</node>
<node path="/content/dam">
<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">
<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>