識別要翻譯的內容

翻譯規則可識別翻譯專案中包含或排除的頁面、元件和資產的翻譯內容。 當翻譯頁面或資產時,AEM請擷取此內容,以便將其傳送至翻譯服務。

頁面和資產在JCR儲存庫中以節點表示。 提取的內容是節點的一個或多個屬性值。 翻譯規則可識別包含要提取內容的屬性。

翻譯規則以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移動。 有關詳細資訊,請參見6.5<a1/AEM>中的通用儲存庫重組。

規則包含下列資訊:

  • 應用規則的節點的路徑。 該規則也適用於節點的後代。
  • 包含要翻譯內容的節點屬性的名稱。 屬性可以特定於特定資源類型或所有資源類型。

例如,您可以建立規則,將作者新增的內容轉譯至頁面上AEM的所有基礎文字元件。 該規則可標識/content節點和foundation/components/text元件的text屬性。

已添加控制台用於配置轉換規則。 UI中的定義將為您填入檔案。

有關中的內容翻譯功能的概AEM述,請參閱多語言站點的翻譯內容

注意

支AEM持資源類型和引用屬性之間的一對一映射,以轉換頁面上的引用內容。

頁面、元件和資產的規則語法

規則是node元素,包含一個或多個子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=zh-Hant">
          <property name="text"/>
</node>

以下示例將轉換所有text屬性的內容,還將轉換基礎Image元件的其他屬性。 如果其他元件具有相同名稱的屬性,則規則不適用於這些元件。

<node path="/content?lang=zh-Hant">
      <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元素具有以下特性:

  • 一個resourceType屬性,等於解析至元件的路徑。
  • 一個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=zh-Hant="text" />
     </node>
     <node path=“/content/mysite/en”>
          <property name=“text” translate=“false" />
     </node>
<nodelist>

篩選屬性

您可以使用filter元素來篩選具有特定屬性的節點。

例如,下列規則會導致翻譯text屬性中的所有內容,但屬性draft設為true的節點除外。

<nodelist>
    <node path="/content%E2%80%9D%3E%20%20%20%20%20%3Cfilter%3E%20%20%20%3Cnode%20containsProperty?lang=zh-Hant="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

isDeep 此屬性適用於節點篩選器,且預設為true。它會檢查節點(或其祖先)是否包含篩選器中具有指定屬性值的屬性。 如果為false,則只會檢查目前節點。

例如,即使父節點的屬性draftOnly設定為true以標籤草稿內容,子節點仍將被添加到轉譯作業中。 此處isDeep將開始運行,並檢查父節點是否具有draftOnly屬性,並排除這些子節點。

在編輯器中,可以在​過濾器​頁籤中選中/取消選中​Is Deep

chlimage_1-59

以下是在UI中未勾選「Is Deep」時產生的xml範例:

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

承這適用於屬性。依預設,會繼承每個屬性,但是如果您希望某些屬性不會繼承到子項上,則可將該屬性標示為false,以便只套用到該特定節點。

在UI中,您可以在​屬性​標籤中選中/取消選中​繼承

chlimage_1-60

換屬性僅用於指定是否轉換屬性。

在UI中,您可以在​屬性​標籤中選中/取消選中​翻譯

updateDestinationLanguage 此屬性用於沒有文本但沒有語言代碼的屬性,例如jcr:language。用戶不是在翻譯文本,而是在從源到目標的語言區域設定。 這些屬性不會發送用於翻譯。

在UI中,您可以在​屬性​標籤中勾選/取消勾選​翻譯,但是對於具有語言代碼作為值的特定屬性。

為協助釐清updateDestinationLanguagetranslate之間的差異,以下是僅包含兩個規則之上下文的簡單範例:

chlimage_1-61

xml的結果如下所示:

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

手動編輯規則檔案

隨安裝的translation_rules.xml檔案包AEM含一組預設的翻譯規則。 您可以編輯檔案以支援翻譯項目的要求。 例如,您可以新增規則,以便翻譯自訂元件的內容。

如果編輯translation_rules.xml檔案,請將備份副本保存在內容包中。 安裝AEMService Pack或重新安AEM裝某些軟體包可以用原始檔案替換當前的translation_rules.xml檔案。 要在這種情況下恢復規則,可以安裝包含備份副本的軟體包。

注意

建立內容套件後,請在每次編輯檔案時重建該套件。

翻譯規則檔案示例

<nodelist>
    <!-- translation rules for Geometrixx Demo site (example) -->
    <node path="/content/geometrixx?lang=zh-Hant">
        <!-- 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=zh-Hant">
            <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=zh-Hant">
        <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=zh-Hant">
        <!-- 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