Flex教程

Flex 国际化

Flex 提供了两种国际化 Flex 应用程序的方法,我们将演示编译时国际化在项目中最常用的用法。
Sr.No 技术和描述
1
编译时国际化
这种技术最为流行,并且在运行时需要很少的开销;是翻译常量和参数化字符串的一种非常有效的技术;最容易实现。 Compile Time 国际化使用标准属性文件来存储翻译后的字符串和参数化消息,这些属性文件在应用程序中直接编译。
2
运行时国际化
这种技术非常灵活,但比静态字符串国际化慢。您需要单独编译本地化属性文件,将它们保留在应用程序外部,并在运行时加载它们。

国际化 Flex 应用程序的工作流程

步骤 1 – 创建文件夹结构

在 Flex 项目的 src 文件夹下创建一个 locale 文件夹。这将是应用程序将支持的 locale 的所有属性文件的父目录。在 locale 文件夹内,创建子文件夹,为要支持的每个应用程序的区域设置一个。命名语言环境的约定是
{language}_{country code}
例如,en_US 代表美国英语。语言环境 de_DE 代表德语。示例应用程序将支持两种常用语言:英语和德语。

第 2 步 – 创建属性文件

创建包含要在应用程序中使用的消息的属性文件。在我们的示例中,我们在 src > locale > en_US 文件夹下创建了一个 HelloWorldMessages.properties 文件。
enterName = Enter your name
clickMe = Click Me
applicationTitle = Application Internationalization Demonstration
greeting = Hello {0}
创建包含特定于语言环境的翻译值的属性文件。在我们的示例中,我们在 src > locale > de_DE 文件夹下创建了一个 HelloWorldMessages.properties 文件。该文件包含德语翻译。 _de 指定德语区域设置,我们将在我们的应用程序中支持德语。
如果您正在使用 Flash Builder 创建属性文件,则将文件的编码更改为 UTF-8、选择该文件,然后在其中右键单击以打开其属性窗口。选择文本文件编码为 其他 UTF-8。应用并保存更改。
enterName = Geben Sie Ihren Namen
clickMe = Klick mich
applicationTitle = Anwendung Internationalisierung Demonstration
greeting = Hallo {0}

第 3 步-指定编译器选项

右键单击您的项目并选择属性。 选择 Flex Compiler,并将以下内容添加到 Additional Compiler Arguments 设置-
-locale en_US de_DE
右键单击您的项目并选择属性。 选择 Flex Build Path,并将以下内容添加到 Source Path 设置中-
src\locale\{locale}

内化示例

现在让我们按照以下步骤在 Flex 应用程序中测试内部化技术-
步骤 描述
1 com.lidihuo.client 包下创建一个名为HelloWorld 的项目,如Flex-创建应用程序 章节所述。
2 修改HelloWorld.mxml,如下所述。保持其余文件不变。
3 编译并运行应用程序以确保业务逻辑按照要求工作。
以下是修改后的mxml文件 src/com.lidihuo/HelloWorld.mxml的内容。
<?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/lidihuo/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>
一旦您准备好完成所有更改,让我们像在Flex-创建应用程序一章中那样,以正常模式编译和运行应用程序。如果您的应用程序一切正常,它将产生以下结果:[ 在线试用 ]
flex 内部化
使用语言下拉菜单更改语言并查看结果。
flex 内部化 1
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4