Paul, I think I understand what you are trying to explain to me. Let me see if I'm on the same page as you:
[1] You suggest that we remove the code to internationalize plug-ins from the plug-in class itself to the main I18N class that we are already using in OpenJUMP. [2] You suggest that we do this in a way that allows us to put the i18n strings in separate property files, instead of one big property file. [3] You suggest that we add a getText(String Category, String key) method and a getInstance(category) method to the I18N class. In this scenario the getInstance(category) method will be used to create a ResourceBundle that is specific to a plug-in based on a properties file specific to that plug-in. I think I only have one question: [1] Where is the property file for a plug-in stored? Is it in the JAR file for the plug-in, or in a plug-in specific subfolder of OpenJUMP's /lib/ext folder? Please correct any misunderstandings I may have about this. I'm still trying to get a handle on how I18N works in general, and in OpenJUMP. If Martin, Larry, Stefan, Andreas and the others have no objections to what Paul suggests, then I will help him with the implementation and test it out with my Super Select Plug-In. The Sunburned Surveyor On 10/22/07, Paul Austin <[EMAIL PROTECTED]> wrote: > Landon, > > For the I18N stuff I'd like to find a way to do this that is not tied > into the plug-in itself as there are many other classes used by a > plug-in such as Swing panels etc which also need to have I18N. > > What I propose is that we extend the current I18N class to support > different categories of I18N resource bundles. > > At the simplest the following method would be added to the I18N class. > > public String getText(String category, String key) { > I18N i18n = getInstance(category); > if (i18n == null) { > return key;// or code to create text based on key > } else { > return i18n.getText(key); > } > } > > The getInstance(category) method would create an I18N instance for the > resource bundle that would be category ".language" or something like that. > > The non-static getText would be the same as the current static get() > method but just work on an instance. > > So if I have my plug-ins in the com.revolsys.jump.foo package I'd create > resources under /com/revolsys/jump/foo/language_xxx.properties And use > com.revolsys.jump.foo as my category. > > Paul > > > Sunburned Surveyor wrote: > > I'm working on an extension of AbstractPlugIn that I would like to use > > for most of my OpenJUMP PlugIns. At this time I only plan to add two > > (2) things to this class: > > > > [1] The code from the OpenJUMP Wiki that allows a programmer to obtain > > an i18n String from the plug-in. (This will be done using Java's > > ResourceBundle class as shown in the wiki.) > > > > [2] Implement the IPlugInDependency interface to support plug-in > > dependencies. > > > > I'm going to make my SuperSelectToolboxPlugIn class extend this new > > class so I can test the functionality. (I wanted to internationalize > > the plug-in anyways.) > > > > Are there other useful additions that you have personally made to > > OpenJUMP's basic PlugIn class? Do you find yourself adding the same > > functionality to each of your plug-ins? > > > > I'd like any comments on this so I can design a well rounded and > > comprehensive extension to the AbstractPlugIn class. > > > > I'm not suggesting this new class go into the core, but I will make it > > available on my SurveyOS SourceForge site. > > > > The Sunburned Surveyor > > > > P.S. - I noticed that the i18n code on the OpenJUMP wiki creates an > > instance of the ResourceBundle class in the plug-in's intialize > > method. I wonder if this leads to uneccessary memory usage. Would it > > be better to create the ResourceBundle class in the execute method? > > (This might make setting an internationalized menu name a little > > trickier, as it won't be available if we create the ResourceBundle in > > the execute method instead of the intialize method.) > > > > ------------------------------------------------------------------------- > > This SF.net email is sponsored by: Splunk Inc. > > Still grepping through log files to find problems? Stop. > > Now Search log events and configuration files using AJAX and a browser. > > Download your FREE copy of Splunk now >> http://get.splunk.com/ > > _______________________________________________ > > Jump-pilot-devel mailing list > > Jump-pilot-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > > > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > Jump-pilot-devel mailing list > Jump-pilot-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel