In this post I will say some things about localization that I've never felt it was politic to say before. (It still isn't, but what the hey.) But I first want to mention that one of the reasons Christian Perrier is awesome is because he manages to steer projects in ways that avoid (most of) the problems below, and because he has managed to scale rather impressively far. But not far enough that these things haven't gotten under my skin.
So, I hate localization. Hate, hate, hate. I wish it would die. I wish everyone spoke the same language. I hate that we have to be politically correct about it, to the point that even if everyone does speak English (hello, Denmark?), we still have to worry about localization into their native language. I especially hate that, after we waste time and resources doing that, everyone uses the software in English anyway (hello, most of Europe).
I hate that the typical best effort localization of software is typically so incomplete that it's not actually usable by people who really do need the translation. Either because "best effort" == 80% translated, which is sometimes worse than 0%, or because the documentation doesn't get translated too. And that even with what we consider a complete translation, there are still all sorts of English bits that nobody would ever consider translating. Such as the names of commands, of command-line switches, of markup keywords and configuration files.
I hate that translating software and documentation always involves bolting an enormous, nasty build system onto its side, and that the bulk of translations always greatly outweighs the size of the code. I hate that these systems constantly produce deltas that I have to avoid cluttering my commits with. I hate the expectation that every programmer somehow become an expert in internationalization, rather than letting them devote their time to something they're good at.
But none of that is what really bothers me about localization. What really, really bothers me is that I often see the need to localize code inhibiting that code becoming better. Just two examples:
- Oh no, we worry, if we fix this a message, we will have to do 100 times more work to update the translations. Surely, then, anyone who wants to fix a bad message is an anglocentric who should be ignored.
- Rather than allow the computer to dynamically generate correct and expressive English on the fly, to actually talk to us, we have to reduce everything to gettextable static strings. The poster child for this disease is that it becomes easier to tack on "(s)" or reword entirely, than to deal with the cumulative complexity of plural forms in every language.
(PS, I also hate that we have to keep "l10n" and "i18n" straight, and that the words are so unwieldly in this f5g modern English that we represent them based on their length.)
Another week camping at Ocracoke!
Rather than try to describe the shape of the whole thing, here is the last day.
I spend the first hour of daylight in the tent, enjoying the rain and reading Spider Robinson's User Friendly -- a light little puff pastry of a book. The first thing I see when I get out is a rainbow, out over the dunes.
The weather quickly turns pleasant, and we spend most of it on the beach. I'm starting to get tanned after a week here, and don't have to avoid the sun as much today. The waves are gentle.
I catch up on the first hundred pages of Le Guin's Powers, which according to the Google visitor's pass sticker on the back cover, I had started to read last December and didn't finish, since it was too good. It's my second book this trip about slavery, though not so wrenching as Octavia Butler's Kindred.
After lunch, the wind picks up, and I send the kite out on 500 feet of line, attached to a wooden tent stake that's driven in the sand. A airplane passes by, just out to sea, and lower than the kite, followed by a helicopter.
Later I walk downwind along the beach for a good long time, trailing the kite, and trying to walk with my eyes closed. I've been playing at this around the campground, for up to 30 steps, but on the deserted beach I only have to worry about stepping barefoot on a sharp shell or other flotsum. I work up to 100 paces blind, then 200, and finally, on my way back, manage 400 paces, or about 1/5th of a mile. The kite keeps pulling me inland, and I have to use the sound of the surf to guide me back to the wet sand. It becomes peaceful and meditative, and I'm disappointed when I get back to the busy beach.
It starts to look like rain, so I wind in the kite. Just as I get out of the shower the storm starts. It rains and thunders all through supper, with us wedged in the barely dry center of the screen tent. There's a loud crash from the highway, followed by sirens. The ground begins to swim with water. Well after we all wish it were over, it stops, and the sun is suprisingly still up.
There's another rainbow, this one a full arch. And then the light taken on a wonderful quality and the post-rain campground seems an entirely other place than the sun-drenched desert of the past week. Unknown birds slowly soar down the dunes catching insects and calling, and I spend an hour or two watching clouds, spotting the fingernail new moon, enjoying another beautiful sunset, and finishing the book. On the way to bed I see one last flash of lightning.
Ocracode for this trip:
OBX1.1 P2/7/3 L6 SA24bsb---c---/A4db++c+++ U3(Sango+Kai) T1f0b0 R1T Bn+b-m+++ F++u- SC-s+++g1 H++f0i4 V++++s++m0 E+++r+++