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)將會(huì)被轉(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沒定義,會(huì)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
          主站蜘蛛池模板: 连山| 荃湾区| 玛纳斯县| 阿坝| 阜康市| 锡林浩特市| 卓尼县| 合山市| 武邑县| 侯马市| 定襄县| 阿克陶县| 大荔县| 三明市| 山西省| 固镇县| 呼玛县| 田林县| 浦北县| 砀山县| 旬阳县| 麻城市| 黔江区| 南汇区| 宿州市| 观塘区| 阿鲁科尔沁旗| 鞍山市| 报价| 潮安县| 石棉县| 万宁市| 天柱县| 鄂伦春自治旗| 峨眉山市| 剑河县| 和硕县| 襄汾县| 法库县| 永清县| 桓台县|