Hello,
On Wed, Apr 27, 2011 at 05:59:08PM +0200, dexen deVries wrote:
> browsing through uriel's slides from fosdem 2006 [1], i see him mention Plan
> 9
> lacks localization. what are this lists feelings on localization (both
> translation of strings and formatting of numbers, time etc.) of user-facing
> applications?
>
> the only model i know right now is gettext() and related from GNU; there's
> gotta be a better way; perhaps an fs for it? ;-)
As an example of the joy of the localization, switching recently KerGIS
servers from NetBSD 3.x to NetBSD 5.x, the same code recompiled would
give errors, with cryptic messages, until I happen to pin the problem to
the formating of numbers... I use, as a backup version of files, a text
(mainly ASCII) transcription of the data, and use 'd.d' for example. But
since users had LC_ALL set to french, NetBSD 3.x didn't support nor time
neither number localization so no problem, but 5.x now does. Result :
"french" 'd,d' was expected for input; and 'd,d' sent for output. Joy!
For another mean instead of gettext(), you have what has done Donald E.
Knuth with TeX and al: : all the strings are extracted in a "pool"
file---a text file---, so as long as one sticks to the index (the
position), one can provide a translated pool file to localize.
Furthermore, IMHO, there are 3 levels:
- 0: firmware/kernel: LANG C (a restricted faulty subset of english)
- 1: system libraries and utils, directly used by programmers, not
really users: LANG C (idem)
- 2: user level scripts or programs; since they are adapted for higher
level manipulation, the levels 0 and 1 messages have no meaning for the
user, so it is useless to translate. And since level 2 shall match the
user (here is the business!), this is not a problem.
So, for me at least, the best solution to this difficult problem is the
one provided for Plan9 by Rob Pile and Ken Thompson (I cite the authors
of the "Hello World or...", i.e. UTF8.
More is too much.
--
Thierry Laronde <tlaronde +AT+ polynum +dot+ com>
http://www.kergis.com/
Key fingerprint = 0FF7 E906 FBAF FE95 FD89 250D 52B1 AE95 6006 F40C