329 lines
13 KiB
Plaintext
329 lines
13 KiB
Plaintext
debian-installer locale chooser
|
|
===============================
|
|
|
|
The purpose of localechooser is to ask the person doing the
|
|
installation about his preferred language and country of "residence".
|
|
This information can be used to choose which language and country or
|
|
region to use during installation and set this language and country as
|
|
the default language and country after the installation.
|
|
|
|
This information will be used for building a value for the general system
|
|
locale.
|
|
|
|
This task was formerly split in two packages, named languagechooser
|
|
and countrychooser. As both interacted heavily, it was finally decided
|
|
to merge them, mostly because changing the language implied prompting
|
|
for the country again.
|
|
|
|
When merging the package, a new question about the final locale was added.
|
|
|
|
The language will be chosen among a list of "supported" languages. The
|
|
choice of language presets some country and locale -related values.
|
|
|
|
The country choice question refines the country choice inherited from
|
|
the language choice. It allows choosing any "country" in the
|
|
world. Depending on the language+country combination, this will be
|
|
used for setting a default locale or not (see below for details).
|
|
|
|
Finally, a lower priority question is shown to users so that they can
|
|
choose a locale based on the two former choices when several different
|
|
locales for a single language/country combination are supported in
|
|
Debian.
|
|
|
|
"Language" here means any language Debian has been significantly
|
|
translated into. This may be a simple ISO-639 code such as "en" or
|
|
"de" or a language "variant" code such as "pt_BR" (Brazilian
|
|
Portuguese) or zh_TW (for Traditional Chinese). The tradition of
|
|
representing language variants may here be confusing as zh_TW seems to
|
|
be "Chinese as spoken in Taiwan" while it is indeed "Traditional
|
|
Chinese". Debian has just here kept the most common way to represent
|
|
these language flavours.
|
|
|
|
"Country" here is meant to represent the place the user or the machine
|
|
is located. This value will be used for several location-related
|
|
settings as well as locale-related settings. The list of countries is
|
|
taken from the ISO-3166 standards. The names used are the "common"
|
|
names of these countries, as defined in the iso-codes package.
|
|
|
|
The way both packages collaborate is somewhat complicated and will be
|
|
described in details below. The general rationale is about building a
|
|
value for the system locale which may be as close as possible of the
|
|
"real" locale (language+country). As not all language+country
|
|
combinations are currently supported in Debian, approximations will
|
|
occur in some cases.
|
|
|
|
The mechanism is the following:
|
|
1) propose a language choice
|
|
2) propose a "short" list of countries with all countries for which
|
|
this language has a supported locale
|
|
3) optionally propose the whole list of world countries, split into
|
|
separate questions for first continent/area and the country
|
|
4) (for medium priority installs) prompt for a locale if several locales
|
|
(with different modifiers or charsets) exist for that language/country
|
|
combination
|
|
|
|
This package should behave as follows:
|
|
|
|
|
|
Language choice
|
|
---------------
|
|
|
|
Which languages are supported depends on the installation method and on
|
|
the cdebconf frontend that is being used.
|
|
Currently 5 levels are distinguished:
|
|
- dumb or serial terminal -->level 0 (only ASCII)
|
|
- no framebuffer -->level 1 (only Latin1)
|
|
- font load support -->level 2 (256-glyph langs)
|
|
- framebuffer and non-graphical interface-->level 3 (no combining langs)
|
|
- framebuffer and graphical interface -->level 4 (all langs)
|
|
|
|
Depending on these values, we use different templates with a different
|
|
list of languages. These lists are created at package build-time from
|
|
the contents of the second field of languagelist entries.
|
|
|
|
When the gtk frontend is used, it is assumed that all languages are supported.
|
|
|
|
The steps during language selection are:
|
|
|
|
0. Ask the user to pick one of the available languages.
|
|
|
|
1. Change presentation language in debconf.
|
|
(value debconf/language; content=language ISO-639 code plus
|
|
optionally language variant, for instance pt_BR)
|
|
|
|
2. Set the following variables for later use:
|
|
-debian-installer/language
|
|
LIST of languages in order of
|
|
preference. This will be a succession of several xx_YY values
|
|
where xx is a ISO-639 code for language and YY is an ISO-3166
|
|
code for country. The list is to be read from left to right
|
|
with the preferred combination at the left
|
|
This is meant to be used as the LANGUAGE variable later
|
|
-debian-installer/country:
|
|
This value may be pre-feeded with an ISO-3166 name for a country
|
|
This should be done when only one country has a valid locale
|
|
for the given language. For other languages, with several
|
|
possible countries ("possible" here is "supported by locales"),
|
|
the country must NOT be set by languagechooser
|
|
-debian-installer/locale
|
|
This should be a single entry such as fr_CA
|
|
Each language MUST provide one, which will be the default for this
|
|
language
|
|
|
|
This entry may be modified by the country choice running after
|
|
the language choice
|
|
-debian-installer/fallbacklocale This should be similar to the
|
|
"locale" value. This value will *never* change. The country
|
|
choice section will set debian-installer/locale to it when the
|
|
chosen country builds an unsupported locale
|
|
|
|
3. pass the locale information on to the modules that needs it.
|
|
|
|
The language code is passed into cdebconf. The locale, country code
|
|
and priority list of languages are passed to the installed system
|
|
via the cdebconf database.
|
|
|
|
Country choice
|
|
--------------
|
|
|
|
1) If a country code was set by the language choice section
|
|
("mono country" languages....that is, languages for which only one
|
|
country gives a valid locale)
|
|
|
|
-always keep the valid locale inherited from languagechooser for
|
|
debian-installer/locale
|
|
|
|
-present user, at medium priority only, with a screen listing all
|
|
world countries
|
|
This value will see the debian-installer/country value with the ISO-3166
|
|
code of the country. This value will only be used as a default for
|
|
location related choices such as the timezone or the mirror
|
|
|
|
2) If NO country code was set after the language choice
|
|
(language with at least two countries with a valid locale
|
|
for this language)
|
|
|
|
-always prompt the user (high priority) with a *short* list of all
|
|
countries for which a valid locale exists for this language
|
|
THIS LIST IS BUILT AT BUILD TIME for countrychooser, not on the fly
|
|
at install time. It is built only for languages which have a debconf
|
|
translation for countrychooser
|
|
|
|
This short list includes an "other" choice.
|
|
|
|
2a) If the user picks up one of the countries in the short list
|
|
the debian-installer/locale value is CHANGED to language_COUNTRY
|
|
|
|
2b) If the user picks up the "other" choice
|
|
the debian-installer/locale is set to the "fallback-locale" value
|
|
debian-installer/fallbacklocale
|
|
|
|
Locale choice
|
|
-------------
|
|
|
|
When both language (xx) and country (YY) are set, the locale is
|
|
defined as follows:
|
|
|
|
-if the language was mono-country AND the locale set *in the language section*
|
|
is *different* from xx_YY because it was set differently in languagelist, this
|
|
locale is kept. This special case was historically meant to deal with
|
|
the Norwegian locales transition mechanism (requiring to keep no_NO as locale
|
|
even if the language code became nb)
|
|
|
|
-if at least one xx_YY locale exists in Debian:
|
|
|
|
-the fallback locale set in the language selection part (3rd field of
|
|
the languagelist file) is examined and any modifier or charset is
|
|
added to xx_YY, leading to xx_YY@modifier.charset:
|
|
|
|
-if this locale exists it is kept to debian-installer/locale
|
|
-if this locale does not exists, xx_YY is set as debian-installer/locale
|
|
|
|
-if no xx_YY locale exists in Debian, the fallback locale (3rd field of
|
|
languagelist) is set as debian-installer/locale
|
|
|
|
If LANG (locale) and/or LANGUAGE (priority list of language codes) was
|
|
passed as arguments to the kernel from the boot prompt, these values
|
|
should be used instead of presenting the user with questions.
|
|
|
|
Locale choice
|
|
-------------
|
|
This part only happens at medium and low priority, for instance in "expert"
|
|
installs.
|
|
|
|
The xx_YY value is grepped in the list of all supported locales in
|
|
Debian. The remaining list is presented to the user with the above
|
|
determined default value.
|
|
|
|
This part allows for a final refinement of the locale without filling
|
|
default installs with a rather technical question.
|
|
|
|
There have been request for the possibility of editing the priority
|
|
list of language codes to use. This might be done, with debconf
|
|
priority 'low' to make sure the question will be invisible for most
|
|
users. I [pere 2003-02-28] do not think this is needed in the general
|
|
installation, and will keep it out of the first version.
|
|
On 2004-06-07, this hasn't been achieved yet.
|
|
|
|
Information passed into other modules
|
|
-------------------------------------
|
|
|
|
cdebconf
|
|
|
|
- (List of?) language codes to use when choosing which translation
|
|
to use. Inserted into the 'debconf/language' debconf template.
|
|
|
|
kbd-chooser
|
|
|
|
- Selects default keyboard based on the locale selected. This information
|
|
is passed on to base-config and console-tools.
|
|
|
|
At the moment this documentation is being rewritten, this is a
|
|
rather obscure mechanism which need more documentation. Adding a
|
|
way for localechooser to preseed kbd-chooser would be a great
|
|
enhancement.
|
|
|
|
choose-mirror
|
|
|
|
- The country set is used as a default choice
|
|
|
|
tzsetup
|
|
|
|
- Timezone restricted list of choices based on the selected country
|
|
|
|
locales
|
|
- The selected additional locales will be generated on the installed system
|
|
|
|
Interaction with the lowmem package
|
|
-----------------------------------
|
|
|
|
The lowmem package is triggered when the available memory prevents
|
|
using translations, because they eat a lot of space on the ramdisk.
|
|
|
|
For this to work, lowmem must set debian-installer/locale to en_US and set
|
|
its seen flag.
|
|
|
|
With this, the installation will continue with English and USA as
|
|
values for language and country and the user will not be prompted for
|
|
language and country.
|
|
|
|
Technical details
|
|
-----------------
|
|
|
|
Language choice
|
|
---------------
|
|
|
|
The core of the package are the languagelist and languagelist.l10n files.
|
|
For a language to appear in the language chooser screen it must have entries in both these files.
|
|
|
|
languagelist
|
|
------------
|
|
The format if the following:
|
|
|
|
Language;supported_environments;langcode;countrycode;fallbacklocale;langlist;console-package
|
|
where:
|
|
|
|
-Language =language name, in English
|
|
It is recommended to refer to ISO-639
|
|
-Supported env. =code to define in which environments this language
|
|
can be supported by the installer
|
|
0=OK in ASCII-only environments
|
|
1=OK in Latin-1 only environment (Linux console
|
|
without framebuffer, some serial consoles)
|
|
2=OK with font loading support
|
|
3=OK with the framebuffer console but not
|
|
possible to display in the regular Linux console
|
|
4=OK only with the graphical installer
|
|
-langcode =iso-639 TWO characters language code
|
|
|
|
DO NOT GUESS IT. Please check in the iso-codes
|
|
and locales packages
|
|
|
|
Three letter language code may, at the moment
|
|
this documentation is written, trigger hidden
|
|
problems. If a new language has no two-letter ISO
|
|
code, then this problem should be sorted out.
|
|
|
|
If we're lucky, everything is OK and 3-letter codes
|
|
will work..:-)
|
|
|
|
-countrycode =default value for country choice in countrychoose
|
|
MUST be a valid ISO-3166 alpha-2 code
|
|
|
|
DO NOT GUESS IT. Please check in the iso-codes
|
|
package
|
|
|
|
-fallbacklocale =fallback locale (MUST be valid, except for modifier
|
|
see below)
|
|
This locale will be used in case the user goes to
|
|
the "other" choice in countrychooser and chooses a
|
|
country with "unsupported" locale
|
|
|
|
It is recommended to use here the country where
|
|
the language is most widely spoken
|
|
|
|
Any modifier (@euro for instance) or charset mentioned
|
|
here will be ADDED to the final locale if such combination
|
|
is supported.
|
|
|
|
Example: Assume English uses "en_US@euro".
|
|
If the user chooses
|
|
USA as country, the @euro will be dropped as
|
|
these is no en_US@euro locale. However, if
|
|
Ireland is chosen, the locale will be en_IE@euro
|
|
|
|
-langlist =colon-separated list of possible fallback languages
|
|
It will usually be empty except for languages
|
|
where fallback to something else than English is wished
|
|
|
|
Setting this field will enforce setting LANGUAGE in
|
|
/etc/environment or /etc/default/locale
|
|
|
|
Never add random languages without talking deeply
|
|
with the i18n coordinators.
|
|
|
|
-console-package =which console package to install (console-data or
|
|
console-setup) -- option is probably obsolete
|
|
for the console-data package special settings can be added
|
|
(mostly keyboard or terminal settings)
|