TechHui

Hawaiʻi's Technology Community

The description for this group included "English->Japanese localization" so
I thought I'd throw this out there...

I am wondering is there out there a decent software for handling the arduous task
of maintaining a sites guts in multiple languages? Dealing with those, hundreds,
nay, thousands of few word strings that any active web-application uses...

One application I am working on now (PHP + symfony framework) uses
.xml files with an XML file per language, but this is a great pain to maintain
(checking all keys are in all languages, reaping entries for keys no-longer used, etc.)
and does not feel a very 21st century way to handle this at all...

Views: 169

Replies to This Discussion

I think the best approach is the one taken by Ning and Facebook. They both have a simple web tool that allows anyone to easily page through the strings and enter the translations. You can also search by string type to quickly localize a particular part of the interface. For example, you can search for "Tabs" to get all the strings that appear in tabs. This approach makes it easy for people to collaborate on the localization effort.

The fastest way to see this tool is to create a Ning network (this takes 5 minutes) and click Manage > Language Editor.

We have been using the language editor to setup the soon to be launched TechHui Japan site.
Interesting. I tried creating a Japanese Ning site a while back and found Ning offered their service pretty much in every language except Japanese. I wish I knew about that feature at that time.

Can't wait for the Techhui Japan site!
Its a nice feature, but no matter how it works its a pain to translated 33 pages of strings!

> Can't wait for the Techhui Japan site!

I am also excited. We are launching this week. I'll add you to the invite list.
Forgot to mention. Victor-I'm not familiar with symfony but Cakephp 1.2 has features to make language translation very easy within its framework.

You would designate the language variables between __('Hi!!'), then go to the Cakephp console and enter a command (cake i18n) to automatically generate the .po file. Cake does all the work and you just edit this generated file with an editor like poedit. Last step is to choose the language within the controller of your application.

Configure::write('Config.language',"en");

Since Cakephp extracts all strings to translate and life is pretty easy.

I would expect Symfony to have some kind of similar way of dealing with language translations.
Thank you for your replies...

It's interesting that Ning has a good system for this, but AFAIK it's not a development framework that I could use to develop applications on. Also having a list of strings is only partially useful in that many items are only understandable in the context of the page they are on. Moreover often times the length of the translation has to be adjusted to fit as a UI element (menu title, button, etc.) so there the context also has to be thought of when doing the translation.

What I was thinking was a tool which let you WYSIWYG look at a page, flipping between languages, and edit the translations that way.

Also what has to be kept track of is which strings are common, which need to be translated in a page/context specific manner since the translation is different on different pages.

The Cake solution sounds interesting, though again, editing some sort of files is a less then ideal solution, what I want is a system easy enough and solid enough that I can just throw a non-tech-savy translator at and which will allow them to do a good job on the translation.

I think we are really, really, really far from where we need to be on this in order to make multi-language sites the norm rather then the exception...
Victor: Also having a list of strings is only partially useful in that many items are only understandable in the context of the page they are on. Moreover often times the length of the translation has to be adjusted to fit as a UI element (menu title, button, etc.) so there the context also has to be thought of when doing the translation.

Very true. They way we did it was to have the network up on monitor A and the localizer on monitor B. If we wanted to localize a particular part of the UI, say the tabs, we would do a search on "tabs" in the localizer, enter the translated strings, and then hit refresh on the window with the app running. Its not ideal, but it works reasonably well.

I'm not aware of a framework that that provides this functionality (other than the Cake framework Scott mentioned), but it seems relatively easy to build a simple UI for this.

Victor: What I was thinking was a tool which let you WYSIWYG look at a page, flipping between languages, and edit the translations that way. Also what has to be kept track of is which strings are common, which need to be translated in a page/context specific manner since the translation is different on different pages.

Funny - that is exactly what Econtix (under Content Management) does in a really elegant way using AJAX. All the localization happens in place, even within images. We even demoed this functionality for VC. Unfortunately it kept getting de-prioritized so we never finished it. I think I will be able to restart work under the umbrella of another project soon.
That Cakephp looks like gettext, which has been around for while. There are gettext binding for other languages like ruby and platforms like Rails, but it looks pretty painful to use and quite hard to manage.At least with gettext, the generated metadata will tell you exactly in which file and at what line a certain key text appears.

But then again, with Java's resource bundles (are they still escaped Unicode?) and even the UTF-8 based variant used by the Google Web Toolkit and others, it is still a pain to keep all your keys and values in order since, as Victor points out, the context itself primary.

I haven't come across any silver bullets, and I think we can all agree that management of localized content is a pain. Good architecture should take l10n and i18n (and what? the buzzword today is m17n??) into full consideration very early on in the ballgame to mitigate the risk and trouble of providing a global experience.

My 2 yens' worth...

RSS

Sponsors

web design, web development, localization

© 2024   Created by Daniel Leuck.   Powered by

Badges  |  Report an Issue  |  Terms of Service