技術(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項(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ǔ)
創(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}
右鍵單擊項(xiàng)目并選擇屬性。
選擇Flex編譯器,并將以下內(nèi)容添加到“其他編譯器參數(shù)"設(shè)置中:
-locale en_US de_DE
右鍵單擊項(xiàng)目并選擇屬性。
選擇Flex構(gòu)建路徑,然后將以下內(nèi)容添加到源路徑設(shè)置:
src\locale\{locale}
現(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é)果:[在線試用]
使用語(yǔ)言下拉菜單更改語(yǔ)言并查看結(jié)果。
更多建議: