Re: kernel support for non-english user messages

Andreas Dilger
2003-04-09T05:41:55Z

On Apr 09, 2003 01:02 -0400, Frank Davis wrote:
> I wish to suggest a possible 2.6 or 2.7 feature (too late for 2.4.x and
> 2.5.x, I believe) that I believe would be helpful. Currently, printk
> messages are all in english, and I was wondering if printk could be
> modified to print out user messages that are in the default language of
> the machine. For example,
>
> printk(KERN_WARN "This driver is messed up!\n", 'en'); //Prints the
> english text .
>
> printk(KERN_WARN "This driver is messed up!\n", 'wel'); //Prints the
> welsh translation of the english text.
>
> printk(KERN_WARN "This driver is messed up!\n", getdefaultlanguage());
>
> I'm looking for a possible uniform design to make this happen, short of
> adding a complete machine translation module to the kernel. :) Userland
> internationalization support is already provided(I haven't personally
> used other languages besides English, but I've seen the options), but a
> kernel module or printk addition that handles localized kernel messages
> seems reasonable.
>
> Thoughts, comments?

I don't think you will get support from anyone for non-english messages
in the kernel. Some people think there is already too much text segment
in the kernel (c.f. tests that show kernel size shrinks by 200kB or whatever
when printk is defined to a no-op).

There was a proposal to make printks be more generic/consistent by someone
at IBM, but I don't know what happened to it.

My suggestion would be to add the required i18n support to klogd, so that
kernel messages are translated as they are removed from dmesg into syslog.
Then, like any i18n support, you build a message catalog from the printk
strings in the kernel and have klogd do the lookups/translation in user
space.

Cheers, Andreas
--
Andreas Dilger