Ubuntu and language packs

Paul Smith paul at mad-scientist.us
Thu Feb 5 23:14:25 UTC 2009

On Thu, 2009-02-05 at 15:47 -0500, Mackenzie Morgan wrote:
> On Thu, 2009-02-05 at 20:57 +0100, Surfaz Gemon Meme wrote:
> > If they know English, do not need English support of Ubuntu.
> > If they do not know English, I do not think the English support of
> > Ubuntu could change something.
> There are different values of "know."  They might know enough English to
> file a bug saying "Firefox crashed" but then the logs they post will be
> in, for example, Croatian.  Most triagers don't speak Croatian, so we
> can't read the logs.  And the reporter might not know enough English to
> translate all of the tech jargon in the logs, besides the amount of time
> it'd take.  At least the icons on the buttons can help when they use an
> English version to gather English logs.

I thought I'd just post this so everyone is on the same page WRT
internationalization in GNU/Linux systems.  For those that already know,
sorry for the noise :-)

GNU/Linux uses the gettext package for i18n.  There are other packages
used by other UNIX systems, which use large catalogs of numbers to look
up the right translations for each string, but this is a big pain and is
especially painful for distributed development/translation teams such as
you're likely to have in free software.

Gettext uses a really interesting trick to avoid the need for predefined
catalogs, at the expense of some runtime effort.  Basically, it uses the
string to be translated itself as the key for looking up the translated
string.  At runtime, when a translation is needed, the gettext library
is invoked with the static string to be translated as the argument.  It
generates a hash based on the contents of that string, then looks up the
hashed value in the translation catalog.

If there's an entry for that hashed value, then it is returned to the
caller.  If there is no entry, then the string that was provided is

What does this mean for the current discussion?  It means that the
"default" string is encoded right into the program.  So, even if NO
language packs are provided, all gettext programs will still print the
default string.  This default is typically called the "C" locale, for
hysterical raisins.

Virtually all default strings are written in English.  So, if you're
happy with the default strings you really don't need to install any
language packs whatsoever.  And certainly, if you want to use a
different locale than English, you can get away with ONLY that locale
being installed; if you don't have a satisfactory translation of the
string in your chosen locale it will use the default string... and
that's in English.  Or if it isn't it's definitely in whatever language
the developers of that utility wrote the code in :-).

IOW, there's really no reason to specifically install the English
language packs, if you don't want to use a locale of en_US or whatever.
Certainly you don't need to do it for any sort of debugging purposes.
If you want to force "no locale" to generate screenshots or whatever you
can just use "LC_ALL=C firefox".

More information about the Ubuntu-devel-discuss mailing list