vraptor-i18n

Sonatype helps open source projects to set up maven repositories on http://oss.sonatype.org.

GroupId

GroupId

br.com.caelum.vraptor
ArtifactId

ArtifactId

vraptor-i18n
Last Version

Last Version

4.2.0-RC4
Release Date

Release Date

Type

Type

jar
Description

Description

vraptor-i18n
Sonatype helps open source projects to set up maven repositories on http://oss.sonatype.org.
Project URL

Project URL

http://maven.apache.org
Source Code Management

Source Code Management

http://github.com/caelum/vraptor-i18n

Download vraptor-i18n

How to add to project

<!-- https://jarcasting.com/artifacts/br.com.caelum.vraptor/vraptor-i18n/ -->
<dependency>
    <groupId>br.com.caelum.vraptor</groupId>
    <artifactId>vraptor-i18n</artifactId>
    <version>4.2.0-RC4</version>
</dependency>
// https://jarcasting.com/artifacts/br.com.caelum.vraptor/vraptor-i18n/
implementation 'br.com.caelum.vraptor:vraptor-i18n:4.2.0-RC4'
// https://jarcasting.com/artifacts/br.com.caelum.vraptor/vraptor-i18n/
implementation ("br.com.caelum.vraptor:vraptor-i18n:4.2.0-RC4")
'br.com.caelum.vraptor:vraptor-i18n:jar:4.2.0-RC4'
<dependency org="br.com.caelum.vraptor" name="vraptor-i18n" rev="4.2.0-RC4">
  <artifact name="vraptor-i18n" type="jar" />
</dependency>
@Grapes(
@Grab(group='br.com.caelum.vraptor', module='vraptor-i18n', version='4.2.0-RC4')
)
libraryDependencies += "br.com.caelum.vraptor" % "vraptor-i18n" % "4.2.0-RC4"
[br.com.caelum.vraptor/vraptor-i18n "4.2.0-RC4"]

Dependencies

compile (1)

Group / Artifact Type Version
br.com.caelum : vraptor jar 4.2.0-RC3

provided (5)

Group / Artifact Type Version
org.jboss.weld.servlet : weld-servlet-core jar 2.1.2.Final
org.jboss.weld : weld-core-impl jar 2.1.2.Final
javax.inject : javax.inject jar 1
org.mortbay.jetty : servlet-api jar 3.0.20100224
javax.servlet.jsp.jstl : jstl-api jar 1.2

test (3)

Group / Artifact Type Version
junit : junit jar 4.8.2
org.mockito : mockito-core jar 1.8.5
joda-time : joda-time jar 1.6

Project Modules

There are no modules declared in this project.

vraptor-i18n

Uma biblioteca simples, compatível com o jstl fmt:message para i18n nas views.

instalação e requerimentos

É possível fazer o download do vraptor-i18n.jar do repositório do Maven, ou configurado em qualquer ferramenta compatível:

<dependency>
	<groupId>br.com.caelum.vraptor</groupId>
	<artifactId>vraptor-i18n</artifactId>
	<version>4.0.1</version> <!-- or latest version -->
	<scope>compile</scope>
</dependency>

O vraptor-i18n requer servlet api 3.0

Acessando mensagens com jsp

Acesse as mensagens internacionalizadas com:

<h1>${t['meu_sistema']}</h1>

E em seu arquivo messages.properties:

meu_sistema = Bem vindo ao meu sistema

O resultado será:

<h1>Bem vindo ao meu sistema</h1>

Mensagens não encontradas

Caso a mensagem não tenha sido traduzida, o resultado será:

<h1><span class="i18n_missing_key">meu_sistema</span></h1>

Dessa maneira você pode fazer seus testes de integração procurarem por "i18n_missing_keys" em todas as telas que passam e quebrar o teste caso alguma passou para trás sem tradução.

Parametros

Você pode passar parâmetros para as mensagens da seguinte maneira:

<h1>${t['deve_ser_preenchido'].args('nome','Usuário')}</h1>

Com o arquivo de mensagens:

deve_ser_preenchido = O campo {0} deve ser preenchido para todo {1} novo.

E o resultado será:

O campo nome deve ser preenchido para todo Usuário novo.

Migrando

As duas regex a seguir ajudam a transformar seus jsps e tagfiles em uma batida só:

<fmt:message key="([^"]+)"/> ==> ${t['$1']}
<fmt:message key="([^"]+)"></fmt:message> ==> ${t['$1']}

Contribua com uma regex para o caso que usa parâmetros

Pluralization/Count

A internacionalização permite que você suporte mensagens com plural ou count de elementos. Dadas as mensagens:

messages_found.zero = No messages found
messages_found.one = One message found
messages_found.other = {0} messages found

Você pode invocar:

${t['messages_found'].count(messages.size())}

Caso o valor passado para count seja 0, ele usa a mensagem zero. Caso 1, ele chama one, caso diferente desses valores, ele chama other. Nos três casos o parâmetro {0} é o número de elementos.

Formatando datas

É possível formatar datas da seguinte forma:

${l[minhaData]}

Ou ainda passar formatos suportados pelo DateFormat:

${l[minhaData].format('full')}
${l[minhaData].format('short')}

Ou pelo SimpleDateFormat:

${l[minhaData].pattern('dd/MM/yyyy hh:mm:ss')}

Se quiser parametrizar a formatação da data no arquivo messages.properties, também é possível. Neste caso é só fazer o seguinte:

Configurar a chave desejada no arquivo messages.properties. A chave deve sempre começar com "formats.time":

formats.time.pirate = yyyy.MM.dd G 'at' HH:mm:ss z

Utilizar a formatação na view:

${l[minhaData].custom('pirate')}

Caso não seja passado nenhum formato personalizado, é usado o formato padrão DateFormat.DEFAULT

Números

Da mesma maneira que datas, você pode formatar números com:

${l[meuNumero]}

Similarmente você pode usar padrões do DecimalFormat:

${l[meuNumero].pattern("#,##0.00")}

E dar nomes a seus padrões:

${l[meuNumero].custom("percentage")}

Colocando então no messages.properties:

formats.number.percentage = ##0.00%

Tipos de data e números suportados

O l suporta além Date, Calendar e as datas do JodaTime. Nada de ficar dando getters loucos de um lado pro outro. Suportamos qualquer tipo de número que implementa Number (incluindo números primitivos, seus wrappers e BigInteger/BigDecimal).

Páginas de erro

Se sua página de erro está dentro de qualquer subdiretório de /WEB-INF/, ela automaticamente passará por um filtro que registra tanto t quanto l.

Alterando o locale padrão

Para que o plugin mude o idioma configurado para a sessão do usuário, basta adicionar no request o parâmetro _locale. Por exemplo, http://seudominio.com/seupath?_locale=pt_BR configurará o locale para Português do Brasil. O parâmetro pode ser enviado via POST também.

URL com locale

Além das URIs padrão do VRaptor o plugin aceita URIs com o locale no início, por exemplo:

/controller/action
/en-us/controller/action

Tradução de rotas

As rotas podem ser traduzidas adicionando um arquivo de propriedades para o locale com o nome routes_{locale}.properties. Para traduzir adicione as rotas com suas traduções no arquivo no formato chave/valor.

Exemplo de tradução para português brasileiro do locale padrão em inglês:

Conteúdo do arquivo routes_pt_BR.properties:

/controller/action/{param} = /controlador/acao/{param}

Rotas que respondem a este controller/action:

/controller/action/{param}
/en-us/controller/action/{param}
/pt-br/controlador/acao/{param}

Nota: Ter URLs diferentes para o mesmo conteúdo pode trazer efeitos negativos para SEO, então traduza apenas URLs que também possuam o conteúdo traduzido.

Release

mvn release:prepare
mvn release:perform
open http://oss.sonatype.org

Ajuda

Envie perguntas no forum de perguntas e respostas do http://www.guj.com.br

br.com.caelum.vraptor

Caelum

Versions

Version
4.2.0-RC4
4.2.0-RC3
4.1.0-RC4
4.1.0-RC3
4.1.0-RC2
4.0.1
4.0.0.Final
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0