Flex 國(guó)際化

2018-01-01 17:22 更新
Flex提供了兩種方式來(lái)使Flex應(yīng)用程序國(guó)際化,我們將演示編譯時(shí)間的使用國(guó)際化是項(xiàng)目中最常用的。
技術(shù)描述
編譯時(shí)間國(guó)際化這種技術(shù)是最普遍的,并且在運(yùn)行時(shí)需要非常少的開(kāi)銷; 是一種用于翻譯常量和參數(shù)化字符串的非常有效的技術(shù);最簡(jiǎn)單的實(shí)現(xiàn)。 編譯時(shí)國(guó)際化使用標(biāo)準(zhǔn)屬性文件來(lái)存儲(chǔ)翻譯的字符串和參數(shù)化消息,這些屬性文件直接在應(yīng)用程序中編譯。
運(yùn)行時(shí)國(guó)際化這種技術(shù)非常靈活,但比靜態(tài)字符串國(guó)際化慢。 您需要單獨(dú)編譯本地化屬性文件,將它們保留在應(yīng)用程序外部,并在運(yùn)行時(shí)加載它們。

使Flex應(yīng)用程序國(guó)際化的工作流程

步驟1:創(chuàng)建文件夾結(jié)構(gòu)

在Flex項(xiàng)目的src文件夾下創(chuàng)建一個(gè)locale文件夾。這將是應(yīng)用程序?qū)⒅С值恼Z(yǔ)言環(huán)境的所有屬性文件的父目錄。 在區(qū)域設(shè)置文件夾中,創(chuàng)建子文件夾,每個(gè)應(yīng)用程序的區(qū)域設(shè)置支持一個(gè)。 命名語(yǔ)言環(huán)境的約定是

{language}_{country code}

例如,en_US表示美國(guó)的英語(yǔ)。 區(qū)域設(shè)置de_DE表示德語(yǔ)。 示例應(yīng)用程序?qū)⒅С謨煞N常用語(yǔ)言:英語(yǔ)和德語(yǔ)

步驟2:創(chuàng)建屬性文件

創(chuàng)建包含要在應(yīng)用程序中使用的消息的屬性文件。 我們?cè)?strong> src locale > en_US 下創(chuàng)建了一個(gè) HelloWorldMessages.properties 文件

enterName=Enter your name
clickMe=Click Me
applicationTitle=Application Internationalization Demonstration
greeting=Hello {0}

創(chuàng)建包含特定于語(yǔ)言環(huán)境的翻譯值的屬性文件。 我們?cè)?strong> src locale > de_DE 下創(chuàng)建了一個(gè) HelloWorldMessages.properties 文件。 此文件包含德語(yǔ)的翻譯。 _de指定德語(yǔ)區(qū)域設(shè)置,我們將在我們的應(yīng)用程序中支持德語(yǔ)。

如果要使用Flash Builder創(chuàng)建屬性文件,請(qǐng)將文件的編碼更改為UTF-8。選擇該文件,然后右鍵單擊以打開(kāi)其屬性窗口。選擇文本文件編碼為其他UTF-8。 應(yīng)用并保存更改。

enterName=Geben Sie Ihren Namen
clickMe=Klick mich
applicationTitle=Anwendung Internationalisierung Demonstration
greeting=Hallo {0}

步驟3:指定編譯器選項(xiàng)

  • 右鍵單擊項(xiàng)目并選擇屬性。

  • 選擇Flex編譯器,并將以下內(nèi)容添加到“其他編譯器參數(shù)"設(shè)置中:

-locale en_US de_DE
  • 右鍵單擊項(xiàng)目并選擇屬性。

  • 選擇Flex構(gòu)建路徑,然后將以下內(nèi)容添加到源路徑設(shè)置:

src\locale\{locale}

內(nèi)部化示例

現(xiàn)在讓我們按照以下步驟來(lái)測(cè)試Flex應(yīng)用程序中的內(nèi)部化技術(shù):

步驟描述
1 Flex - 創(chuàng)建應(yīng)用程序章節(jié)中所述,在包 com.tutorialspoint.client 下創(chuàng)建名為 HelloWorld 的項(xiàng)目。
2修改 HelloWorld.mxml ,如下所述。 保持文件的其余部分不變。
3編譯并運(yùn)行應(yīng)用程序,以確保業(yè)務(wù)邏輯按照要求工作。

以下是修改后的mxml文件 src / com.tutorialspoint / HelloWorld.mxml 的內(nèi)容。

<?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" 
   xmlns:mx="library://ns.adobe.com/flex/mx" 
   minWidth="500" minHeight="500">
   <fx:Metadata>
      [ResourceBundle("HelloWorldMessages")]
   </fx:Metadata> 
   <fx:Style source="/com/tutorialspoint/client/Style.css"/>
   <fx:Script>
      <![CDATA[
         import mx.controls.Alert;
         [Bindable]
         private var locales:Array = [{label:"English", locale:"en_US"},
            {label:"German", locale:"de_DE"}];

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

         protected function clickMe_clickHandler(event:MouseEvent):void
         {
            var name:String = txtName.text;
            var inputArray:Array = new Array();
            inputArray.push(name);
            Alert.show(resourceManager.getString('HelloWorldMessages'
            ,'greeting',inputArray));
         }
      ]]>
   </fx:Script>
   <s:BorderContainer width="500" height="500" id="mainContainer" 
      styleName="container">
      <s:VGroup width="100%" height="100%" gap="50" 
	  horizontalAlign="center" verticalAlign="middle">
         <s:Label id="lblHeader" fontSize="40" 
            color="0x777777" 
            text ="{resourceManager.getString('HelloWorldMessages'
            ,'applicationTitle')}"
            styleName="heading" width="90%" height="150"/>
         <s:Panel width="300" height="150">
            <s:layout>
               <s:VerticalLayout paddingTop="10" paddingLeft="10" />
            </s:layout>
            <s:HGroup >
               <s:Label 
               text="{resourceManager.getString('HelloWorldMessages'
               ,'enterName')}" 
               paddingTop="2"/>			
               <s:TextInput id="txtName"/>
            </s:HGroup>
            <s:Button 
            label="{resourceManager.getString('HelloWorldMessages','clickMe')}" 
            click="clickMe_clickHandler(event)" right="10" />	
         </s:Panel>
         <mx:ComboBox id="localeComboBox" 
         dataProvider="{locales}" change="comboChangeHandler()"/>
      </s:VGroup>	
   </s:BorderContainer>	
</s:Application>

準(zhǔn)備好所有更改后,讓我們以正常模式編譯和運(yùn)行應(yīng)用程序,就像在 Flex - 創(chuàng)建應(yīng)用程序中一樣 章節(jié)。 如果一切順利,您的應(yīng)用程序,這將產(chǎn)生以下結(jié)果:[在線試用]

flex Internalization

使用語(yǔ)言下拉菜單更改語(yǔ)言并查看結(jié)果。

flex Internalization 2
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)