internacionalização

Boa tarde,
estou montando uma tela que apresenta alguns labels que são determinados pelo arquivo de internacionalização.
E gostaria de saber se este label poderia ser uma variavel, da seguinte forma:

<h:outputText value="#{bundle['texto']}" />

onde ‘texto’ é o nome do atributo da i18n.
É possivel fazer algo do tipo:

<h:outputText value="#{bundle['objeto.x']}" />

onde ‘objeto.x’ é um objeto que foi trazido do banco?

Creio que você possa fazer da seguinte maneira.

<h:outputText value="#{objeto.label}" />

Assim, no backbean, quando você recuperar x do banco, sete em label o valor internacionalizado.

Não tenho certeza de dessa maneira funciona.

<h:outputText value="#{bundle['objeto.x']}" />

Peço desculpas por não ter sido claro.
Vou explicar melhor:

tenho um objeto chamado endereco com a seguinte estrutura:

Endereco
     int tipoEndereco;
     String endereco;

e para mostrar o resultado da consulta fiz assim:

<h:dataTable value="Aqui o managedBean" var="end">

     ...
     <h:outputText value="#{end.endereco}" />//nesta linha imprime a String endereco;
    ...
//na outra coluna 
   ...
    <h:outputText value="#{bundle[?]}" />//qual valor coloco aqui?
   ...

</h:dataTable>

na variavel tipoEndereco que vem do objeto ela pode assumir dois valores, 01 ou 02, se for 01 preciso imprimir residencia, e se for 02, comercial.
Como faço isso?

Renato,

tenho algo parecido com o seu, onde eu preciso mostrar o tipo do nivel de servico. Porem o valor de type é uma String proveniente de um enum.

<rich:subTable value="#{nsm.niveisServico}" var="ns">
...
<h:outputText value="#{bundle[ns.type]}" />
...
public enum Type {
        DIARIO, ONLINE, PERIODO
}

Desse modo quando uso ns.type o valor retornado será uma string (“DIARIO”, “ONLINE”, “PERIODO”). Se essas keys estiverem no arquivo irá funcionar como desejado.

Beleza, na sua situação já imprimi a String direto no meu caso precisaria fazer algo do tipo:
se tipoEndereco for igual a 01 imprimi ‘residencial’
se tipoEndereco for igual a 02 imprimi ‘comercial’
e estes valores ‘comercial’ e ‘residencial’ são trazidos do arquivo de i18n.
Eu acho que deveria ser um condicional no arquivo de i18n, o que vc acha?

Renato,

eu não usaria 01 e 02 para representar o tipo, pelo que percebi parece que você está usando assim pois deve ter uma tabela onde pode cadastrar os tipos. Estou certo?
Se algum dia alguém mudar esses códigos sua aplicação estaria comprometida…

Eu recomendaria o uso de constraints, R para residencial, C para comercial e assim por diante. É claro que você precisará fazer uma análise para ver se poderão existir ouros tipos.

Espero ter ajudado.

Marcos,
Valeu cara, ajudou com certeza, vou estudar isto que vc comentou…
Até mais!