2014-11-20 14 views
0

페이지 중 하나에 해당 언어의 로캘 이름이 다른 콤보 상자를 표시해야하는 Adobe Flex (버전 3.5) 기반 응용 프로그램을 작성 중입니다.동일한 페이지에 여러 언어를 표시하는 Adobe Flex 코드

예를 들어, 콤보 상자 레이블은 영어 (미국), 일본어 등이어야합니다. 다음

은, 위의 코드와

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600"> 

<mx:Metadata> 
    [ResourceBundle("languages")] 
</mx:Metadata> 

<mx:Script> 
    <![CDATA[ 
     import mx.collections.ArrayCollection; 
     import mx.resources.ResourceManager; 

     [Bindable] 
     public var items:ArrayCollection = new ArrayCollection(
      [ 
       {label:ResourceManager.getInstance().getString('languages','label.english'), locale:"en_US"}, 
       {label:ResourceManager.getInstance().getString('languages','label.japanese'), locale:"ja_JP"}, 
      ]     
     ); 
    ]]> 
</mx:Script> 
<mx:ComboBox dataProvider="{items}" labelField="label"/> 
</mx:Application> 

내 샘플 코드, 콤보 상자가 표시됩니다 모두 영어 또는 일본어 중 하나를 레이블.

나는 ResourceManager.getInstance()를 시도했다. localeChain api. 그러나 모든 리소스 문자열을 수정합니다.

하지만 영어 (미국)를 일본어로 표시하고 일본어 (일본어)를 일본어로 표시하는 코드를보고 있습니다.

의견이 있으십니까?

답변

1

문제는 당신이 응용 프로그램 생성이 완료되기 전에도 로케일 배열 수집 '항목을'만들려고한다는 것입니다.

<?xml version="1.0" encoding="utf-8"?> 
<s:Application 
    width="100%" height="100%" 
    creationComplete="onCC()" 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx"> 

    <fx:Metadata> 
     [ResourceBundle("languages")] 
    </fx:Metadata> 

    <fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 
      import mx.resources.ResourceManager; 

      [Bindable] 
      private var acLocales:ArrayCollection; 

      private function ddlChangeHandler():void 
      { 
       resourceManager.localeChain = [ ddlLocale.selectedItem.locale ]; 
      } 

      private function onCC():void 
      { 
       acLocales = new ArrayCollection(); 

       var objLocale:Object = new Object(); 
       objLocale.label = ResourceManager.getInstance().getString('languages', 'label.english', null, "en_US"); 
       objLocale.locale = "en_US"; 
       acLocales.addItem(objLocale); 

       objLocale = new Object(); 
       objLocale.label = ResourceManager.getInstance().getString('languages', 'label.japanese', null, "ja_JP"); 
       objLocale.locale = "ja_JP"; 
       acLocales.addItem(objLocale); 

       ddlLocale.selectedIndex = 0; 
      } 
     ]]> 
    </fx:Script> 

    <s:HGroup 
     width="100%" 
     horizontalAlign="center" 
     verticalAlign="middle"> 
     <s:DropDownList id="ddlLocale" 
      dataProvider="{acLocales}" 
      labelField="label" 
      change="ddlChangeHandler()"/> 
    </s:HGroup> 
</s:Application> 

+0

차가움. 이 API는'Locale을 동적으로 제공 할 수있는 ResourceManager.getInstance(). getString ('languages', 'label.japanese', null, 'ja_JP')'API를 찾고있었습니다. –

0

"언어"파일에 모든 언어의 문자열을 쓸 수 있습니다. 사용자가이 콤보 박스로 응용 언어를 선택할 수 있음을 이해합니다. 따라서 모든 지원되는 언어에 대해 하나의 "언어"파일 만 만들 것입니다.

languages.properties : 예를 들어

label.english=English 
label.french=Français 
+0

가 어떻게 languages.properties 일본 언어 파일을 작성하려면 어떻게해야합니까 : 아래 그림과 같이 의 creationComplete 방법 내부의 논리를 추가하려고? 일본어처럼 쓰는 것이 좋습니까? 내가 유니 코드 문자 (이러한 \ u79d2)를 작성하고 콤보 박스에 표시하는 동안 일본어로 변환 되길 원했던가요? –

+0

이것은 조금 다른 질문입니다. 다른 .properties 파일에서 일본어로 일부 단어를 쓰려고합니까? 그렇지 않다면, 가장 간단한 해결책에서 시도해 보길 권한다 : "日本語"라고 적는다. – Crabar

+0

이 자습서에서는 일본어도 사용했습니다. http://www.adobe.com/devnet/flex/articles/flex_localization_pt1.html – Crabar