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,覺得不錯,與大家分享....
          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個參數(shù),一次類推
          public class MessageHelper extends NLS {
             //com.exmple.messages 中的點將會被轉(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.
          缺點是:必須維護(hù)2個文件1個Properties和1個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:因為Key要求是public static 的所以Inner Class必需是static   回復(fù)  更多評論   


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


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

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(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
          主站蜘蛛池模板: 新晃| 鲁山县| 兰考县| 东兰县| 阳朔县| 通江县| 望都县| 监利县| 浮山县| 车致| 濉溪县| 西华县| 积石山| 兴城市| 塔河县| 新巴尔虎右旗| 正蓝旗| 临城县| 灵寿县| 前郭尔| 加查县| 潮安县| 中牟县| 梧州市| 汤原县| 彭阳县| 诸城市| 嘉定区| 阳江市| 科技| 谷城县| 洱源县| 黑龙江省| 仁怀市| 汾阳市| 淮北市| 石狮市| 新田县| 宁远县| 台山市| 丘北县|