A common need for users installing a Debian system is to end up with a fully localised system that does not need to be set up in order to be useful for users who require a given locale for being supported. Besides having a fully I18n Debian Installer there are several things that help set up an internationalised Debian system.
Localization-config is a tool to setup the configuration of programs in order to use a default language for the system as defined by the system administrator. This tool was initially written by Konstantinos Margaritis, developed for Skolelinux and was later integrated with Debian and uploaded in August 2004. It was later integrated in the Debian installer for sarge (through base-config).
This tool tries to ease the way that administrators (or, even, the Debian Installer) set up a fully localised system. In a system, localisation begins by defining the preferred locale but there are many tools that need to be specifically configured to use a given locale. This tool can run after and before package installation to adjust its configuration to use a given language through the use of a collection of scripts. Each of the available scripts adjust the configuration of a single package for a number of languages. Please note that this tool is targeted for system configuration. Users wishing to change their own locale (but not the system's) should use set-language-env (in the language-env package).
In order to use this tool, the system administrator have to call one script, update-locale-config, providing the desired locale as a parameter. This script calls all other scripts in /usr/lib/localization-config. If the -p flag is used, the *.preinst scripts are called, else (default) the *.postinst scripts are called. The preinst scripts are supposed to be run when you need to do configuration of a package before it is installed (main use is by preseeding debconf values of the package). The postinst scripts are there when a package does not support this kind of preconfiguration (such KDE, gdm, etc.) and has to be configured by modifying its configuration file.
In order to prevent modifying new configuration file formats the scripts first checks the version of the package it should configure, in three different ways:
check the version of the installed package.
check the version of the package available available in the configured repository (that is, what is the version of the package you would install if you use apt).
if both of the checks above fail, try getting the version from /etc/debian_version. This method should never be called if everything works as expected.
The version of the package is used to define version maps, since some versions might need to be configured in slightly different ways. The wrapper scripts will call the appropriate script under the proper folder (woody, sarge, etc) and do the actual configuration.
Localization-config currently configures:
Dictionaries-common (ispell): preseeds the preferred dictionary;
fontconfig: implement fonts substitution (currently only for Greek);
Gdm: sets the default language for sessions;
KDE: modifies the language settings of /etc/kde3/system.kdeglobals and /etc/kde3/kdm/kdmrc. It can also modify the settings of the ktouch program by adjusting /etc/kde3/ktouchrc;
Links: Sets the preferred language for browsing by modifying /etc/links.cfg;
Ltsp: Sets the X keyboard map by modifying /opt/ltsp/i386/etc/lts.conf;
Lynx: Sets the preferred language for browsing by modifying /etc/lynx.cfg;
Mozilla: Sets the preferred language for browsing by setting the UserAgent locale and accepted languages at /etc/mozilla/prefs.js;
Xfree86 and Xorg: preseeds the character set for the language.
Localization-config is still work in progress and members of the different i18n teams still need to review the available scripts in order to integrate their own languages in the installation process. Moreover, due to the changes introduced in the Debian Installer early in 2006 (in which base-config was removed and introduced into the first stage of the installed), this package needs to be re-integrated into the etch installer.
New i18n scripts need to be written also for programs such as: locale-purge (/etc/locale.nopurge, TeX/LaTeX (including hyphenation rules defined at /etc/texmf/language.dat), console settings (including /etc/inputrc and the console keymap by preseeding console-common), Mutt (locale and charset at /etc/Muttrc), Mozilla's Firebird (same values as those configured already for Mozilla), etc.
The Debian task selection tool, called tasksel is run in every new system installation and allows to define a set of packages aimed for specific purposes.
One widely developed used of tasksel are "language tasks". These are tasks that are installed depending on the installation language. They should feature sets of packages that are specific to the related language.
There are currently two language tasks per language: one <language> task which depends on nothing but standard packages, and one <language>-desktop task which depends on the standard desktop task.
Packages in language tasks can include localisation packages for software that are installed by other tasks or by the standard system. For instance, the <language>-desktop tasks install localisation packages for the packages that are part of the standard desktop task (kde-i18n-*, openoffice.org-l10n-*, etc.).
These tasks can also include packages that are needed for the rendering of the given language: TTF or Postscript fonts for <language>-desktop tasks, console fonts for <language> tasks, etc.
Adding new language tasks should be partly automated by the tasksel maintenance team, i.e. the Debian Installer team. As soon as a new languages appears in the D-I supported languages, an equivalent language task should be added, if at least one specific package motivates it (for instance a localisation package for on of the packages that are part of the desktop tasks.
Translation teams and translators should also be active by proposing enhancement to tasks related to their language.
New tasks should be reported as wishlist bug reports again the tasksel package.
This section will be completed in further releases of this paper