AEM as a Cloud Service: o cache ResourceBundle de i18n não é atualizado após as alterações do dicionário
No Adobe Experience Manager as a Cloud Service, as atualizações nos arquivos do dicionário i18n em /conf podem não aparecer no cache do Sling ResourceBundle, fazendo com que os rótulos da interface exibam chaves i18n não resolvidas em vez do texto traduzido.
Descrição description
Ambiente
Adobe Experience Manager as a Cloud Service (AEMaaCS) (todas as versões)
Problema/Sintomas
- Chaves i18n recém-adicionadas ou atualizadas em
/conf/.../i18n/en.jsonoufr.jsonestão presentes no repositório JCR, mas não aparecem no cache Sling ResourceBundle. - Os rótulos da interface do usuário exibem chaves i18n brutas (por exemplo,
lblExampleKey) em vez do texto traduzido esperado no ambiente do autor. - As tentativas de recriar bibliotecas de clientes ou invalidar o cache não resolvem o problema.
Causa
Arquivos de dicionário i18n obsoletos ou conflitantes em /conf podem impedir que o cache do Sling ResourceBundle seja atualizado com novas chaves. Isso resulta em rótulos de interface do usuário não resolvidos. Excluir os nós obsoletos e garantir que apenas os dicionários pretendidos estejam presentes permite que o cache atualize e exiba as traduções corretas.
Resolução resolution
Siga as etapas abaixo para resolver o problema:
- Identifique arquivos obsoletos ou conflitantes do dicionário i18n em
/conf, como/conf/<project>/i18n/en.jsonefr.json. - Crie um pacote de conteúdo FileVault com uma definição de filtro que direcione os arquivos obsoletos do dicionário para exclusão. Use
mode="replace"para cada nó de dicionário obsoleto que você deseja remover e mantenha a carga do pacote vazia para esses caminhos para que a instalação remova os nós especificados do repositório. - Implante o pacote por meio do pipeline de CI/CD para o ambiente de criação.
- Replicar as alterações no ambiente de publicação para garantir a consistência em todos os níveis.
- Verifique se os arquivos obsoletos do dicionário, como
/conf/<project>/i18n/en.jsonefr.json, não estão mais acessíveis e retorne uma resposta 404 quando acessados diretamente. - Confirme se os rótulos da interface do usuário agora resolvem para o texto traduzido correto.
Observação
Se você estiver migrando dicionários para o /apps, adicione os novos dicionários lá e certifique-se de que os filtros antigos do /conf usam o modo de substituição para remover nós obsoletos na mesma versão.
Leitura relacionada
Internacionalizando Componentes e Aplicativos