Melhores práticas para a Internacionalização de um aplicativo Flex?
-
02-07-2019 - |
Pergunta
Eu estou olhando para a internacionalização de um aplicativo Flex eu estou trabalhando e estou curioso se existem melhores práticas e recomendações para o fazer.
pesquisando informações, tais resultados em um punhado de pequenos artigos e posts, cada um em fazê-lo de forma diferente, e as vantagens e desvantagens não são exatamente claro.
editado para escopo limitado:
- necessidade de apoiar apenas dois idiomas (en_CA e fr_CA)
- Necessidade de ser capaz de chave em tempo de execução
Solução
É claro que, depois de pesquisar um pouco mais me deparo com um artigo sobre runtime localização .
E seguiu estes passos:
Adicione a seguinte aos argumentos do compilador para especificar os locais suportados e seu caminho: (Em Flex Builder, selecione projeto e ir propriedades -> Flex Compiler -> argumentos adicionais do compilador)
-locale=en_CA,fr_CA -source-path=locale/{locale}
Criar os seguintes arquivos:
src/locale/en_CA/resources.properties
src/locale/fr_CA/resources.properties
E, em seguida, o compilador reclama: unable to open 'C:\Program Files\Adobe\Flex Builder 3\sdks\3.1.0\frameworks\locale\en_CA'
O que parece estar relacionado com bug SDK-12507
Trabalho em torno de:
No diretório sdks\3.1.0\bin
, execute os seguintes comandos:
copylocale en_US en_CA
copylocale en_US fr_CA
Isto irá criar os diretórios localidade na instalação Flex Builder e construir alguns recursos necessários para eles.
Então, em seus arquivos .mxml
, referenciar o pacote de recursos:
<mx:Metadata>
[ResourceBundle("resources")]
</mx:Metadata>
e internacionalizar as strings:
<mx:TitleWindow title="Window Title">
torna-se:
<mx:TitleWindow
title="{resourceManager.getString('resources', 'windowTitle')}">
e
var name:String = "Name";
torna-se:
var name:String = resourceManager.getString("resources", "name");
E em seu arquivo src/locale/en_CA/resources.properties
:
windowTitle=Window Title
name=Name