25

I have a Web application written in Java that is targeting several countries, all of which speak different languages (and more often than not, several languages -- that's Europe for you).

We have a bunch of .properties files that hold the localized strings, and our current procedure is to e-mail the language-specific files to our partners for updating before doing major updates.

However, this process is rather error-prone, as sometimes people forget to translate new strings and sometimes new strings don't get added to every language file, thus small mistakes get through very easily.

Does anyone know of any existing software that could help us clear this mess?

At a bare minimum, I'm thinking of something that would allow you to load a master file (for example, in English), a localized file and then would highlight the keys that were added to or removed from the master file.

Alan Moore
  • 73,866
  • 12
  • 100
  • 156
andri
  • 11,171
  • 2
  • 38
  • 49

13 Answers13

9

I've used Jinto for that purpose as well as EPFE (older version, haven't tried the newest one).

Both are Eclipse plug-ins, both are quite decent if you can get past the fact that they will reorder keys in your resource bundles. Then there's also Babel - I haven't tried it personally so I don't know how good it is.

ChssPly76
  • 99,456
  • 24
  • 206
  • 195
  • These are interesting projects indeed, but unfortunately they don't seem like something suitable for non-technical translators without some major work. – andri Sep 02 '09 at 18:45
  • @andri - what do you mean by "major work"? You need to install Eclipse and one of those plugins - that's it; there's nothing "technical" involved afterwards. Your translators will see a screen like this one: http://www.guh-software.de/images/jinto1.gif, do their thing, and you'll get back your resource bundle. If you feeling adventurous :-) you can even show them how to check it in right there from Eclipse. – ChssPly76 Sep 02 '09 at 19:22
  • I mean that the users are *non-technical* -- installing Eclipse and a plugin, not to mention using a SCM, is way beyond them. I'd need to make a package with stripped-down Eclipse (as excessive functionality is bound to confuse them) with only these plugins and hope they don't mess something up when installing it. – andri Sep 02 '09 at 21:31
5

we are using https://webtranslateit.com/ as a hosted service.

Our continuous integration server uploads our (english) Java property file whenever there are changes. The users for the different languages can then log in and update their translations.

There is a nice API that allowed us to fetch translations "on the fly" for our web application, but this is an internal solution only at the moment.

When there is a release, we download the files, bundle them with our application and deploy it.

The solution highlights what is translated, untranslated, needs verification, offers a translation memory, and integration i.e. to Google Translate.

Best regards, Alexander.

ahus1
  • 5,782
  • 24
  • 42
3

Netbeans has a really excellent Java properties editor that shows you each of the locales side-by-side. You can easily see which properties are absent for different languages.

Mike Sickler
  • 33,662
  • 21
  • 64
  • 90
  • Given that Jinto hasn't been updated and [MultiProperties](http://code.google.com/a/eclipselabs.org/p/multiproperties/) works, but uses custom XML, NetBeans seems the best choice - even for Eclipse users. – Peter Becker Nov 28 '12 at 01:05
3

For importing, managing, and potentially even ordering translations for languages you don't have in-house translators for, myGengo's String (http://mygengo.com/string/about) is a free hosted solution. Supports importing of various language-files for a variety of platforms. (Full disclosure - I'm a co-founder of myGengo)

mromaine
  • 141
  • 4
  • 7
  • Your tool looks very nice. Is there any recommended or even implemented process on how to tie in with version control? I want others to translate my files but I also have to keep the final results in version control. – Lunikon May 25 '11 at 09:47
3

Even if this is out of time scope for the original poster:

i18nBinder

is an Ant Task for converting property files to an Excel XLS file.

The locales are there placed in columns for each key (row).

Afterwards it writes the changes within the xls file back to the original files. Thats pretty handy and since you are using Excel to edit, everyone is familiar with that.

Best regards

Omnaest
  • 3,096
  • 1
  • 19
  • 18
2

What about localizedproperties Eclipse plugin? It's similar to Jinto, but supports Eclipse version as higher as 3.6.

DylanYi
  • 196
  • 1
  • 10
2

Eclipse ResourceBundle Editor seems to be the newest (and nicer, IMHO) choice in the "Eclipse plugin" department.

enter image description here

lapo
  • 3,136
  • 26
  • 34
1

sometimes people forget to translate new strings and sometimes new strings don't get added to every language file, thus small mistakes get through very easily.

I use a slightly different approach in that I send out .properties files containing the existing localized strings merged with the new untranslated strings in the order that I want them back.

The new strings are marked with "pseudo-translation" characters, so that untranslated strings are easy to find with a simple text search.

The translators very rarely lose properties or forget to translate strings. The most common mistake is to forget to remove the pseudo-translation characters from the newly translated strings. The difference check before committing the new translations back into the revision control system is very good at catching these errors.

This system works really well, and now that it is semi-automated it takes about an hour to do each localization update instead of the 1 - 2 days it used to take when the process was completely manual.

I wrote my own tool to generate the merged files and do a three-way comparison between the new masters, the old localized files and the newly generated merged files, but any tool that merges changes in the same way would work with this process.

richj
  • 7,499
  • 3
  • 32
  • 50
1

I tried Everit - i18n Props XLS Converter and it does the job.

You can specify the location of yours .properties containing the translations and you'll get an .xls filled with all the values contained in them.

At this point you can send the xls to your translators that will fill it with the right translations and then convert it back to .properties to use in your java project.

The project is hosted in github and it needs to be built using maven and jdk8.

nicolimo86
  • 718
  • 11
  • 22
1

I have been using JRC Editor for managing the resource bundles. It will highlight the keys that are missing values as shown in the below screen shot.

It also allows you to work with the bundles using native language (hence end user friendly) and it will convert the characters to "\uxxx" equivalent behind the scenes.

Aravind Yarram
  • 78,777
  • 46
  • 231
  • 327
0

The CAL10N project is intended to deal with this problem. It builds upon resource bundles by adding verification primitives. It is also rather easy to use.

Ceki
  • 26,753
  • 7
  • 62
  • 71
0

The answer is a little late, but for future reference there is also Tongue-Tied. It is an open source, web based application for managing static resources and translations. Translations can be entered via the web interface. It supports the importing/exporting of many formats like java properties files, excel file, csv etc. It also has a small workflow built in if needed.

Disclaimer: I am the project lead.

Ben Sion
  • 88
  • 1
  • 2
  • 8
-1

Wow, I am surprised how crazy is that people did not explore the obvious import in Excel.

Go to Excel -> import -> select the properties file (Select all files in open file type).

It will ask you if you would like the columns to be delimited, check that option.

On the next screen of the import process, it would ask what kind of delimiter you want, select other and put "=" in the box (without the quotes)

Select next and voila. You have a excel sheet with the properties ready to go.

user1152262
  • 61
  • 1
  • 10