Para ilustrar melhor o exemplo, segue o XML que estou utilizando:

Arquivo: localization_pt_BR.xml

<?xml version="1.0" encoding="utf-8"?>
<localization>
    <applicationTitle label="Servicon - Gerenciamento de Histórico de
Atendimento" />
    <managementPanelTitle label="Gerenciamento" />
    <editHistoryWindowAddTitle label="Inserir dados"/>
    <editHistoryWindowUpdateTitle label="Atualizar dados"/>
    <actions label="Ações"/>
    <customerName label="Nome do cliente"/>
    <lastVisit label="Última visita"/>
    <nextVisit label="Próxima visita"/>
    <subject label="Assunto"/>
    <comments label="Detalhes"/>
    <add label="Adicionar"/>
    <cancel label="Cancelar"/>
    <save label="Gravar"/>
    <clear label="Excluir"/>
    <close label="Fechar"/>
    <dateDayNames label="Dom,Seg,Ter,Qua,Qui,Sex,Sab"/>
    <dateMonthNames
label="Jan,Fev,Mar,Abr,Mai,Jun,Jul,Ago,Set,Out,Nov,Dez"/>
</localization>

-- 
Vicente Maciel Junior
Independent Web Developer & Consultant
Adobe Advanced Certified Developer
Adobe Certified Instructor (ColdFusion & Flash Platform)
+55 (71) 8120-0035 / 9212-0909 - MSN: [EMAIL PROTECTED]
http://teclandoalto.blogspot.com


2008/4/17, Vicente Maciel Junior <[EMAIL PROTECTED]>:
>
> Eu costumo fazer o seguite:
>
> 1 - Ter uma classe Singleton (Model) que possui variáveis com todo o
> conteúdo de apresentação (labels) que irei utilizar na aplicação. A depender
> do tamanho dessa aplicação, separo uma classe dessas para cada tela (view).
>
> Ex:
>
> // [start] CHMLocalizationModel.as
> package br.com.vpmjr.apps.chm.model{
>
>     [Bindable]
>     public class CHMLocalizationModel{
>
>         private static var instance:CHMLocalizationModel;
>
>         public static var LOCALE_LANG_PT_BR:String = "pt_BR";
>         public static var LOCALE_LANG_EN_US:String = "en_US";
>         public static var LOCALE_LANG_SP_SP:String = "sp_SP";
>         public static var LOCALE_LANG_FR_FR:String = "fr_FR";
>         public static var LOCALE_LANG_DE_DE:String = "de_DE";
>         public static var LOCALE_LANG_IT_IT:String = "it_IT";
>         public static var LOCALE_LANG_JP_JP:String = "jp_JP";
>
>         /* ========== LABELS ========== */
>
>         public var currentLocale:String;
>
>         public var applicationTitle:String = "Customer History Manager";
>
>         public var managementPanelTitle:String = "Management Panel";
>
>         public var editHistoryWindowAddTitle:String = "Insert history
> data";
>         public var editHistoryWindowUpdateTitle:String = "Update history
> data";
>
>         public var actions:String = "Actions";
>         public var customerName:String = "Customer name";
>         public var lastVisit:String = "Last visit";
>         public var nextVisit:String = "Next visit";
>         public var subject:String = "Subject";
>         public var comments:String = "Comments";
>
>         public var add:String = "Add";
>         public var cancel:String = "Cancel";
>         public var save:String = "Save";
>         public var clear:String = "Delete";
>         public var close:String = "Close";
>
>         public var dateDayNames:String = "Sun,Mon,Tue,Wed,Thu,Fri,Sat";
>
>         public var dateMonthNames:String =
> "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec";
>
>         /* ========== LABELS ========== */
>
>         public function CHMLocalizationModel(_private:Private){
>
>             if(!_private){
>                 throw new Error("Singleton. Use getInstance()");
>             }
>
>         }
>
>         public static function getInstance():CHMLocalizationModel{
>
>             if(instance == null){
>
>                 instance = new CHMLocalizationModel(new Private);
>
>             }
>
>             return instance;
>
>         }
>
>     }
>
> }
>
> class Private{}
>
> // [end] CHMLocalizationModel.as
>
> 2 - No MXML, instancio uma variável com o Singleton da classe acima
> (Classe.getInstance()) e associo as propriedades dela aos pontos inerentes.
> Ex:
>
> // [start] CHMHistoryDataGrid.mxml
> <?xml version="1.0" encoding="utf-8"?>
> <mx:VBox
>
>     xmlns:mx="http://www.adobe.com/2006/mxml";
>     xmlns:view="br.com.vpmjr.apps.chm.view.*"
>
>     creationComplete="init()"
>
>     >
>
>     <mx:Script>
>         <![CDATA[
>
>             import br.com.vpmjr.apps.chm.model.CHMHistoryDataModel;
>             import br.com.vpmjr.apps.chm.model.CHMLocalizationModel;
>
>             // ==== INSTANCIA DO SINGLETON ====
>             [Bindable] private var localizationModel:CHMLocalizationModel;
>             // ABAIXO (veja adiante no código): localizationModel.variavel
> para obter o valor desejado
>
>             private function init():void{
>                 localizationModel = CHMLocalizationModel.getInstance();
>             }
>
>         ]]>
>     </mx:Script>
>
>     <view:CHMMenuHBox id="chmMenuHBox" width="100%"/>
>
>     <mx:DataGrid
>         id="dgHD"
>         dataProvider="{CHMHistoryDataModel.getInstance().historyData}"
>         height="100%"
>         width="100%"
>     >
>
>         <mx:columns>
>
>             <mx:DataGridColumn
>                 id="dgcHDActions"
>                 headerText="{localizationModel.actions}"
>                 width="80"
>             />
>
>             <mx:DataGridColumn
>                 id="dgcHDCustomer"
>                 headerText="{localizationModel.customerName}"
>                 width="200"
>             />
>
>             <mx:DataGridColumn
>                 id="dgcHDLastVisit"
>                 headerText="{localizationModel.lastVisit}"
>                 width="100"
>             />
>
>             <mx:DataGridColumn
>                 id="dgcHDNextVisit"
>                 headerText="{localizationModel.nextVisit}"
>                 width="100"
>             />
>
>             <mx:DataGridColumn
>                 id="dgcHDSubject"
>                 headerText="{localizationModel.subject}"
>             />
>
>         </mx:columns>
>
>     </mx:DataGrid>
>
> </mx:VBox>
> // [end] CHMHistoryDataGrid.mxml
>
> 3 - Em algum ponto da sua aplicação você pode ter um Combobox ou qualquer
> outra funcionalidade que permita o usuário selecionar um idioma, e ao
> fazê-lo você carrega um XML por exemplo. Ao final deste procedimento, basta
> obter uma instância do Singleton e associar os valores carregados às
> variáveis respectivas dele. Como o MXML (no exemplo acima) associa os
> valores via "binding", assim que os valores da classe CHMLocalizationModel
> forem modificados, essa modificação imediatamente refletirá nos pontos da
> aplicação que exibem estes valores.
>
> Como este exemplo que pequei é de uma aplicação AIR que estou
> desenvolvendo (usando o framework Cairngorm),a  parte do carregamento do XML
> na minha aplicação é diretamente do FileSystem, mas o que eu quero mostrar
> mesmo é como associar os valores do XML ao Singleton (Model).
>
> Ex: (observe o que marquei abaixo como "PARTE RELEVANTE")
>
> // [start] LoadLocalizationCommand.as
> package br.com.vpmjr.apps.chm.commands{
>
>     import br.com.vpmjr.apps.chm.model.CHMConfigModel;
>     import br.com.vpmjr.apps.chm.model.CHMLocalizationModel;
>
>     import com.adobe.cairngorm.commands.ICommand;
>     import com.adobe.cairngorm.control.CairngormEvent;
>
>     import flash.filesystem.*;
>
>     public class LoadLocalizationCommand implements ICommand{
>
>         private var configModel:CHMConfigModel;
>
>         // ==== PARTE RELEVANTE 1 ====
>         private var localizationModel:CHMLocalizationModel;
>         // ==== PARTE RELEVANTE 1 ====
>
>         private var localizationFileName:String;
>
>         private var localizationFile:File;
>
>         private var localizationFilesDir:File;
>
>         private const LOCALIZATION_FILES_DIR_NAME:String = "resources";
>
>         public function execute(event:CairngormEvent):void{
>             configModel = CHMConfigModel.getInstance();
>             localizationModel = CHMLocalizationModel.getInstance();
>             localizationFilesDir =
> File.applicationDirectory.resolvePath(LOCALIZATION_FILES_DIR_NAME);
>             localizationFile =
> localizationFilesDir.resolvePath("localization_" +
> configModel.defaultLocaleLangID + ".xml");
>             loadLocalizationData();
>         }
>
>         private function loadLocalizationData():void{
>             var fileStream:FileStream = new FileStream();
>             fileStream.open(localizationFile, FileMode.READ);
>             var localizationString:String =
> fileStream.readUTFBytes(localizationFile.size);
>             fileStream.close();
>             parseLocalizationData(localizationString);
>         }
>
>         // ==== PARTE RELEVANTE 2 ====
>
>         // _localizationData é a string XML carregada
>         private function
> parseLocalizationData(_localizationData:String):void{
>             XML.ignoreWhitespace = true;
>             var xmlLocalizationData:XML = new XML(_localizationData);
>             var totalDataItems:int =
> xmlLocalizationData.children().length();
>             for(var i:int = 0; i < totalDataItems; i++){
>                 var dataItemName:String =
> String(XML(xmlLocalizationData.children()[i]).name());
>                 var dataItemLabel:String =
> XML(xmlLocalizationData.children()[i])[EMAIL PROTECTED];
>                 localizationModel[dataItemName] = dataItemLabel;
>             }
>         }
>
>         // ==== PARTE RELEVANTE 2 ====
>
>     }
>
> }
> // [end] LoadLocalizationCommand.as
>
> Essa "PARTE RELEVANTE 2" podería ser parte do Singleton (um método
> "getDataFromXML()" por exemplo). Talvez eu modifique isso. Mas o importante
> é que é a parte que você pode reaproveitar no seu projeto se vier a utilizar
> essa metodologia, talvez mudando apenas a questão de que você já pode passar
> para o método "parseLocalizationData()" já um objeto XML ao invés de uma
> String, como eu tive que fazer alí. Mas daí por diante, você faz como achar
> melhor...
>
> Espero que tenha ajudado.
>
> --
> Vicente Maciel Junior
> Independent Web Developer & Consultant
> Adobe Advanced Certified Developer
> Adobe Certified Instructor (ColdFusion & Flash Platform)
> +55 (71) 8120-0035 / 9212-0909 - MSN: [EMAIL PROTECTED]
> http://teclandoalto.blogspot.com
>
> Em 16/04/08, Pat <[EMAIL PROTECTED]> escreveu:
> >
> >
> > Como eu faria uma aplicação em flex de acordo com idioma escolhido
> > pelo usuário??
> > > >
> >
>
>
>
>

--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a