翻訳するコンテンツの特定

翻訳プロジェクトに追加する、または翻訳プロジェクトから除外するページ、コンポーネントおよびアセットの翻訳対象コンテンツは翻訳ルールによって特定されます。ページまたはアセットを翻訳する場合は、AEM がそのコンテンツを抽出して、翻訳サービスに送信できるようにします。

ページとアセットは、JCR リポジトリ内のノードとして表されます。抽出されるコンテンツはノードの 1 つ以上のプロパティ値です。抽出するコンテンツを格納するプロパティは翻訳ルールによって特定されます。

翻訳ルールは XML 形式で表現され、次の場所に格納されています。

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

このファイルはすべての翻訳プロジェクトに適用されます。

メモ

6.4 にアップグレードした後は、/etcからファイルを移動することをお勧めします。詳しくは、「AEM 6.5🔗での一般的なリポジトリの再構築」を参照してください。

ルールには以下の情報が含まれます。

  • ルールを適用するノードのパス。この規則は、ノードの子孫にも適用されます。
  • 翻訳するコンテンツを格納するノードプロパティの名前。特定のリソースタイプ専用のプロパティまたはすべてのリソースタイプに共通のプロパティがあります。

例えば、作成者がページ上のすべてのAEM foundationテキストコンポーネントに追加したコンテンツを翻訳するルールを作成できます。 このルールでは、/contentノードとfoundation/components/textコンポーネントのtextプロパティを識別できます。

翻訳ルールの設定用に追加されたコンソールがあります。UI での定義の内容がファイルに自動的に入力されます。

AEMのコンテンツ翻訳機能の概要については、多言語サイト用のコンテンツの翻訳を参照してください。

メモ

AEM は、ページ上の参照コンテンツの翻訳に関して、リソースタイプと参照属性の 1 対 1 マッピングをサポートしています。

ページ、コンポーネントおよびアセット用のルールの構文

ルールとは、1 個以上の node 子要素と 0 個以上の property 子要素を含む node 要素です。

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

これらのnode要素はそれぞれ次の特性を持ちます。

  • path 属性には、ルールが適用されるブランチのルートノードのパスが格納されます。

  • property 子要素は、すべてのリソースタイプについて、翻訳するノードプロパティを特定します。

    • name 属性には、プロパティ名が格納されます。
    • プロパティが変換されない場合、オプションのtranslate属性はfalseです。 デフォルト値は true です。この属性は、以前のルールを上書きする場合に役立ちます。
  • node 子要素は、特定のリソースタイプについて、翻訳するノードプロパティを特定します。

    • resourceType 属性には、リソースタイプを実装するコンポーネントに解決されるパスが格納されます。
    • property 子要素は、翻訳するノードプロパティを特定します。このノードは、ノードルールの property 子要素と同じ方法で使用します。

次のルールの例では、/contentノードの下のすべてのページについて、すべてのtextプロパティの内容が変換されます。 このルールは、基礎テキストコンポーネントや基礎イメージコンポーネントなど、textプロパティにコンテンツを格納するコンポーネントに対して有効です。

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

次の例では、すべての text プロパティのコンテンツを翻訳し、基盤画像コンポーネントのその他のプロパティも翻訳します。その他のコンポーネントに同じ名前のプロパティが含まれている場合、それらのプロパティにはルールが適用されません。

<node path="/content?lang=ja">
      <property name="text"/>
      <node resourceType="foundation/components/textimage">
         <property name="image/alt"/>
         <property name="image/jcr:description"/>
         <property name="image/jcr:title"/>
      </node>
</node>

ページからアセットを抽出するルールの構文

次に示すルールの構文を使用して、コンポーネントに埋め込むアセットまたはコンポーネントから参照するアセットを追加します。

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

assetNode 要素には以下の特徴があります。

  • 1 つの resourceType 属性は、コンポーネントに解決されるパスと等しくなります。
  • 1 つの assetReferenceAttribute 属性は、(埋め込みアセット用の)アセットバイナリを格納するプロパティの名前または参照先のアセットのパスと等しくなります。

次の例では、基盤画像コンポーネントから画像を抽出します。

<assetNode resourceType="foundation/components/image" assetReferenceAttribute="fileReference"/>

ルールの上書き

translation_rules.xmlファイルは、nodelist要素といくつかの子node要素で構成されています。 AEMは、ノードリストを上から下に読み取ります。 複数のルールが同じノードにターゲットする場合は、ファイル内で下位のルールが使用されます。 例えば、次のルールでは、textプロパティのすべてのコンテンツが変換されます。ただし、ページの/content/mysite/en分岐は例外です。

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

プロパティのフィルタリング

filter 要素を使用して、特定のプロパティを持つノードをフィルタリングできます。

例えば、次のルールを使用すると、プロパティ textdraft に設定されている場合を除き、true プロパティのすべてのコンテンツが翻訳されます。

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

翻訳ルール UI

コンソールを使用して翻訳ルールを設定することもできます。

コンソールにアクセスするには:

  1. ツール一般​に移動します。

    chlimage_1-55

  2. 翻訳設定」を選択します。

    chlimage_1-56

ここから、追加コンテキスト​をできます。 これにより、パスを追加できます。

chlimage_1-57

次に、コンテキストを選択し、「編集」をクリックします。 これにより、翻訳ルールエディターが開きます。

chlimage_1-58

UIを使用して変更できる属性は4つあります。isDeepinherittranslateupdateDestinationLanguage

isDeepThis属性 はノードのフィルターに適用され、デフォルトではtrueです。ノード(またはその上位ノード)に、フィルターで指定されたプロパティ値を持つそのプロパティが含まれているかどうかをチェックします。false の場合は、現在のノードのみでチェックします。

例えば、親ノードのプロパティdraftOnlyがtrueに設定されていても、子ノードが翻訳ジョブに追加され、ドラフトコンテンツにフラグが付けられます。 ここで、isDeep が機能し、親ノードの draftOnly プロパティが true であるかどうかをチェックして、それらの子ノードを除外します。

エディターの「フィルター」タブで、「深い」をオンまたはオフにできます。

chlimage_1-59

次に、UI で「サブ項目の有無」をチェック解除した場合の結果の xml の例を示します。

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

​inherit:これはプロパティに適用されます。デフォルトではすべてのプロパティが継承されますが、一部のプロパティが子で継承されないようにする場合は、その特定のノードのみで適用されるように、そのプロパティを false に指定できます。

UI では、「プロパティ」タブで「継承」をチェックまたはチェック解除できます。

chlimage_1-60

translate プロパティを変換するかどうかを指定する目的でのみ、translate属性が使用されます。

UIの「プロパティ」タブで、「翻訳」のチェック/チェックを外します。

updateDestinationLanguage この属性は、テキスト以外の言語コードを持つプロパティ(例:jcr:language)に使用されます。ユーザーはテキストを翻訳していませんが、ソースから宛先への言語ロケールを設定します。そのようなプロパティは、翻訳用に送信されません。

UIで、「プロパティ」タブの「翻訳」をオンまたはオフにできますが、言語コードを値として持つ特定のプロパティに対してはオフにできます。

updateDestinationLanguagetranslate の違いを明確にするために、ルールが 2 つのみのコンテキストの単純な例を次に示します。

chlimage_1-61

xml での結果は、次のようになります。

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

ルールファイルの手動編集

AEM と共にインストールされる translation_rules.xml ファイルには、デフォルトの翻訳ルールセットが格納されています。翻訳プロジェクトの要件をサポートするようにこのファイルを編集できます。例えば、カスタムコンポーネントのコンテンツが翻訳されるようなルールを追加できます。

translation_rules.xml ファイルを編集する場合は、コンテンツパッケージにバックアップコピーを作成してください。現在の translation_rules.xml ファイルは、AEM サービスパックのインストールまたは特定の AEM パッケージの再インストールによって元のファイルに置き換わります。この状況でルールを復元するには、バックアップコピーを含むパッケージをインストールします。

メモ

コンテンツパッケージを作成した後は、ファイルを編集するたびにパッケージを再ビルドしてください。

翻訳ルールファイルのサンプル

<nodelist>
    <!-- translation rules for Geometrixx Demo site (example) -->
    <node path="/content/geometrixx?lang=ja">
        <!-- list all node properties that should be translated -->
        <property name="jcr:title" /> <!-- translation workflows running on content saved in /content/geometrixx, will extract jcr:title values independent of the component. -->
        <property name="jcr:description" />
        <node resourceType ="foundation/components/image"> <!-- translation workflows running on content saved in /content/geometrixx, will extract alternateText values only for Image component. -->
            <property name="alternateText"/>
        </node>
        <node resourceType ="geometrixx/components/title">
            <property name="richText"/>
            <property name="jcr:title" translate="false"/> <!-- translation workflows running on content saved in /content/geometrixx, will not extract jcr:title for Title component, but instead use richText. -->
        </node>
        <node pathContains="/cq:annotations?lang=ja">
            <property name="text" translate="false"/> <!-- translation workflows running on content saved in /content/geometrixx, will not extract text if part of cq:annotations node. -->
        </node>
    </node>
    <!-- translation rules for Geometrixx Outdoors site (example) -->
    <node path="/content/geometrixx-outdoors?lang=ja">
        <node resourceType ="foundation/components/image">
            <property name="alternateText"/>
            <property name="jcr:title" />
        </node>
        <node resourceType ="geometrixx-outdoors/components/title">
            <property name="richText"/>
        </node>
    </node>
    <!-- translation rules for ASSETS (example) -->
    <node path="/content/dam?lang=ja">
        <!-- configure list of metadata properties here -->
        <property name="dc:title" />
        <property name="dc:description" />
    </node>
    <!-- translation rules for extracting ASSETS from SITES content, configure all components that embed or reference assets -->
    <assetNode resourceType="foundation/components/image" assetReferenceAttribute="fileReference"/>
    <assetNode resourceType="foundation/components/video" assetReferenceAttribute="asset"/>
    <assetNode resourceType="foundation/components/download" assetReferenceAttribute="fileReference"/>
    <assetNode resourceType="foundation/components/mobileimage" assetReferenceAttribute="fileReference"/>
    <assetNode resourceType="wcm/foundation/components/image" assetReferenceAttribute="fileReference"/>
</nodelist>

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
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