As APIs Java™ e JavaScript permitem internacionalizar strings nos seguintes tipos de recursos:
Para obter uma visão geral do processo de internacionalização e localização, consulte Internacionalizar componentes.
A variável com.day.cq.i18n
O pacote Java™ permite exibir strings localizadas na interface do usuário. A variável I18n
A classe fornece a get
método que recupera strings localizadas do dicionário Adobe Experience Manager (AEM). O único parâmetro obrigatório do get
method é a cadeia de caracteres literal no idioma inglês. O inglês é o idioma padrão da interface do usuário do. O exemplo a seguir localiza a palavra Search
:
i18n.get("Search");
A identificação da sequência de caracteres no idioma inglês difere das estruturas de internacionalização típicas, onde um ID identifica uma sequência de caracteres e é usado para fazer referência à sequência de caracteres no tempo de execução. Usar o literal de string em inglês oferece os seguintes benefícios:
Há duas maneiras de determinar o idioma preferido pelo usuário:
A propriedade language da conta do usuário é o método preferido porque é mais confiável. No entanto, o usuário deve estar conectado para usar esse método.
A classe I18n fornece dois construtores. A maneira como você determina a linguagem preferencial do usuário determina o construtor a ser usado.
Para apresentar a cadeia de caracteres no idioma especificado na conta do usuário, use o seguinte construtor (após a importação com.day.cq.i18n.I18n)
:
I18n i18n = new I18n(slingRequest);
O construtor usa o SlingHTTPRequest
para recuperar a configuração de idioma do usuário.
Para usar o local da página para determinar o idioma, primeiro obtenha o ResourceBundle para o idioma da página solicitada:
Locale pageLang = currentPage.getLanguage(false);
ResourceBundle resourceBundle = slingRequest.getResourceBundle(pageLang);
I18n i18n = new I18n(resourceBundle);
Use o get
método do I18n
para internacionalizar uma string. O único parâmetro obrigatório do get
é a sequência de caracteres a ser internacionalizada. A string corresponde a uma string em um dicionário do Translator. O método get pesquisa a string no dicionário e retorna a tradução para o idioma atual.
O primeiro argumento do get
deve estar em conformidade com as seguintes regras:
String
não é aceitável.i18n.get("Enter a search keyword");
Especifique a dica de tradução da string internacionalizada para distinguir entre strings duplicadas no dicionário. Use o segundo parâmetro opcional do get
para fornecer a dica de tradução. A dica de tradução deve corresponder exatamente à propriedade Comentário do item no dicionário.
Por exemplo, o dicionário contém a string Request
duas vezes: uma como verbo e outra como substantivo. O código a seguir inclui a dica de tradução como argumento na variável get
método:
i18n.get("Request","A noun, as in a request for a web page");
Inclua variáveis na string localizada para criar significado contextual em uma frase. Por exemplo, depois de fazer logon em um aplicativo web, a página inicial exibe a mensagem "Bem-vindo de volta, Administrador. Você tem duas mensagens na sua caixa de entrada." O contexto da página determina o nome de usuário e o número de mensagens.
No dicionário, as variáveis são representadas em strings como índices entre colchetes. Especifique os valores das variáveis como argumentos da variável get
método. Os argumentos são colocados após a dica de tradução e os índices correspondem à ordem dos argumentos:
i18n.get("Welcome back {0}. You have {1} messages.", "user name, number of messages", user.getDisplayName(), numItems);
A string internacionalizada e a dica de tradução devem corresponder exatamente à string e ao comentário no dicionário. Você pode omitir a dica de localização fornecendo um null
como o segundo argumento.
A variável I18N
define um parâmetro estático get
que é útil quando você deve localizar algumas strings. Além dos parâmetros de um objeto get
, o método estático exige o SlingHttpRequest
ou o ResourceBundle
que você está usando, de acordo com a forma como está determinando o idioma preferido do usuário:
Usar a preferência de idioma do usuário: forneça o SlingHttpRequest como o primeiro parâmetro.
I18n.get(slingHttpRequest, "Welcome back {}. You have {} messages.", "user name, number of messages", user.getDisplayName(), numItems);
Usar a linguagem da página: forneça o ResourceBundle como o primeiro parâmetro.
I18n.get(resourceBundle,"Welcome back {}. You have {} messages.", "user name, number of messages", user.getDisplayName(), numItems);
A API do JavaScript permite localizar strings no cliente. Assim como com Java™ e JSP , a API JavaScript permite identificar strings para localização, fornecer dicas de localização e incluir variáveis nas strings localizadas.
A variável granite.utils
pasta da biblioteca do cliente O fornece a API do JavaScript. Para usar a API, inclua essa pasta da biblioteca do cliente na sua página. As funções de localização usam o Granite.I18n
namespace.
Antes de apresentar strings localizadas, defina o local usando o Granite.I18n.setLocale
função. A função requer o código de idioma do local como argumento:
Granite.I18n.setLocale("fr");
Para apresentar uma string localizada, use o Granite.I18n.get
função:
Granite.I18n.get("string to localize");
O exemplo a seguir internacionaliza a string "Bem-vindo de volta":
Granite.I18n.setLocale("fr");
Granite.I18n.get("string to localize", [variables], "localization hint");
Os parâmetros de função são diferentes do método Java™ I18n.get:
O exemplo a seguir usa o JavaScript para localizar a mensagem "Bem-vindo de volta, Administrador. Você tem duas mensagens na sua caixa de entrada." frase:
Granite.I18n.setLocale("fr");
Granite.I18n.get("Welcome back {0}. You have {1} new messages in your inbox.", [username, numMsg], "user name, number of messages");
As cadeias de caracteres da interface do usuário geralmente se baseiam nas propriedades do nó JCR. Por exemplo, a variável jcr:title
propriedade de uma página é normalmente usada como o conteúdo da variável h1
elemento no código da página. A variável I18n
A classe fornece a getVar
método para localizar essas cadeias de caracteres.
O exemplo de script JSP a seguir recupera o jcr:title
do repositório e exibe a cadeia de caracteres localizada na página:
<% title = properties.get("jcr:title", String.class);%>
<h1><%=i18n.getVar(title) %></h1>
Semelhante dicas de tradução na API Java™, você pode fornecer dicas de tradução para distinguir cadeias de caracteres duplicadas no dicionário. Forneça a dica de tradução como uma propriedade do nó que contém a propriedade internacionalizada. O nome da propriedade de dica é composto do nome da propriedade internacionalizada com a variável _commentI18n
sufixo:
${prop}_commentI18n
Por exemplo, uma variável cq:page
O nó inclui a propriedade jcr:title que está sendo localizada. A dica é fornecida como o valor da propriedade chamada jcr:title_commentI18n.
Teste se você internacionalizou todas as strings na interface do usuário. Para ver quais cadeias de caracteres são cobertas, defina o idioma do usuário como zz_ZZ e abra a interface do usuário no navegador da Web. As strings internacionalizadas são exibidas com uma tradução stub no seguinte formato:
USR_*Default-String*_尠
A imagem a seguir mostra a tradução de stub para a página inicial do AEM:
Para definir o idioma do usuário, configure a propriedade language do nó de preferências para a conta do usuário.
O nó de preferências de um usuário tem um caminho como este:
/home/users/<letter>/<hash>/preferences