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 閱讀(3670) 評論(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
          主站蜘蛛池模板: 方正县| 邵武市| 乌恰县| 会同县| 丹巴县| 清新县| 新郑市| 会昌县| 陇西县| 长兴县| 卢氏县| 潼南县| 亚东县| 托克逊县| 连江县| 荆州市| 德庆县| 永寿县| 宁陕县| 中方县| 泗洪县| 长岛县| 丰台区| 皋兰县| 札达县| 资兴市| 松江区| 东乡族自治县| 穆棱市| 玛曲县| 湖南省| 双流县| 连云港市| 景泰县| 峡江县| 布拖县| 安新县| 神农架林区| 新和县| 方山县| 阜南县|