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

           

          學習Eclipse NLS

          今天研究了1下Eclipse的NLS,覺得不錯,與大家分享....
          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個參數,一次類推
          public class MessageHelper extends NLS {
             //com.exmple.messages 中的點將會被轉換成"/"
            // 所以最終的路徑為: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 閱讀(3687) 評論(4)  編輯  收藏

          評論

          # re: 學習Eclipse NLS 2008-01-24 20:35 guest

          什么是nls  回復  更多評論   

          # re: 學習Eclipse NLS 2008-01-26 15:31 gembin

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

          # re: 學習Eclipse NLS 2008-03-04 21:52 jolly

          請問綁定的類只能是當前類嗎?而且不能用內部類作為綁定類?  回復  更多評論   

          # re: 學習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:因為Key要求是public static 的所以Inner Class必需是static   回復  更多評論   


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


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿(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
          主站蜘蛛池模板: 东光县| 桃源县| 长子县| 铜梁县| 康定县| 团风县| 石泉县| 方山县| 大同县| 根河市| 勃利县| 涿州市| 西贡区| 方城县| 闽清县| 读书| 岫岩| 丰城市| 庄河市| 阿克| 长葛市| 沈阳市| 德州市| 花莲县| 安达市| 大英县| 绵阳市| 伽师县| 迭部县| 佛学| 三都| 孙吴县| 长兴县| 龙泉市| 无为县| 竹北市| 八宿县| 桐城市| 英超| 昭通市| 湘潭市|