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 -~----------~----~----~----~------~----~------~--~---