LanguagePackVsSupport

Summary

As of Ubuntu 5.10, language-specific add-ons fall into two categories. language-pack-*, which provides gettext translation data, and language-support-*, which provides "everything else" (including non-gettext translation data). We want to make this distinction more meaningful: have language-pack-* provide all translations, and limit language-support-* to input aids (spell checking, thesauri, input methods, etc.).

Rationale

In e.g. a German installation without network, the user will get a German desktop by default, but won't have a German translation for Firefox and OpenOffice.org. This is confusing and inconvenient for new users, since it is not immediately clear that the fix for this is to install the "input aids" in the language selector.

Use cases

  • Michael got an Ubuntu CD recently and wants to install a German desktop. He only has a modem, so he does not want to download additional language support (as asked by the installer).
  • Sebastien wants to learn Catalan and therefore selects "Catalan translations" in the language selector. However, he will still see OpenOffice and Firefox in English.

Design

Intended meaning of the packages:

  • language pack = translations
  • language support = support packages (spell checkers, etc.)
  • This is reflected in the current language pack selector (translations and input aids)

To implement this, we would need to make the Firefox, Thunderbird, and OpenOffice l10n and help files dependencies of language-pack-*. However, the combination of OO.o l10n+ffox l10n is in the magnitude of 5 MB; OO.o help is in the magnitude of 10 MB. There is no way we could put help files onto the primary CD for more than one or two languages apart from English.

We have pretty good coverage of language-pack-* right now on the install CDs. However, there are no language packs on the live CDs for amd64 and i386 currently, because of space constraints. This will only get worse if language packs grow.

This means that we cannot implement the clean solution of adding these packages as language-pack-* dependencies. However, the following options will mitigate the conflict:

  • The installer question that offers to download "additional language support" should point out that this also includes certain translations, and that the user can always install the additional packages later with the Language Selector. This does not apply to UbuntuExpress, where language-support-* will always be downloaded, with a facility to cancel.

  • Improve the language selector to handle the non-gettext translation packages in a better way (see below).

Language selector changes:

  • When installing translations for a new language, install the Firefox, Thunderbird, and OpenOffice packages along with the gettext language pack(s).

  • On first start, offer to install missing Firefox/Thunderbird/OpenOffice packages for the default language.

Implementation

Code

The installer merely requires a string change in archive-copier.

The language selector already supports checking for missing packages at startup, so this mechanism can be used for checking for missing packages.

The additional packages that are dependencies of language-support-* but ship translations are:

  • mozilla-firefox-locale-lang*

  • mozilla-thunderbird-locale-lang

  • openoffice.org2-l10n-lang*

  • openoffice.org2-help-lang*

Sometimes package names have a country specific suffix (denoted by a *). All of them should be installed to support a particular language properly.

Notes

A related spec (LanguagePacksCD) proposes adding a separate l10n CD and putting all the translation-related packages on it. This is not an ultimate solution since it does not fit into our "one CD for everything" paradigm, and it contradicts our plan to reduce the number of CDs. However, if the CD is generated and offered for download only, this will allow users with low/no bandwidth to get the packages in some way (freedom toaster, get a friend to burn the CD, etc.)


CategorySpec

LanguagePackVsSupport (last edited 2008-08-06 16:19:59 by localhost)