Identificação de conteúdo para traduzir

As regras de tradução identificam o conteúdo a ser traduzido para páginas, componentes e ativos que estão incluídos ou excluídos de projetos de tradução. Quando uma página ou ativo está sendo traduzido, o AEM extrai esse conteúdo para que ele possa ser enviado ao serviço de tradução.

As páginas e os ativos são representados como nós no repositório JCR. O conteúdo extraído é um ou mais valores de propriedade dos nós. As regras de tradução identificam as propriedades que contêm o conteúdo a ser extraído.

As regras de tradução são expressas em formato XML e armazenadas nesses locais possíveis:

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

O arquivo se aplica a todos os projetos de tradução.

As regras incluem as seguintes informações:

  • O caminho do nó ao qual a regra se aplica
    • A regra também se aplica aos descendentes do nó.
  • Os nomes das propriedades do nó que contêm o conteúdo a ser traduzido
    • A propriedade pode ser específica para um tipo de recurso específico ou para todos os tipos de recurso.

Por exemplo, você pode criar uma regra que traduza o conteúdo que os autores adicionam a todos os componentes de texto nas suas páginas. A regra pode identificar o nó /content e a propriedade text do componente core/wcm/components/text/v2/text.

Existe um console que foi adicionado para configurar regras de tradução. As definições na interface do usuário preencherão o arquivo para você.

Para obter uma visão geral dos recursos de tradução de conteúdo no AEM, consulte Tradução de conteúdo para sites multilíngues.

OBSERVAÇÃO

O AEM suporta o mapeamento de um para um entre os tipos de recursos e atributos de referência para a tradução do conteúdo referenciado em uma página.

Sintaxe de regra para páginas, componentes e ativos

Uma regra é um elemento node com um ou mais elementos secundários property e zero ou mais elementos secundários node:

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

Cada um desses elementos node tem as seguintes características:

  • O atributo path contém o caminho para o nó raiz da ramificação à qual as regras se aplicam.
  • Os elementos filho property identificam as propriedades do nó a serem traduzidas para todos os tipos de recursos:
    • O atributo name contém o nome da propriedade.
    • O atributo opcional translate é igual a false se a propriedade não for traduzida. Por padrão, o valor é true. Esse atributo é útil ao substituir regras anteriores.
  • Os elementos secundários node identificam as propriedades do nó a serem traduzidas para tipos de recursos específicos:
    • O atributo resourceType contém o caminho que é resolvido para o componente que implementa o tipo de recurso.
    • Os elementos filho property identificam a propriedade do nó a ser traduzida. Use esse nó da mesma forma que os elementos secundários property para as regras do nó.

A seguinte regra de exemplo faz com que o conteúdo de todas as propriedades text seja traduzido para todas as páginas abaixo do nó /content. A regra é efetiva para qualquer componente que armazene conteúdo em uma propriedade text , como o componente de texto.

<node path="/content">
          <property name="text"/>
</node>

O exemplo a seguir traduz o conteúdo de todas as text propriedades e também traduz outras propriedades do componente de imagem. Se outros componentes tiverem propriedades com o mesmo nome, a regra não se aplica a eles.

<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>

Sintaxe de regra para extração de ativos das páginas

Use a sintaxe de regra a seguir para incluir ativos incorporados ou referenciados de componentes:

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

Cada elemento assetNode tem as seguintes características:

  • Um atributo resourceType que é igual ao caminho que é resolvido para o componente
  • Um atributo assetReferenceAttribute que é igual ao nome da propriedade que armazena o binário do ativo (para ativos incorporados) ou o caminho para o ativo referenciado

O exemplo a seguir extrai imagens do componente de imagem:

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

Substituição de regras

O arquivo translation_rules.xml consiste em um elemento nodelist com vários elementos secundários node. AEM lê a lista de nós de cima para baixo. Quando várias regras têm como alvo o mesmo nó, a regra que está menor no arquivo é usada. Por exemplo, as seguintes regras fazem com que todo o conteúdo nas propriedades text seja traduzido, exceto para a ramificação /content/mysite/en das páginas:

<nodelist>
     <node path="/content”>
           <property name="text" />
     </node>
     <node path=“/content/mysite/en”>
          <property name=“text” translate=“false" />
     </node>
<nodelist>

Propriedades do filtro

Você pode filtrar nós que têm uma propriedade específica usando um elemento filter .

Por exemplo, as seguintes regras fazem com que todo o conteúdo nas propriedades text seja traduzido, exceto para os nós que têm a propriedade draft definida como true.

<nodelist>
    <node path="/content”>
     <filter>
   <node containsProperty="draft" propertyValue="true" />
     </filter>
        <property name="text" />
    </node>
<nodelist>

Interface das regras de tradução

Um console também está disponível para configurar regras de tradução.

Para acessá-lo:

  1. Navegue até Ferramentas e depois Geral.

  2. Selecione Configuração de Tradução.

Na interface do usuário das regras de tradução, é possível:

  1. Adicionar contexto, que permite que você adicione um caminho.

    Adicionar contexto de tradução

  2. Use o navegador de caminho para selecionar o contexto necessário e toque ou clique no botão Confirm para salvar.

    Selecionar contexto

  3. Em seguida, é necessário selecionar o contexto e clicar em Editar. Isso abrirá o Editor de regras de tradução.

    Editor de regras de tradução

Há quatro atributos que você pode alterar por meio da interface do usuário:

  • isDeep
  • inherit
  • translate
  • updateDestinationLanguage

isDeep

isDeep é aplicável em filtros de nó e é verdadeiro por padrão. Verifica se o nó (ou seus ancestrais) contém essa propriedade com o valor da propriedade especificado no filtro. Se falso, ele só verifica o nó atual.

Por exemplo, nós filho são adicionados a um trabalho de tradução mesmo quando o nó pai tem a propriedade draftOnly definida como true para sinalizar o conteúdo de rascunho. Aqui isDeep entra em cena e verifica se os nós pai têm a propriedade draftOnly como true e exclui esses nós filhos.

No editor, você pode marcar/desmarcar Is Deep na guia Filters.

Regras de filtro

Este é um exemplo do XML resultante quando Is Deep está desmarcado na interface do usuário:

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

herdar

inherit é aplicável às propriedades. Por padrão, cada propriedade é herdada, mas se você quiser que alguma propriedade não seja herdada pelo filho, poderá marcar essa propriedade como false para que seja aplicada somente a esse nó específico.

Na interface do usuário, você pode marcar/desmarcar Herdar na guia Propriedades.

traduzir

translate é usada apenas para especificar se uma propriedade deve ser traduzida ou não.

Na interface do usuário, você pode marcar/desmarcar Translate na guia Properties.

updateDestinationLanguage

updateDestinationLanguage é usado para propriedades que não têm texto, mas códigos de idioma, por exemplo jcr:language. O usuário não está traduzindo o texto, mas o idioma local da origem para o destino. Essas propriedades não são enviadas para tradução.

Na interface do usuário, você pode marcar/desmarcar Translate na guia Properties para modificar esse valor, mas para as propriedades específicas que têm códigos de idioma como valor.

Para ajudar a esclarecer a diferença entre updateDestinationLanguage e translate, aqui está um exemplo simples de um contexto com apenas duas regras:

exemplo updateDestinationLanguage

O resultado no xml terá esta aparência:

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

Editar o arquivo de regras manualmente

O arquivo translation_rules.xml instalado com AEM contém um conjunto padrão de regras de tradução. Você pode editar o arquivo para atender aos requisitos dos seus projetos de tradução. Por exemplo, você pode adicionar regras para que o conteúdo dos componentes personalizados seja traduzido.

Se você editar o arquivo translation_rules.xml, mantenha uma cópia de backup em um pacote de conteúdo. A reinstalação de determinados pacotes de AEM pode substituir o arquivo translation_rules.xml atual pelo original. Para restaurar as regras nessa situação, você pode instalar o pacote que contém sua cópia de backup.

OBSERVAÇÃO

Após criar o pacote de conteúdo, recrie-o sempre que editar o arquivo.

Exemplo de arquivo de regras de tradução

<?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>

Nesta página