Com o Cronapp é possível preparar o sistema para se adaptar a diferentes idiomas, tornando-o mais acessível e amigável para usuários ao redor do mundo. A ferramenta de internacionalização permite uma fácil gestão dos conteúdos traduzidos, garantindo uma experiência consistente e de qualidade para os usuários internacionais.

A internacionalização é um passo fundamental no desenvolvimento de software atual, pois possibilita a expansão e o alcance global de uma aplicação, proporcionando a oportunidade de atingir novos mercados e públicos. Com o suporte adequado à internacionalização, empresas e desenvolvedores podem garantir que suas soluções tecnológicas estejam prontas para enfrentar os desafios e demandas de um mundo cada vez mais conectado e multicultural.

Ao utilizar esse recurso, é importante ficar atento aos pontos abaixo:

  • Traduzir termos técnicos: se o seu aplicativo possui termos técnicos específicos de determinada área, é possível fornecer traduções manuais para garantir a compreensão correta desses termos pelos usuários em diferentes idiomas. Isso mantém a precisão e a clareza das informações técnicas, mesmo após a tradução.

  • Adaptar mensagens de marketing: ao expandir seu aplicativo para novos mercados, é importante considerar as diferenças culturais e os costumes locais. Com a internacionalização no Cronapp, é possível adaptar as mensagens de marketing para refletir as nuances culturais de cada região, tornando a comunicação mais relevante e atraente para os usuários internacionais.

  • Tradução de mensagens de erro e feedback para o usuário: ao desenvolver um aplicativo, é comum exibir mensagens de erro ou feedback informativo para orientar o usuário em caso de falhas ou ações incorretas. Com a internacionalização no Cronapp, é possível traduzir essas mensagens para diferentes idiomas.

Chaves de internacionalização

A funcionalidade Chaves de internacionalização pode ser acessada pelo menu Projeto. Existem três categorias de chaves de internacionalização: Web, Servidor e Mobile.


Figura 1 - Acessando chave de internacionalização


Ao acessar qualquer uma das três opções mostradas acima, a aba das Chaves de Internacionalização será exibida, confira abaixo cada elemento desta tela.


Figura 1.1 - Ambiente de internacionalização

  1. Tradução automática.
  2. Campo de seleção do idioma.
  3. Novo idiomaAdiciona um novo idioma.
  4. Importar da Cronapi: pesquisa por chaves de internacionalização no ambiente selecionado (web, mobile ou servidor).
  5. Campo de pesquisa.
  6. Lista de chaves.
  7. Campo para adicionar uma nova chave.
  8. Visualiza as chaves através da interface ou via texto: JSON (web ou mobile) ou properties (servidor).
  9. Área de inserção dos valores (textos) para a chave selecionada.

Idioma

Por padrão, cada chave de internacionalização recebe os idiomas Português (Brasil) e Inglês (Estados Unidos), porém, é possível adicionar novos idiomas, assim como removê-los. Neste tópico veremos como realizar essas ações.


Aplicações que possuem múltiplos idiomas podem adaptar-se ao idioma configurado no sistema:

  • Para aplicações web, o idioma será obtido a partir do cabeçalho Accept-Language do navegador do usuário.
  • Para aplicações mobile, o idioma será obtido a partir das configurações de linguagem do sistema operacional, iOS ou Android.


Adicionando um idioma

Ao selecionar novo idioma (destaque 1 da figura 2), uma janela será exibida, nela constam todos os idiomas suportados pelo Cronapp. Neste exemplo iremos adicionar o idioma "Italiano", após filtrar (destaque 2 da figura 2), selecionaremos o "Italiano (Itália)" (destaque 3 da figura 2).


Figura 2 - Adicionando um novo idioma

Removendo um idioma

Para remover um idioma, selecione a aba Arquivos (destaque 1 da figura 2.1) e, em seguida, clique com o botão direito sobre o arquivo do idioma que deseja Remover (destaque 2 da figura 2.1)


Figura 2.1 - Removendo um idioma

Chaves

A chave de internacionalização é uma identificação exclusiva usada para associar um texto a um idioma ou região específica. É importante destacar que não é possível ter duas chaves de internacionalização com o mesmo identificador. Se uma segunda chave for criada com o mesmo nome, ela irá substituir o conteúdo da primeira. Por exemplo, suponha que um usuário tenha criado uma chave chamada "minhaChave" e atribuído o texto "o menino joga bola" a ela. Se essa mesma chave for criada novamente, o conteúdo anterior será substituído por um valor vazio, uma vez que todas as chaves são criadas sem conteúdo.

Criar uma chave 

Para criar uma chave de internacionalização, informe a chave no campo indicado no destaque 1 da figura 3, em seguida, salve-a clicando no ícone "+", indicado pelo destaque 2 da figura 3.



Figura 3 - Criando uma chave de internacionalização

Internacionalizar chave

Existem duas formas de realizar a internacionalização de uma chave, a primeira é de forma manual, onde a tradução é inserida diretamente na caixa de texto da língua correspondente, e a segunda é de forma automática, onde a tradução ocorre através do botão "Traduzir a chave selecionada para todos os idiomas". Veremos abaixo de forma detalhada cada uma delas.

Manual

A tradução manual se aplica em casos em que você deseja fornecer traduções personalizadas e específicas para cada chave de internacionalização. Ao escolher traduzir manualmente, você pode escrever diretamente a tradução para cada idioma desejado. Essa abordagem é útil quando você precisa garantir que as traduções sejam precisas e adequadas ao contexto específico do seu aplicativo. 


Figura 3.1 - Traduzindo manualmente a chave de internacionalização

Automática

A tradução manual pode ser um processo mais demorado, principalmente em casos de grandes volumes de texto ou quando há a necessidade de suportar diversos idiomas. Nesses casos, a opção de tradução automática pode ser útil para agilizar o processo inicial de internacionalização.

Para realizar a tradução automática, selecione a chave que deseja internacionalizar (destaque 1 da figura 3.2), em seguida, insira o texto para a tradução no campo de um dos idiomas (2), selecione o idioma correspondente ao campo em que inseriu o texto (3) e, por fim, clique no botão "Traduzir a chave selecionada para todos os idiomas" (4). Caso precise, é possível ajustar manualmente as traduções automáticas para garantir a qualidade final.



Figura 3.2 - Traduzindo automaticamente a chave de internacionalização

Remover e Renomear uma chave

Clique com o botão direito em uma chave para realizar as ações de remover ou renomear a chave. 


Figura 3.3 - Remover e Renomear uma chave

Arquivos de internacionalização

Cada idioma terá um arquivo próprio, contendo as mesmas chaves de internacionalização e variando apenas os seus valores, referente a cada idioma. Esses arquivos estão localizados nas pastas i18n, tanto na parte cliente (web e mobile) quanto no servidor.

Para acessar as pastas, é necessário usar a IDE no modo avançado.

Cliente (web / mobile)

No lado das aplicações clientes, as chaves de internacionalização ficam armazenadas em atributos dentro de um objeto JSON. O nome de todos os arquivos estão em minúsculo e segue o padrão: locale_<código idioma>_<código_país>.json (mais detalhes).

Localização:

  • Web: src/main/webapp/i18n/
  • Mobile: src/main/mobileapp/www/i18n/


Figura 4 - Arquivo de internacionalização cliente

Servidor

No lado servidor, as chaves de internacionalização ficam armazenadas em arquivos no formato properties. O nome dos arquivos seguem o padrão: Messages_<código idioma>_<código_país>.properties (mais detalhes).

Localização:

  • Servidor: src/main/java/i18n/


Figura 4.1 - Arquivo de internacionalização servidor

Importar da Cronapi

Ao importar ou criar blocos high-code ou serviços SOAP, o Cronapp realiza uma análise dos campos presentes e identifica aqueles que podem ser internacionalizáveis. Esses campos são marcados como metadados internacionalizáveis, indicando que seu conteúdo precisa ser traduzido para diferentes idiomas. Esse conceito se aplica tanto do lado cliente quanto do lado servidor. No lado cliente existe  uma particularidade que a pasta i18n tem que estar no mesmo diretório do arquivo JavaScript que vai gerar os bloco de programação, confira mais detalhes no tópico "Internacionalização" da documentação Criando blocos cliente customizados (mobile e web). Abaixo exibiremos como aplicar esse conceito no lado servidor.

No exemplo a seguir, estamos criando um bloco servidor de forma high-code, cujo o objetivo é concaternar o nome e o sobrenome passados como parâmetros. Alguns atributos do @CronapiMetaData e @ParamMetaData aceitam chaves de internacionalização e podem ser facilmente identificado por estarem com dois caracteres de chaves (bracket) "{{nome_da_chave_de_internacionalizacao}}". Após criar e salvar a função, recompile e reabra o projeto.


Código em java contendo as anotações para internacionalização
@CronapiMetaData(categoryName = "Concatenar")
public class internacionalizar {

	@CronapiMetaData(type = "function", name = "{{concatena_name}}", description = "{{concatena_description}}", returnType = ObjectType.STRING)
	public static Var concatena(@ParamMetaData(type = ObjectType.STRING, description = "{{concatena_param_nome}}") Var name, @ParamMetaData(type = ObjectType.STRING, description = "{{concatena_param_sobrenome}}") Var sobrenome) throws Exception {
			return Var.valueOf(name.toString() + " " + sobrenome.toString());
		}
	
}


Após reabrir o projeto, acesse a parte servidor da funcionalidade Chaves de Internacionalização, como mostrado na figura 1. Clique em Importar da Cronapi (destaque 1 da figura 5) e procure pelas chaves de internacionalização obtidas do código Java (destaque 2 da figura 5).


Figura 5 - Importando chaves de internacionalização da Cronapi

Locais internacionalizáveis

Editor de views

O processo de criação de uma chave de internacionalização no Editor de views é semelhante para projetos web e mobile, sendo realizado por meio dos componentes visuais. Por padrão, todas as propriedades dos componentes visuais exibem o ícone de internacionalização "Traduzir" (destaque 1 na figura 6), porém, esse recurso só faz sentido em propriedades como Título ou Rótulo. Ao clicar nesse ícone, uma janela é aberta, permitindo selecionar ou criar uma chave de internacionalização.

O campo Chave possui o recurso de auto completar, assim, a cada novo caractere inserido, um filtro é feito e exibe a lista as chaves existentes. 

Inicialmente, o campo "Chave" já vem preenchido com o texto contido na propriedades, mas é possível alterá-lo. Neste exemplo, optamos por manter o título do componente, criando assim a chave "Marca". O texto a ser traduzido é informada no destaque 2 da figura 6, juntamente com o idioma correspondente (3). Ao clicar no botão "Traduzir a chave selecionada para todos os idiomas" (4), é possível visualizar a tradução automática (5).


Figura 6 - Criando chave de internacionalização no Editor de views

Diagrama

É possível realizar internacionalizações através dos rótulos nos atributos no Diagrama de dados. Para ilustrar, trouxemos a imagem abaixo. Acesse o diagrama de dados (destaque 1 da figura 6.1) e abra uma classe, neste exemplo criamos a classe "carro" (2), clique na opção "Editar" (3) de qualquer atributo. Ao lado da propriedade "Rótulo" é possível ver o ícone "Traduzir" (4), clicando nele será aberta a janela Internacionalizar. Esse procedimento irá criar uma chave de internacionalização nos arquivos i18n web, mobile e servidor.


Figura 6.1 - Criando chave de internacionalização no rótulo dos atributos das classes no Diagrama de dados

Bloco de programação

Outra forma de realizar internacionalizações no lado cliente e servidor é utilizando o bloco text_i18n, ele permite traduzir um ou mais idiomas e sua característica principal é isolar palavras que o usuário não deseja que sejam traduzidas, para fazer isso basta utilizar chaves com números inteiros dentro, exemplo: "{0}, {1}, {2}...etc", cada chave representa um parâmetro diferente, para mais detalhes acesse as documentações text_i18n (cliente) e text_i18n (servidor).