To sem tempo para explicar direito, mas da uma pesquisada em locale no
google que pode ajudar.

On 17 abr, 09:30, "Vicente Maciel Junior" <[EMAIL PROTECTED]> wrote:
> 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]://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...
>
> ...
>
> mais »
--~--~---------~--~----~------------~-------~--~----~
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