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
Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top