Meu amigo Caio postou em seu blog uma boa dica para trabalhar com idiomas no Flex, resolvi dar uma filtrada e compartilhar aqui no blog. Primeiramente vou explicar como traduzir e fazer o controle de idiomas dos componentes do Flex, e em seguida explicarei como controlar idiomas dos textos de sua aplicação.
Traduzindo os componentes do Flex
Você pode traduzir os componentes do Flex de duas maneiras: 1°
- Baixe aqui o framework ( e rpc ) já traduzido (pt_BR) pela própria Adobe;
- Descompacte o arquivo na pasta C:\Arquivo de Programas\Adobe\Flex Builder 3\sdks\3.2.0\frameworks\locale;
- Acesse as propriedades do projeto, clique em “Flex Compiler”, em “Aditional compiler arguments” altere o argumento -locale para pt_BR
Pronto, os componentes do Flex estarão traduzidos para o português do brasil.
2°
Este método é para aqueles que queiram criar ou alterar traduções.
Abra o prompt de comando, e navegue até a pasta C:\Arquivos de Programas\Adobe\Flex Builder 3\sdks\3.2.0\bin; Digite o comando:
copylocale.exe en_US pt_BR
Isto irá criar os arquivos necessários para fazer a tradução ou alteração. Para ver-los, acesse a pasta C:\Arquivos de Programas\Adobe\Flex Builder 3\sdks\3.2.0\frameworks\locale\pt_BR.
Serão criados 4 arquivos com a extenção .swc, dentro desses arquivos contem uma pasta chamada locale, e nesta pasta, arquivos com a extenção .properties, os quais o conteúdo é a tradução em modo key=value.
Para visualizar e alterar esses arquivos .properties, abra o arquivo .swc correspondente usando o WinRAR.
Aqui você encontra as traduções do framework feitas pela própria adobe, e aqui vc encontra as traduções do rpc.
É só baixar os arquivos .properties e substituir os do .swc, feito isso, acesse as propriedades do projeto, clique em “Flex Compiler”, em “Aditional compiler arguments” altere o argumento -locale para pt_BR.
Pronto, os componentes do Flex ja foram traduzidos, agora, vamos criar um exemplo de como fazer traduzir os textos de sua aplicação.
Traduzindo sua aplicação e criando um controle de idiomas.
Crie uma nova aplicação, e na raiz do seu projeto cria uma pasta chamada locale, dentro desta pasta crie mais duas pastas: pt_BR e en_US.
Dentro das pastas pt_BR e en_US, você irá criar um arquivo chamado Application.properties com o seguinte conteúdo para cada um deles:
No arquivo Application.properties da pasta en_US:
aplicacao.nome=Hello Word!!
No arquivo Application.properties da pasta pt_BR:
aplicacao.nome=Olá Mundo!!
Atenção: É necessário que o arquivo esteja como UTF-8, caso não saiba como tornar seu arquivo UTF-8, clique nele com o botão direito ( no Flex Builder ), em “Text file encoding” clique em “Other” e selecione UTF-8.
Acesse as propriedade do seu projeto, clique em “Flex Compiler”, em “Aditional compiler arguments” altere o argumento -locale pt_BR para -locale=en_US,pt_BR e logo após adicione o seguinte argumento: -source-path=../locale/{locale}
Pronto. Agora, copie o código abaixo em sua aplicação para testar.
<?xml version="1.0" encoding="UTF-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*">
<mx:Metadata>
[ResourceBundle("Application")] //Nome do arquivo .properties
</mx:Metadata>
<mx:Script>
<![CDATA[
[Bindable]
private var Locais:Array = [ "en_US" , "pt_BR" ];
private function IniciarCombo(event:Event):void
{
/*A ordem nessa array é dada conforma o que foi colocado no
Flex Compiler > additional compiler arguments*/
cboLocais.selectedIndex = Locais.indexOf(resourceManager.localeChain[0]);
}
private function AlterarLocal(event:Event):void
{
// Seta o Local que será usado
// "en_US" ou "pt_BR "
resourceManager.localeChain = [ cboLocais.selectedItem ];
}
]]>
</mx:Script>
<mx:Label text="{resourceManager.getString('Application', 'aplicacao.nome')}" fontSize="48" x="10" y="40"/>
<mx:ComboBox id="cboLocais" dataProvider="{Locais}"
initialize="IniciarCombo(event)"
change="AlterarLocal(event)" x="10" y="10"/>
<mx:DateChooser x="10" y="113"/>
</mx:Application>
Clique aqui para visualizar o exemplo deste post.
Clique aqui para baixar os arquivos deste post.
Bom, é isso ae… Qualquer duvida deixe comentários.
UPDATE 14/01/2009: Na TV Adobe achei um screencast que explica exatamente tudo isso que postei no blog, só que em vídeo, vale a pena dar uma olhada ( em Inglês ). (http://tv.adobe.com/#vi+f1472v1032)
Abraços
Pingback
by Flex: tradução para pt_br
05 Jan 2009 at 09:42
[...] Uma dica quente do meu primo Marcos Junior: http://www.webmarcos.net/blog/2009/01/trabalhando-com-varios-idiomas-no-flex/. [...]
by Flávio
11 Jan 2009 at 10:48
Pra mim dá esse erro: unable to open ‘../locale/en_US’
by Flávio
11 Jan 2009 at 10:52
Problema resolvido, como eu não uso a pasta src eu precisa remover os dois pontos na frente do /locale
by Arnaldo Filho
23 Mar 2009 at 09:16
Marcos,
Cara..vc me ajudou muito…obrigado..
Agora..uma pergunta..
Como eu faço pra uma vez que mudei na minha tela de login a minha linguagem…ele mude todo o resto do sistema…
tem um exemplo pra me ajudar??
Obrigado
by Marcos Junior
24 Mar 2009 at 04:45
@Arnaldo Filho
Olá Arnaldo, que bom que tenha lhe ajudado.
Cara, este exemplo que eu postei já faz isso… mais especificamente na parte “Traduzindo sua aplicação e criando um controle de idiomas.”
baixe o arquivo de exemplo e testa ai… Se mesmo assim você não conseguiu fazer entra em contato novamente.
Abraços!
by Iron
24 Mar 2009 at 10:41
No meu caso deu erro, estou realizando apenas “Traduzindo os componentes do Flex”, ele dá o seguinte erro.
“This panel is only available for CSS and MXML” em
States
Flex Properties
Components
Obrigado.
by Christiano Morais
02 Jul 2009 at 00:39
Show de bola, este post me acendeu um holofote nas idéias. Muito grato mesmo pela dica e espero poder retribuir algum dia!
by Marcelo Daniel
26 Sep 2009 at 12:16
Show de bola marcos! muito bom.
by Flávio
12 Mar 2010 at 16:19
Eu sei que faz bastante tempo do post. Buuuut, qual problema pode ser esse?
1018: Duplicate class definition: en_US$Application_properties.
Estranho que aqui no Windows 7 quando tento executar o copylocal.exe ele diz que não foi encontrado o JRE =/