PodWorks 1.3 Released

I finished the latest update to PodWorks (1.3) over the weekend and released it this morning. Aside from the usual, humdrum bug fixes and tweaks, this version introduces two interesting features: French language support and a “Play Count” column.

The French translation was especially interesting to me, since PodWorks represents my first serious attempt at software localization. I had three years of French in high school and I’ve actually visited France twice, so in many ways French was a natural first choice to begin expanding PodWorks’s linguistic repertoire. Still, the further I got into the process, the more I realized how utterly lost I would have been without the help of PodWorks’s volunteer translator, Axel Chaminade.

In all of my schooling, for example, I had never been alerted to the typographic niceties of French punctuation, which dictate that many punctuation marks are to be prefixed with spaces. Colons, it turns out, should always have a space prepended (e.g. “a: b” in English versus “a : b” in French), as should exclamation marks. Without Axel’s guidance, I would have been similarly befuddled by certain idiomatic technical translations, such as the rendering of songs as “morceaux” (“pieces”) instead of the more literal “chansons.”

Localizing PodWorks also gave me a fresh appreciation for the elegance of Cocoa’s approach to software development. The fact that a Cocoa application’s GUI is stored as serialized objects in a Nib file (in contrast to the mass of generated code found in a Visual C++ or Java GUI) makes it easy to add localized variants that adjust for the varying lengths of strings in different supported languages. Where languages like Java stop at the use of properties files containing localized strings, Cocoa goes one step further by allowing for the easy creation of completely different GUIs on a language-by-language basis! Que élégant!

For anyone who is interested in the subject of localization in Cocoa, I highly recommend Andrew Stone’s excellent tutorial. His discussion of what he calls “end user localization” is particularly valuable (it would have saved me a lot of time if I have read it before I began).

Leave a Reply