JauntyLanguageSelectorImprovements

Summary

To make it easier for people to choose the languages Ubuntu uses on their computer, the current “Language Support” window should be split in two. The primary window should let you choose the language used while you are logged in, and the language used during startup and login. The selection of which languages are actually installed should be relegated to a secondary dialog. Several other wording and behavior changes will also make the interface more learnable and more efficient.

Release note

The Language settings have been redesigned. Anyone can now choose the language used while they are logged in from the Language settings window. Administrators can still use the Language settings to install or remove support for extra languages.

Rationale

language-selector.png

The current “Language Support” window does not let you do the thing you most likely want to do with the only Ubuntu menu item labelled “Language”: to change the language Ubuntu uses while you are logged in. This setting is available at the login screen, during the few seconds in which you are entering your login details. But it’s not available at the point where you’re most likely to realize you want it, i.e. when you’re logged in and looking at an inhospitable language.

The current window does let you choose a “Default language for new user accounts and the login screen”, which likely causes frustration when people choose a language only to have the setting “stop working” as soon as they’ve logged in. We should provide both these settings, and make a clear distinction between them.

There are several other problems with the current interface:

  • It uses the word “support” or “supported” four times, with little indication of what it means.
  • It’s not obvious that changing the “Supported Languages” selection actually installs and/or removes software.
  • The list of “Supported Languages” is not sortable, so administrators need to scroll through the whole list in order to find out which languages are currently installed.
  • The list initially shows what is installed, and then shows any changes you want, but does not make clear whether you have actually made any changes.
  • The window uses the phrase “Default language” twice, with not much explanation of what it means.
  • It uses the word “enable”.
  • It fits poorly on small-screen devices like netbooks.

Use cases

  • Abdul and Ping-An share a computer, and prefer to have different language settings for their desktops. GDM provides the possibility to choose the language per user profile, but since this is hidden in the Options menu, Abdul and Ping-An don't know about this functionality. Instead they found the system setting in language-selector. However, since this sets the system wide language, they are confused and would like to have the possibility to set their preferred language for their session only.
  • Choose language for new accounts and login screen (technical: system-wide $LANG) from the set of installed locales (created by langpacks)
  • Install support for more languages (install language-pack-XX and optionally language-support-XX, which generates all locales for that language)
  • Select granularity of installed languages (basic translations, extra translations, writing aids, additional fonts, input methods and extra software)
  • Remove support for languages
  • (currently) enable/disable support for IMEs (Input Method Engines)

Requirements

  • list all currently installed languages
    • list currently installed details options per language
  • Add new language and language details
  • Remove language from the installed languages list
  • Set system language (root and new users) -- language, region, variation
  • Set user language -- language, region, variation

Design

language.jpg language-alpha-5.png

The main Language settings window should let you see and choose the language being used for your own session, to see the language for the startup and login screens, and — if you are an administrator — change that language too. (The startup+login language should also be used as the default for new user accounts, but this does not need to be advertised in the window.)

To help people who are trying to change the computer from a language they don’t understand to one they do, both language menus should present every language in its own language and script, regardless of the language of the current session. For example, “English”, “Español”, “日本語”.

If you are not an administrator, the “For everyone at startup and login, use:” menu and its label should be disabled, and the “Keep the same” checkbox should be both disabled and unchecked. However, the disabled menu should still show the correct language, to explain why the login screen is a different language from the rest of your session.

If you are an administrator, the “Keep the same” checkbox should be enabled. If this system has no other human user accounts, the checkbox should be checked by default. If the system has one or more other human user accounts, the checkbox should be unchecked by default.

If you check the “Keep the same” checkbox, the “For everyone at startup and login, use” language should change to match the “For my menus and windows, use” language. Whenever the checkbox is checked, any change to either language menu should automatically change the other menu to match.

If you change the “For everyone at startup and login, use” setting (either directly, or via the other menu or the checkbox) while you are not authenticated, an alert should appear prompting you to authenticate. If you authenticate successfully, the setting change should be made instantly. If you cancel the authentication, the “Keep the same” checkbox should become unchecked, and the language menu should return to its previous setting.

The “Install/Remove Languages…” button should open a PolicyKit alert prompting you to authenticate (if you have not already), and if you have authenticated successfully, then open the modal “Installed Languages” dialog.

installed-languages-jaunty.jpg

In this dialog the language names should be written in the language you are using, because the primary use case is for an administrator to make available to other users a language that the administrator may or may not read themselves.

The checkbox labels should use sentence case, e.g. “Extra fonts”, not “Extra Fonts”.

The overall checkbox for each language should summarize the checkbox states of all the components for that language: checked if they are all checked, unchecked if they are all unchecked, and indeterminate otherwise.

The label for the checkbox group should reflect the language currently selected in the list, e.g. “Components:”.

The text at the bottom left should show how many languages will be installed and removed if the changes you have selected are applied. Examples:

  • 1 to install
  • 3 to remove
  • 4 to install, 1 to remove

Code changes

  • standardize the notation of language entries in language-selector and gdm:
    • display the language names with their native name (i.e. English, Deutsch, Nederlands, Español, ...)
    • take the native names from the locales, where available.
  • per user language environment: set "LANGUAGE=xx_YY.UTF-8" in ~/.dmrc

Test/Demo Plan

TBD

Unresolved issues

The new language management dialog will be deferred to Jaunty+1.

installed-languages.jpg

In this dialog the language names should be written in the language you are using, because the primary use case is for an administrator to make available to other users a language that the administrator may or may not read themselves.

The expanded section for each language should show checkboxes for only the components available for that language. (That is, it should not contain any disabled checkboxes.) The checkbox labels should use sentence case, e.g. “Additional fonts”, not “Additional Fonts”.

The overall checkbox for each language should summarize the checkbox states of all the components for that language: checked if they are all checked, unchecked if they are all unchecked, and indeterminate otherwise.

By default, the languages should be sorted alphabetically. Clicking the “Installed” column header once should sort all languages that have components selected first (intermingling those with all components selected and those with only some), followed by those with no components selected, with a second click reversing that order. Clicking the “Language” column header once should restore the alphabetical sorting, with a second click reversing that order.

mvo: the current code does not use policykit/dbus, there is a lp:~mvo/language-selector/dbus branch with some support. its incomplete, there is a dbus based package installer missing (packagekit)


CategorySpec

JauntyLanguageSelectorImprovements (last edited 2009-03-02 16:54:20 by yttrium)