mNo edit summary |
|||
(9 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
= Resources = | = Resources = | ||
* [https://www.redhat.com/archives/anaconda-devel-list/2010-December/msg00110.html Original mailing list thread] | * [https://www.redhat.com/archives/anaconda-devel-list/2010-December/msg00110.html Original mailing list thread] | ||
== Date & Time Panel in Fedora 15 Control Panel == | |||
[[Image:f15-dateimte-contrplpanel.png]] | |||
== Idea for Time Entry filtering possible TZs == | |||
[[Image:mockup-timeentry-anaconda-tzdetermination.png | 600px]] | |||
= Issues = | = Issues = | ||
Line 48: | Line 52: | ||
== Other data sources == | == Other data sources == | ||
{| | |||
| '''Data Source''' | |||
| '''Includes''' | |||
| '''Does Not Include''' | |||
|- | |||
| iso-codes | |||
| | |||
* country subdivisions (state/province), indexed by country | |||
* countries, and their country code | |||
* country subdivisions (state/province), indexed by country | |||
* countries, and their country code | |||
* languages | * languages | ||
| | |||
* languages to countries mapping | |||
* languages to countries | |- | ||
| localedata | |||
| | |||
* languages to countries (more or less) | * languages to countries (more or less) | ||
| | |||
* mapping of languages to a primary locale/country | |||
* languages to a primary locale/country | |- | ||
| tzdata | |||
| | |||
* timezones, indexed by country | * timezones, indexed by country | ||
* latitude/longitude for timezones | * latitude/longitude for timezones | ||
| | |||
* locales to country mapping | |||
* locales to country | * mapping random cities to timezones (only specific timezone cities) | ||
* random cities to timezones (only specific timezone cities) | |- | ||
| libgweather | |||
| | |||
* many many cities, organized by country | * many many cities, organized by country | ||
** with timezone | ** with timezone | ||
** with lat/lon | ** with lat/lon | ||
** with weather codes | ** with weather codes | ||
| | |||
* cities/countries to locale | * cities/countries to locale | ||
|- | |||
| geoclue | |||
| | |||
* current location to: | * Maps current location to: | ||
** country | ** country | ||
** city | ** city | ||
** latitude/longitude | ** latitude/longitude | ||
| | |||
N/A | |||
|- | |||
* language name to xkb layout (1:n, though) | | xkeyboard-config | ||
* country name to xkb layout | | | ||
* maps language name to xkb layout (1:n, though) | |||
* maps country name to xkb layout | |||
| | |||
N/A | |||
|} | |||
== Widgetry == | == Widgetry == | ||
=== Split-Out Widgetry === | === Split-Out Widgetry === | ||
{| | |||
| '''Widget''' | |||
| '''What does it do?''' | |||
| '''What does it use?''' | |||
|- | |||
| system-config-date | |||
| timezone selector | |||
| Uses tzdata | |||
|- | |||
| system-config-date | |||
| timezone selector | |||
| Uses custom hardcoded mappings in the code, lang-table | |||
|- | |||
| system-config-language | |||
| language selector | |||
| Uses iso-codes | |||
|- | |||
| anaconda language selector | |||
| language selector | |||
| Uses lang-table | |||
|} | |||
=== Codebases that don't have widgetry split out === | === Codebases that don't have widgetry split out === | ||
{| | |||
| '''Widget''' | |||
| '''What does it do?''' | |||
| '''What does it use?''' | |||
|- | |||
| gdm | |||
| language and keyboard selectors | |||
| Uses iso-codes, xkeyboard-config | |||
|- | |||
| [http://live.gnome.org/Design/SystemSettings/DateAndTime gnome-control-center datetime] | |||
| timezone selecor | |||
| Uses tzdata | |||
|- | |||
| gnome-panel | |||
| location selector | |||
| Uses libgweather, tzdata | |||
|} | |||
=== Widgetry currently in development === | === Widgetry currently in development === | ||
{| | |||
| '''Widget''' | |||
| '''What does it do?''' | |||
| '''What does it use?''' | |||
|- | |||
| [http://live.gnome.org/Design/SystemSettings/RegionAndLanguage gnome locale configuration applet] | |||
| configures locale | |||
| Uses iso-codes, xkeyboard-config, and more | |||
|} | |||
= Proposal #1 = | = Proposal #1 = | ||
Line 138: | Line 167: | ||
* country, latitude/longitude (from geoclue) | * country, latitude/longitude (from geoclue) | ||
** timezone (from country, lat/lon, | ** timezone (from country, lat/lon, geoclue may be getting this support in the future - https://code.launchpad.net/~ted/indicator-datetime/geoclue-timezone-support/+merge/39144) | ||
** language (via ???????, see below) | ** language (via ???????, see below) | ||
*** keyboard layout (from country/language combo, via xkeyboard-config) | *** keyboard layout (from country/language combo, via xkeyboard-config) | ||
Line 168: | Line 197: | ||
Then, each of those options pops up a single-purpose configuration dialog. | Then, each of those options pops up a single-purpose configuration dialog. | ||
anaconda can either use the gnome capplet once it's done, or roll its own. | anaconda can either use the gnome capplet once it's done, or roll its own. | ||
= Mockups = | |||
== Proposal #1 == | |||
[[Media:anaconda-location-mocks-1.svg | Inkscape SVG for all mockups]] | |||
[[Image:anaconda-location-1.png]] | |||
[[Image:anaconda-location-2.png]] | |||
* ''Luya'': Current location should include the city and country similar to timezone layout. Will the region field be highlighted to let users know they can edit their settings. | |||
[[Image:anaconda-location-4.png]] | |||
[[Image:anaconda-location-4a-1.png]] | |||
* ''Luya'': Is is possible to specify language variant on that selected field i.e. '''English (US)'''? | |||
[[Image:anaconda-location-4a-2.png]] | |||
[[Image:anaconda-location-4b-1.png]] | |||
[[Image:anaconda-location-4b-2.png]] | |||
[[Image:anaconda-location-4c-1.png]] | |||
[[Image:anaconda-location-4c-2.png]] | |||
[[Image:anaconda-location-4d-1.png]] | |||
[[Image:anaconda-location-4d-2.png]] | |||
= Related Bugs = | |||
* https://bugzilla.redhat.com/show_bug.cgi?id=659727 - Anaconda (kickstart) fails if computer clock is wrong and gives misleading error message | |||
* https://bugzilla.redhat.com/show_bug.cgi?id=654012 - Wrong system locale set, causes incorrect page sizes for print queues | |||
* https://bugzilla.redhat.com/show_bug.cgi?id=619369 - Keyboard layout mixed up with language (locale) in installer | |||
* https://bugzilla.redhat.com/show_bug.cgi?id=582536 - Interface doesn't allow me to ensure if I enter password in correct keyboard layout | |||
* https://bugzilla.redhat.com/show_bug.cgi?id=528140 - [ALL Lang] TimeZone in Clock is Boston by default | |||
* https://bugzilla.redhat.com/show_bug.cgi?id=450396 - Romanian locale needs 4 keyboard arrangements in the keyboard list |
Latest revision as of 00:04, 18 January 2011
Resources
Date & Time Panel in Fedora 15 Control Panel
Idea for Time Entry filtering possible TZs
Issues
Today I was looking at https://bugzilla.redhat.com/show_bug.cgi?id=624158; part of that bug involved creating a locale mapping file in initscripts; this seemed like a bad idea. When considering that, I thought of lang-table, and wondered 'how could we get rid of that'.
Summary of Issues
- multiple locale/location screens
- no auto-detection
- anaconda-specific locale mapping files - we really shouldn't be driving off of configuration sources that only live in anaconda.
We can do better.
Multiple Locale / Location Screens
Anaconda currently has multiple locale/location screens:
- language selection (custom anaconda)
- keyboard selection (from s-c-keyboard, but nothing else uses that)
- timezone selection (from s-c-date)
- clock setting / ntp (in firstboot)
Needed Localization Info
Anaconda needs the following bits of localization info:
- locale/language
- timezone
- keyboard layout
- text font
Data Sources
What Anaconda currently uses
Anaconda uses the following data sources:
- tzdata
- lang-table (a custom anaconda file)
Anaconda does *zero* autodetection.
Available Resources
Other data sources
Data Source | Includes | Does Not Include |
iso-codes |
|
|
localedata |
|
|
tzdata |
|
|
libgweather |
|
|
geoclue |
|
N/A |
xkeyboard-config |
|
N/A |
Widgetry
Split-Out Widgetry
Widget | What does it do? | What does it use? |
system-config-date | timezone selector | Uses tzdata |
system-config-date | timezone selector | Uses custom hardcoded mappings in the code, lang-table |
system-config-language | language selector | Uses iso-codes |
anaconda language selector | language selector | Uses lang-table |
Codebases that don't have widgetry split out
Widget | What does it do? | What does it use? |
gdm | language and keyboard selectors | Uses iso-codes, xkeyboard-config |
gnome-control-center datetime | timezone selecor | Uses tzdata |
gnome-panel | location selector | Uses libgweather, tzdata |
Widgetry currently in development
Widget | What does it do? | What does it use? |
gnome locale configuration applet | configures locale | Uses iso-codes, xkeyboard-config, and more |
Proposal #1
On boot, as soon as there is networking available, start geoclue. Acquire location information. Then, feed the information as so:
- country, latitude/longitude (from geoclue)
- timezone (from country, lat/lon, geoclue may be getting this support in the future - https://code.launchpad.net/~ted/indicator-datetime/geoclue-timezone-support/+merge/39144)
- language (via ???????, see below)
- keyboard layout (from country/language combo, via xkeyboard-config)
- text font (hardcoded!)
Notes:
- What if we don't have network? Do DHCP always on link!
- It's easy to get a list of possible languages given the country. There's no canonical data source of what to use for the *primary* language, though. We could make a mapping table (ugh), or do heuristics (double ugh).
- text font is hardcoded to 'latarcyrheb-sun16'. We could conceivable have an override for the very few people who can't use that.
We then display as so:
Current settings: Location: United States [ change ] [ details ]
If you click 'change', it pops up a selector dialog that either:
- allows you to enter a location (similar to the gnome panel clock code)
- allows you to click a location (similar to the control center timezone selector)
Either of those resets country, timezone, language, keyboard layout, etc. If you select 'details', (or '>>>', or some expander, to be language-neutral), you get:
Language: English [ change ] Country: USA [ change ] Time: 2:33 PM (US Eastern) [ change ] Keyboard Layout: us [ change ]
Then, each of those options pops up a single-purpose configuration dialog. anaconda can either use the gnome capplet once it's done, or roll its own.
Mockups
Proposal #1
- Luya: Current location should include the city and country similar to timezone layout. Will the region field be highlighted to let users know they can edit their settings.
- Luya: Is is possible to specify language variant on that selected field i.e. English (US)?
Related Bugs
- https://bugzilla.redhat.com/show_bug.cgi?id=659727 - Anaconda (kickstart) fails if computer clock is wrong and gives misleading error message
- https://bugzilla.redhat.com/show_bug.cgi?id=654012 - Wrong system locale set, causes incorrect page sizes for print queues
- https://bugzilla.redhat.com/show_bug.cgi?id=619369 - Keyboard layout mixed up with language (locale) in installer
- https://bugzilla.redhat.com/show_bug.cgi?id=582536 - Interface doesn't allow me to ensure if I enter password in correct keyboard layout
- https://bugzilla.redhat.com/show_bug.cgi?id=528140 - [ALL Lang] TimeZone in Clock is Boston by default
- https://bugzilla.redhat.com/show_bug.cgi?id=450396 - Romanian locale needs 4 keyboard arrangements in the keyboard list