student-uni
06.06.2007, 12:09
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 недоработки
Считывает упр елементы только первого уровня
Понимает тоЛько леибл, баттон и чекбокс
Не сохраняет выбранныи язык при переходе в новое окно
Но ето все в процессе
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 недоработки
Считывает упр елементы только первого уровня
Понимает тоЛько леибл, баттон и чекбокс
Не сохраняет выбранныи язык при переходе в новое окно
Но ето все в процессе