Language Selector



Currently, language support in Ubuntu is implicitly specified through installation of language-pack- and language-support- packages. A tool is needed which provides a simplified interface to this functionality.


Multi-user systems may have users with more than one native language. Since the installation only configures a single language, it should be easy to add support for additional language.

Scope and Use Cases

  • Bob is taking Esperanto classes, and would like to switch the desktop language to Esperanto in order to increase his familiarity with the language. When he installed the system he gave English as his language, so the Esperanto support needs to be installed.
  • Alice is setting up a number of public computers for a conference. There will be people from many countries attending, so she wants to make sure that the appropriate language support is on the machines before the conference starts.
  • Jim's native language is English, but he additionally wants to write letters in French and German, so he wants spell checking support for these languages (but does not want his desktop to be translated into those languages).

Implementation Plan

Adding language support involves installing packages, which is restricted to users with sudo access. Therefore, the operation will generally be limited to the initial user of the system and is completely out of the question before the user authenticates (e.g. at the GDM login screen).

Therefore a program in the System -> Administration menu, called through gksudo, would be appropriate.

The language pack installation/uninstallation code is likely to be similar to gnome-app-install. It would make sense to share code between the two utilities.

However, the two tasks are not really related from a user's point of view, so it would not make sense to merge both functions (installing software vs. managing language support) into a single window.

The "default language" combo box would change the default language the system boots into. Currently this is stored in the following locations:

  • /etc/environment on the lines matching LANGUAGE and LANG

  • /etc/default/gdm (private to GDM) -- it should be fixed to use the language specified in etc/environment.

Security Concerns

Adding a language involves installing packages, which is a privileged operation. This means that it can't be done in an unauthenticated context such as the GDM login screen.

Having an administration program run after login should be sufficient since it is assumed that the administrator can read the language they installed the system in, so they should be able to find the languages control panel.

It may make sense to add a note to the GDM language selector pointing out how to install new packs though.

Data Preservation and Migration

There is no existing data to migrate.

All state for the language support dialog is stored in the dpkg package database, and the /etc/environment file.

Packages Affected

The language selector will need to know what language packs are available to install. Furthermore, they will need to know what languages each language pack provides (e.g. "English" provides US English, British English, Australian English, ...).

The language names should be displayed in the user's currently selected language. Possible sources for language name translations include:

  • iso-codes
  • xml file common with rosetta

User Interface Requirements


Top list box contains three columns:

  • language pack name
  • check box for language pack (translations)
  • check box for language support (input methods, dictionaries, etc)

Combo box at the bottom is used to select the default locale for the system. The drop down box will only contain the locales that are actually installed on the system (a manageable number when only a few languages are installed).

If the distinction between language support and language pack debs could be hidden in the UI, it would be better to use a single checkbox and omit the column headers in the language list:

  • +-----------------------------------+
    | English                       [X] ^
    | French                        [ ] |
    | Italian                       [ ] |
    | Japanese                      [X] |
    | Swedish                       [ ] v
    Default Language: English (Australian)

Although this would be cleaner from the UI side, this approach has the following drawbacks:

  • In general people will want to install more language support packages than desktop translation packages.
  • Most language packs are on the CD, thus are cheap to install. On the other hand, language support packages are huge (in the order of 20-40 MB) and are not shipped on CDs, so modem users will not want to download these.

For these reasons we should reflect the separation of translation and content creation in the UI.

CategoryUdu CategorySpec

UbuntuDownUnder/BOFs/LanguageSelector (last edited 2008-08-06 16:22:51 by localhost)