Flex locale ResourceBundle的使用

ResourceBundle的使用

新建文件夹(Locale)保存Locale资源
建子文件夹(en_US, zh_CN)用于区分Locale
在eu_US, zh_CN中分別添加资源配置文件 (资源名称.properties)

項目属性中設置Source Path,Add Folder    "Locale/{locale} ", 其中{locale}将被编译参数 -locale 自动替换

需要用locale的as 或 mxml中增加引用对象
[ResourceBundle("资源名称")]
private static var rb:ResourceBundle;

 
<<--code AlertTest.mxml >>

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
 <mx:Script>
  <![CDATA[
  import mx.resources.ResourceBundle;
       import mx.controls.Alert;
      
      
  [ResourceBundle("AlertMessage")]
       private static var rb:ResourceBundle;
      
       private function alertMessage():void
       {
        Alert.show(rb.getString('AlertMessage'));
       }
  ]]>
 </mx:Script>
 <mx:Button label="@Resource(key='AlertButtonName', bundle='AlertMessage')" 
                     click="alertMessage()"/>
</mx:Application>

 

<< - code  locale/en_US/AlertMessage >>

AlertMessage=The alert message in English
AlertButtonName=click me

<< - code  locale/zh_CN/AlertMessage.properties 注意,中文应使用UTF-8编码
file-properties-info-Text file encoding >>

AlertMessage=中文提示信息
AlertButtonName=点我


然后在编译时设置Locale   右点项目-属性-Complier-Additional Complier Arguments "-locale zh_CN"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动态ResourceBundle是指在运行时动态加载并修改资源文件,以便程序能够动态地读取、翻译或修改资源文件的内容。使用动态ResourceBundle可以使程序更加灵活和易于维护。 以下是使用动态ResourceBundle的步骤: 1. 创建一个ResourceBundle.Control实例,并在该实例中重写newBundle方法,用于动态加载资源文件。 2. 在newBundle方法中,使用ClassLoader加载资源文件并返回一个ResourceBundle实例。 3. 在程序中使用ResourceBundle.getBundle方法,传入资源文件名和自定义的Control实例,获取动态ResourceBundle实例。 4. 使用ResourceBundle实例中提供的方法,如getString、getInteger等,获取资源文件中的值。 下面是一个使用动态ResourceBundle的简单示例代码: ```java public class DynamicResourceBundleExample { public static void main(String[] args) { ResourceBundle.Control control = new ResourceBundle.Control() { @Override public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload) throws IllegalAccessException, InstantiationException, IOException { Properties props = new Properties(); InputStream stream = loader.getResourceAsStream(baseName + "_" + locale.getLanguage() + ".properties"); props.load(stream); return new PropertyResourceBundle(props); } }; ResourceBundle bundle = ResourceBundle.getBundle("messages", new Locale("en"), control); String hello = bundle.getString("hello"); System.out.println(hello); } } ``` 在上面的代码中,我们重写了Control的newBundle方法,使用ClassLoader加载资源文件,并返回一个PropertyResourceBundle实例。然后使用getBundle方法获取ResourceBundle实例,并使用getString方法获取资源文件中的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值