Paukl, Thanks for offering to improve our i18n system in OpenJUMP. Just so I am clear, what will I need to do as a plug-in developer to use the system? It sounds like two (2) things:
[1] Store a properties file anywhere in my JAR. [2] Pass the getText method of the new and improved i18n class the string I would like internationalized and the path to my properties file. Is this correct? Does this mean the JAR file will need to be recreated whenever we add a properties file for an additional language? (I guess that won't be too hard. A non-programming translator could just unzip the jar, add the properties file, zip back up and change the file extension from zip back to jar.) The Sunburned Surveyor On 10/23/07, Paul Austin <[EMAIL PROTECTED]> wrote: > Hi Landon, > > I will implement my changes to I18N and show an example. > > For the location of the resource files they will be in the same jar as > the plug-in as "resource files" which are basically just non java class > files stored in a JAR. > > If you were using maven you would have the following project structure > > src > main > java > com > revolsys > jump > foo > FooExtension.java > resources > com > revolsys > jump > foo > language > jump.properties > jump_en.properties > > > When you build with maven it copies everything in the resources > directory into the JAR file. > > Paul > > Sunburned Surveyor wrote: > > 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 > > > > > ------------------------------------------------------------------------- > 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