Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.06.2007, 12:09
student-uni вне форума Посмотреть профиль Отправить личное сообщение для student-uni Найти все сообщения от student-uni
  № 1  
Ответить с цитированием
student-uni

Регистрация: Dec 2005
Сообщений: 25
По умолчанию многоязыковая поддержка Оцените плз .-)

UTranslator.as
Код:
package
{
	import mx.controls.Button;
	import mx.controls.CheckBox;
	
	
	public class UTranslator
	{

		
		

		import flash.events.*;
		import flash.net.*;
		import mx.controls.Label;
		import mx.controls.Alert;

		
		
		private var ControlsArray:Array = new Array(); 
		private var XMLdatei:String; 
		public var myXML:XML; 
		private var myLoader:URLLoader; 
		
		private var cObject:Object; 
		
		
		
		public function UTranslator(_ControlsArray:Object, _XMLdatei:String)
		{
		
		try {

       		for (var i:int=0; i < _ControlsArray.numChildren; i++) 
			{ 
					cObject = _ControlsArray.getChildAt(i);
	
					ControlsArray.push(cObject); 
			}


			myXML = new XML();
			var XML_URL:String = _XMLdatei;
			var myXMLURL:URLRequest = new URLRequest(XML_URL);
			myLoader = new URLLoader(myXMLURL);
			

			myLoader.addEventListener("complete", xmlLoaded);
		}
		catch (e:Error)
		{
			Alert.show(e.message);
		}
		
		}
		

		public function xmlLoaded(evtObj:Event):void 
		{ 
        	myXML = XML(myLoader.data);
		}
		


		public function Translation(_sprache:String):void
		{
			for (var i:int = 0; i < ControlsArray.length; i++)
			{
				try 
				{

				if (ControlsArray[i] is Label)
				ControlsArray[i].text = myXML.language.(@element==_sprache)[(ControlsArray[i].id)].toString();
				
				if ((ControlsArray[i] is Button) || (ControlsArray[i] is CheckBox))
				ControlsArray[i].label = myXML.language.(@element==_sprache)[(ControlsArray[i].id)].toString();
	
				
				}
				catch (e:TypeError)
				{
					trace(e.message)
				}
			}
			
		}
			
		
	} 
		
}
language.xml

Код:
<?xml version="1.0" encoding="utf-8" ?>
<languages>
	<language element="en">
		<lblHello>Hello</lblHello>
		<lblLogin>Login</lblLogin>
		<lblPassword>Password</lblPassword>
		<lblUserName>User Name</lblUserName>
		<btnNewWindow>New Window</btnNewWindow>
		<cbCheckBox>Checken</cbCheckBox>
	</language>
	<language element="de">
		<lblHello>Guten Tag</lblHello>
		<lblLogin>Benutzer</lblLogin>
		<lblPassword>Kennwort</lblPassword>
		<lblUserName>Benutzer Name</lblUserName>
		<btnNewWindow>Neues Fenster</btnNewWindow>
		<cbCheckBox>Ankreuzen</cbCheckBox>
	</language>
	<language element="ru">
		<lblHello>Добрый день</lblHello>
		<lblLogin>Пользователь</lblLogin>
		<lblPassword>Пароль</lblPassword>
		<lblUserName>Имя пользователя</lblUserName>
		<btnNewWindow>новое оkно</btnNewWindow>
		<cbCheckBox>отметИть</cbCheckBox>
	</language>
</languages>
Multilingua.mxml
Код:
 
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" initialize="init()"  creationComplete="created()">

<mx:Script>
	<![CDATA[
		

	private var translateInstanz:UTranslator;
	

	public function init():void
	{

			translateInstanz = new UTranslator(this, "language.xml");
	}
	
	public function created():void 
	{
	

		var lang:String = flash.system.Capabilities.language.substr(0,2);
		

		translateInstanz.Translation(lang);
		

		var xlc:XMLList = new XMLList(translateInstanz.myXML..@element);
		

		cbLanguage.dataProvider = xlc;
		

		cbLanguage.data = lang;
	
	}
	
	
	public function cbChangeLanguage():void {
		

	 	translateInstanz.Translation(cbLanguage.selectedLabel.toString());
	
    }
    
    public function btnNWclick():void{
    	var u:URLRequest = new URLRequest("Multilingua.html"); 
		navigateToURL(u,"_blank");


    }
    

	
				
	]]>
</mx:Script>
	<mx:ComboBox id="cbLanguage"   change="cbChangeLanguage()" >
		
	</mx:ComboBox>


	<mx:Label id = "lblHello" text="lblHello" />
	<mx:Label id = "lblLogin" text="lblLogin"/>
	<mx:Label id = "lblPassword" text="lblPassword" />
	<mx:Label id = "lblUserName" text="lblUserName" />
	<mx:Button id = "btnNewWindow" label="btnNewWindow" click="btnNWclick()"/>
	<mx:CheckBox id = "cbCheckBox" label="cbCheckBox"/>
	
</mx:Application>
Пока есть 3 недоработки
Считывает упр елементы только первого уровня
Понимает тоЛько леибл, баттон и чекбокс
Не сохраняет выбранныи язык при переходе в новое окно
Но ето все в процессе

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:04.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:04.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.