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 [email protected]
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
-~----------~----~----~----~------~----~------~--~---