와 내가 현재 가지고 :변경 로케일 - 테스트 케이스 및 스크린 샷
스크린 샷 :
TestLang.mxml은 (단지 플래시 빌더 4.7에서 빈 프로젝트에 추가) :
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
initialize="init()">
<fx:Metadata>
[ResourceBundle("resources")]
</fx:Metadata>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import spark.events.IndexChangeEvent;
[Bindable]
private var _locales:ArrayCollection = new ArrayCollection();
[Bindable]
private var _numbers:ArrayCollection = new ArrayCollection();
private function init():void {
resourceManager.localeChain = [ 'de_DE' ];
_locales.addItem({ locale: 'en_US', label: 'English' });
_locales.addItem({ locale: 'ru_RU', label: 'Русский' });
_locales.addItem({ locale: 'de_DE', label: 'Deutsch' });
localize();
}
private function localize():void {
_numbers.removeAll();
_numbers.addItem({ label: resourceManager.getString('resources', 'menu.one') });
_numbers.addItem({ label: resourceManager.getString('resources', 'menu.two') });
_numbers.addItem({ label: resourceManager.getString('resources', 'menu.three') });
_numbers.addItem({ label: resourceManager.getString('resources', 'menu.four') });
_numbers.addItem({ label: resourceManager.getString('resources', 'menu.five') });
}
protected function changeLocale(event:IndexChangeEvent):void {
var list:List = event.target as List;
var item:Object = list.selectedItem;
resourceManager.localeChain = [ item.str ]; // XXX
localize();
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout />
</s:layout>
<s:List
width="100%"
height="50%"
change="changeLocale(event)"
dataProvider="{_locales}">
<s:itemRenderer>
<fx:Component>
<s:IconItemRenderer labelField="label" />
</fx:Component>
</s:itemRenderer>
</s:List>
<s:List
width="100%"
height="50%"
dataProvider="{_numbers}">
<s:itemRenderer>
<fx:Component>
<s:IconItemRenderer labelField="label" />
</fx:Component>
</s:itemRenderer>
</s:List>
</s:Application>
SRC/로케일/ko 페이지/resource.properties :
menu.one=One
menu.two=Two
menu.three=Three
menu.four=Four
menu.five=Five
menu.title=English
SRC/로케일/DE_DE/resource.properties :
menu.one=Eins
menu.two=Zwei
menu.three=Drei
menu.four=Vier
menu.five=Fünf
menu.title=Deutsch
SRC/로케일/ru_RU/자원 . 속성 :
menu.one=Один
menu.two=Два
menu.three=Три
menu.four=Четыре
menu.five=Пять
menu.title=Русский
> 소스 경로
src\locale\{locale}
의 그리고 스크린 샷에 -locale de_DE ru_RU en_US -allow-source-path-overlap=true
의 플렉스 컴파일러 인수 당신이 독일어 로케일이 표시되는 것을 볼 수 있습니다 위 - 나는 플렉스 빌드 경로 추가 한 프로젝트 속성에서 363,210
제대로 초기에.
그러나 위 목록을 터치하여 로캘을 변경하면 아래쪽 목록이 비게됩니다.
왜 이런 일이 발생합니까?
나는 Adobe 문서 Changing locales at run time with the ResourceManager 및 그 외 일부를 읽었지만 아직 원인을 파악하지 못했습니다.
resourceManager.localeChain
에 새 배열이 할당되면 로케일 전환이 동 기적으로 발생합니까 아니면 일부 이벤트를 수신해야합니까?