Today, I decided to update WordPress. On related news, you might find a lot of curses in my tweets today. I'm writing up my findings in case it helps other unfortunate souls.
WordPress localization seems to work by hardcoding english strings in the source code, listing them in a .pot file with the source file names and line numbers, which is then overriden by a .mo and .po file. The .mo file seems to be some kind of binarish format, the .po is similar to the .pot but with translations.
So what's the problem with this? I'm using the Twenty Eleven theme, because it's simple, it was built-in and I like it. Sounds reasonnable enough. However, its localization files used to be in the WordPress core. This was (rightfully) deemed unsatisfactory at some point, and they were moved out into a languages directory inside the theme itself... for the more recent themes. Which means that the older Twenty Eleven, the files are removed from the core but not added back. Result: the french version of my website still says "Posted on", verbatim.
One solution is to go find language files, but my google digging did not yield anything for this theme. There are files in the older french wordpress core, but they're not compatible. Since the line numbers are baked in that's not really a surprise! I tried to update the line numbers in the .po file but it still didn't work.
In the end, I decided to live with the somewhat crappy mix. I do not have the energy to keep digging to bypass clunky design, and upgrading my whole theme just for that is a bit overboard.
Another issue when updating is that my translation plugin, qTranslate, was not compatible anymore. It seems to be abandoned, but luckily mqTranslate, a fork with team features, has picked up the banner. It includes a database conversion function and the transition went pretty smoothly overall! I just had to enable French again and tell it to use the overriden date formats.