JauntyLanguageSelectorImprovements

Differences between revisions 1 and 35 (spanning 34 versions)
Revision 1 as of 2007-10-16 17:22:43
Size: 2568
Editor: p54A674EB
Comment:
Revision 35 as of 2009-03-02 16:54:20
Size: 9421
Editor: yttrium
Comment: + Jaunty alpha 5
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
''Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.''

 * '''Launchpad Entry''': UbuntuSpec:foo
 * '''Packages affected''':
 * '''Launchpad Entry''': UbuntuSpec:jaunty-language-selector-improvements
 * '''Packages affected''': language-selector
Line 10: Line 8:
This should provide an overview of the issue/functionality/change proposed here. Focus here on what will actually be DONE, summarising that so that other people don't have to read the whole spec. 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.
Line 12: Line 10:
== Release Note == == Release note ==
Line 14: Line 12:
This section should include a paragraph describing the end-user impact of this change. It is meant to be included in the release notes of the first release in which it is implemented. (Not all of these will actually be included in the release notes, at the release manager's discretion; but writing them is a useful exercise.)

It is mandatory.
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.
Line 20: Line 16:
This should cover the _why_: why is this change being proposed, what justifies it, where we see this justified. ||<tablestyle="float: right; margin: 1em 0 1em 1em;" style="border: none;">{{attachment:language-selector.png}}||
Line 22: Line 18:
== Use Cases == 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.
Line 24: Line 20:
== Assumptions == 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
Line 28: Line 52:
You can have subsections that better describe specific parts of the issue. {{attachment:language.jpg}} {{attachment:language-alpha-5.png}}
Line 30: Line 54:
== Implementation == 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.)
Line 32: Line 56:
This section should describe a plan of action (the "how") to implement the changes discussed. Could include subsections like: 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”, “日本語”.
Line 34: Line 58:
=== UI Changes === 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.
Line 36: Line 60:
Should cover changes required to the UI, or specific UI that is required to implement this 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.
Line 38: Line 62:
=== Code Changes === 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.
Line 40: Line 64:
Code changes should include an overview of what needs to change, and in some cases even the specific details. 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.
Line 42: Line 66:
=== Migration === The “Install/Remove Languages…” button should open a Policy``Kit alert prompting you to authenticate (if you have not already), and if you have authenticated successfully, then open the modal “Installed Languages” dialog.
Line 44: Line 68:
Include:
 * data migration, if any
 * redirects from old URLs to new ones, if any
 * how users will be pointed to the new way of doing things, if necessary.
{{attachment: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
Line 51: Line 92:
It's important that we are able to test new features, and demonstrate them to users. Use this section to describe a short plan that anybody can follow that demonstrates the feature is working. This can then be used during CD testing, and to show off after release. TBD
Line 53: Line 94:
This need not be added or completed until the specification is nearing beta. == Unresolved issues ==
Line 55: Line 96:
== Outstanding Issues == The new language management dialog will be deferred to Jaunty+1.
Line 57: Line 98:
This should highlight any issues that should be addressed in further specifications, and not problems with the specification itself; since any specification with problems cannot be approved. {{attachment:installed-languages.jpg}}
Line 59: Line 100:
== BoF agenda and discussion == 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.
Line 61: Line 102:
Use this section to take notes during the BoF; if you keep it in the approved spec, use it for summarising what was discussed and note any options that were rejected. 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)

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)