Download: JLocalize download page
License: GNU GPL v3
Trilarion forked the Attesoro code base added features, and named the creation JLocalize. It looks a lot like Attesoro and adds features like:
- Spell Check
- Usage statistics
- Undo
Download: Prologia-I18N download page
License: GNU GPL
Scans Java source files, identifies hard coded strings, and uses a GUI ask if each hard coded string should be pulled out into a resource bundle and automatically replaced by a translation key.
Download: Resource Bundle Manager download page
License: Open Source - ICU License 1.8.1
Resource Bundle Manager is a capable program with some features not available in Attesoro. It puts comments on all translated items that include meta data such as who did the translation and when the translation was done. It can create groups for items to be translated. It also has a nice search feature and it can show statistics including number of untranslated items for each language.
Like Attesoro, it is written in Java. It has a similar look and feel. Its website contains complete documentation including a tutorial.
It does however, have some significant disadvantages to Attesoro:
- It is harder to start because it is not packaged in an executable jar file. The documentation gives a command line to use. Even worse, the command line is incorrect because the download does not contain RBManager.jar in the lib directory, but rather in the main directory. Translators may have a hard time getting the program started.
- The existing properties files for your project must be imported into Resource Bundle Manager (it can't just open them directly).
- If some keys have not been translated to all languages before the import, Resource Bundle Manager will not notice this and will claim that all files have been translated.
- Only one line is given for translations. New lines are removed from multi-line translations.
- When adding a key, Resource Bundle Manager adds the key with the same text to every language rather than adding it to the base and letting it inherit.
- Once you edit a translation file Resource Bundle Manager, the program does not support editing the file in another editor. Any additions made by another program will not be noticed unless the comments on the properties are also carefully modified.
- The file open dialog does not remember the last directory from which a file was opened.
- The software does not appear to be actively maintained. The documentation contains an email address of the author, but the email to that address bounces.
Download: Available in multiple formats (zip, exe, rpm, tar.gz) with scripts to run on a variety of platforms
License: Open source - GNU General Public License
Like Babel Fish, Zaval JRC Editor appear to be written for translators that are targeting two or more languages at once, it shows all the translations for all languages on the screen at one time. Because it puts all the languages for a single key on one screen,it requires a large amount of screen space.
Like Attesoro, it is written in Java. It appears to use the AWT graphics libraries rather than the newer Swing libraries. The look and feel is not as good, but it may work with older versions of Java.
Zavel JRC Editor does not appear to care about resource inheritance and will give warnings that a key has not been completely translated when a translation should inherit from the default. You can see in the screenshot that English (United States) is the only thing not filled in, and yet there is still a warning.
When saving properties files it does appear to preserve some comments, however they may not be in same place they used to be. It also inserts a comment saying that the file was modified by the Zaval JRC Editor.
When trying to open a large file (with version 2.0 of the editor) I got the following exception:
java.lang.ArrayIndexOutOfBoundsException: 0 >= 0 at java.util.Vector.elementAt(Vector.java:431) at org.zaval.tools.i18n.translator.BundleSet.getItem(BundleSet.java:115) at org.zaval.tools.i18n.translator.Translator.initData(Translator.java:1687) at org.zaval.tools.i18n.translator.Translator.access$700(Translator.java:58) at org.zaval.tools.i18n.translator.Translator$Loader.run(Translator.java:1404) at java.lang.Thread.run(Thread.java:534)