gembin

          OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

          HBase, Hadoop, ZooKeeper, Cassandra

          Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

          There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

          About Me

           

          學(xué)習(xí)Eclipse NLS

          今天研究了1下Eclipse的NLS,覺得不錯(cuò),與大家分享....
          messages.properties
          key_1=hello world,here is NLS
          key_2=hello {0}, welcome to my blog
          key_3=hello {0}, please reply to{1} if you like this article
          其中的 {0} 代表MessageHelper.bind(MessageHelper.key_2, "gembin"); 里的第1個(gè)參數(shù),一次類推
          public class MessageHelper extends NLS {
             //com.exmple.messages 中的點(diǎn)將會被轉(zhuǎn)換成"/"
            // 所以最終的路徑為:com/exmple/messages.properties
              private static final String BUNDLE_NAME = "com.exmple.messages"; //$NON-NLS-1$
              public static String key_1;
              public static String key_2;
              static{
                  initializeMessages(BUNDLE_NAME, MessageHelper.class);
                  
              }
           
              /**
               * Bind the given message's substitution locations with the given string value.
               *
               * @param message
               *            the message to be manipulated
               * @param binding
               *            the object to be inserted into the message
               * @return the manipulated String
               */
              public static String bind(String message, Object binding) {
                  return NLS.bind(message, binding);
              }

              /**
               * Bind the given message's substitution locations with the given string values.
               *
               * @param message
               *            the message to be manipulated
               * @param binding1
               *            An object to be inserted into the message
               * @param binding2
               *            A second object to be inserted into the message
               * @return
               */
              public static String bind(String message, Object binding1, Object binding2) {
                  return NLS.bind(message, binding1, binding2);
              }

              /**
               * Bind the given message's substitution locations with the given string values.
               *
               * @param message
               *            the message to be manipulated bindings
               * @param bindings
               *            An array of objects to be inserted into the message
               * @return the manipulated String
               */
              public static String bind(String message, Object[] bindings) {
                  return NLS.bind(message, bindings);
              }

              /**
               * Initialize the given class with the values from the specified message bundle.
               *
               * @param bundleName -
               *            fully qualified path of the class name
               * @param clazz -
               *            the class where the constants will exist
               */
              @SuppressWarnings("unchecked")
              public static void initializeMessages(String bundleName, Class clazz) {
                  NLS.initializeMessages(BUNDLE_NAME, MessageHelper.class);
              }
              
              public static void main(String sp[]){
            
                    String s=MessageHelper.bind(MessageHelper.key_2, "hello");
                    System.out.println(s);
              }

          }

          posted on 2008-01-23 18:50 gembin 閱讀(3698) 評論(4)  編輯  收藏

          評論

          # re: 學(xué)習(xí)Eclipse NLS 2008-01-24 20:35 guest

          什么是nls  回復(fù)  更多評論   

          # re: 學(xué)習(xí)Eclipse NLS 2008-01-26 15:31 gembin

          Eclipse SRC里的: No need Localized String 1
          可代替ResourceBundle,用來處理資源文件*.properties,效率更好,更方便,很好的擴(kuò)展性。
          當(dāng)有Key沒定義,會get a compile error.
          缺點(diǎn)是:必須維護(hù)2個(gè)文件1個(gè)Properties和1個(gè)Java文件,他們必須同步  回復(fù)  更多評論   

          # re: 學(xué)習(xí)Eclipse NLS 2008-03-04 21:52 jolly

          請問綁定的類只能是當(dāng)前類嗎?而且不能用內(nèi)部類作為綁定類?  回復(fù)  更多評論   

          # re: 學(xué)習(xí)Eclipse NLS 2008-03-05 11:57 gembin

          是可以的。請看如下例子:
          message.properties
          ------------------
          key_1=Say {0} hello to {1} !!
          key_2=Say {0} hello to {1} !!
          key3=Say {0} hello to {1} !!
          key4=Say {0} hello to {1} !!

          TobeBindedMsg.java
          ---------------------
          public class TobeBindedMsg {
          public static String key3;

          static class InnerMsg{
          public static String key4;
          }
          }

          TestNLS.java
          ------------------
          import org.eclipse.osgi.util.NLS;
          public class TestNLS {
          private static final String BUNDLE_NAME = "com.meccala.blog.util.message"; //$NON-NLS-1$
          public static String key_2;
          static {
          NLS.initializeMessages(BUNDLE_NAME, TestNLS.class);
          NLS.initializeMessages(BUNDLE_NAME, Inner.class);
          NLS.initializeMessages(BUNDLE_NAME, TobeBindedMsg.class);
          NLS.initializeMessages(BUNDLE_NAME, TobeBindedMsg.InnerMsg.class);
          }

          static class Inner {
          public static String key_1;
          }

          public static void main(String ggg[]) {
          String s = NLS.bind(Inner.key_1, "1", "gembin");
          System.out.println(s);
          String s1 = NLS.bind(TestNLS.key_2, "2", "gembin");
          System.out.println(s1);
          String s2 = NLS.bind(TobeBindedMsg.key3, "3", "gembin");
          System.out.println(s2);
          String s3 = NLS.bind(TobeBindedMsg.InnerMsg.key4, "4", "gembin");
          System.out.println(s3);
          }
          }



          最后的輸出:
          Say 1 hello to gembin !!
          Say 2 hello to gembin !!
          Say 3 hello to gembin !!
          Say 4 hello to gembin !!
          NOTE:因?yàn)镵ey要求是public static 的所以Inner Class必需是static   回復(fù)  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(6)

          隨筆分類(440)

          隨筆檔案(378)

          文章檔案(6)

          新聞檔案(1)

          相冊

          收藏夾(9)

          Adobe

          Android

          AS3

          Blog-Links

          Build

          Design Pattern

          Eclipse

          Favorite Links

          Flickr

          Game Dev

          HBase

          Identity Management

          IT resources

          JEE

          Language

          OpenID

          OSGi

          SOA

          Version Control

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          free counters
          主站蜘蛛池模板: 龙泉市| 绩溪县| 宣威市| 台北县| 搜索| 甘泉县| 甘南县| 醴陵市| 平乐县| 大荔县| 开化县| 德州市| 兴宁市| 灵璧县| 蚌埠市| 和平区| 宽甸| 朝阳区| 青川县| 磐安县| 繁峙县| 思茅市| 富宁县| 浦东新区| 海城市| 南溪县| 临江市| 邻水| 东光县| 武冈市| 招远市| 荔浦县| 临洮县| 定兴县| 祁门县| 青阳县| 九江县| 凤台县| 西乌珠穆沁旗| 海南省| 尉氏县|