From Fedora Project Wiki
m (Created page with '= Resources = * [https://www.redhat.com/archives/anaconda-devel-list/2010-December/msg00110.html Original mailing list thread] = Issues = Today I was looking at https://bugzill...')
 
 
(10 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 46: Line 52:
== Other data sources ==
== Other data sources ==


Currently, we have the following data sources available to us:
{|
 
| '''Data Source'''
* iso-codes
| '''Includes'''
* localedata
| '''Does Not Include'''
* tzdata
|-
* libgweather
| iso-codes
* geoclue
|
* xkeyboard-config
* country subdivisions (state/province), indexed by country  
 
* countries, and their country code  
=== iso-codes ===
 
Includes:
* country subdivisions (state/province), indexed by country
* countries, and their country code
* languages
* languages
 
|
Does not map:
* languages to countries mapping
* languages to countries
|-
| localedata
=== localedata ===
|
 
Maps:
* languages to countries (more or less)
* languages to countries (more or less)
 
|
Does not map:
* mapping of languages to a primary locale/country
* languages to a primary locale/country
|-
| tzdata
=== tzdata ===
|
 
Includes:
* timezones, indexed by country
* timezones, indexed by country
* latitude/longitude for timezones
* latitude/longitude for timezones
 
|
Does not map:
* 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
=== libgweather ===
|
Includes:
* 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
 
|
Does not map:
* cities/countries to locale
* cities/countries to locale
|-
=== geoclue ===
| geoclue
Maps:
|
* current location to:
* Maps current location to:
** country
** country
** city
** city
** latitude/longitude
** latitude/longitude
 
|
=== xkeyboard-config ===
N/A
Maps:
|-
* 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 ===
* system-config-date - timezone selector
 
** Uses: tzdata
{|
* system-config-date - timezone selector
| '''Widget'''
** Uses: custom hardcoded mappings in the code, lang-table
| '''What does it do?'''
* system-config-language - language selector
| '''What does it use?'''
** Uses: iso-codes
|-
* anaconda language selector - language selector
| system-config-date
** Uses: lang-table
| 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 ===
* gdm - language and keyboard selectors
 
** Uses: iso-codes, xkeyboard-config
{|
* gnome-control-center datetime - timezone selecor
| '''Widget'''
** Uses: tzdata
| '''What does it do?'''
** http://live.gnome.org/Design/SystemSettings/DateAndTime
| '''What does it use?'''
* gnome-panel - location selector
|-
** Uses: libgweather, tzdata
| 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 ===
* gnome locale configuration applet
{|
** Uses: iso-codes, xkeyboard-config, and more
| '''Widget'''
** http://live.gnome.org/Design/SystemSettings/RegionAndLanguage
| '''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 136: Line 167:


* country, latitude/longitude (from geoclue)
* country, latitude/longitude (from geoclue)
** timezone (from country, lat/lon, via tzdata)
** 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 166: 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

F15-dateimte-contrplpanel.png

Idea for Time Entry filtering possible TZs

Mockup-timeentry-anaconda-tzdetermination.png

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
  • country subdivisions (state/province), indexed by country
  • countries, and their country code
  • languages
  • languages to countries mapping
localedata
  • languages to countries (more or less)
  • mapping of languages to a primary locale/country
tzdata
  • timezones, indexed by country
  • latitude/longitude for timezones
  • locales to country mapping
  • mapping random cities to timezones (only specific timezone cities)
libgweather
  • many many cities, organized by country
    • with timezone
    • with lat/lon
    • with weather codes
  • cities/countries to locale
geoclue
  • Maps current location to:
    • country
    • city
    • latitude/longitude

N/A

xkeyboard-config
  • maps language name to xkb layout (1:n, though)
  • maps country name to xkb layout

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:

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

Inkscape SVG for all mockups

Anaconda-location-1.png

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.

Anaconda-location-4.png

Anaconda-location-4a-1.png

  • Luya: Is is possible to specify language variant on that selected field i.e. English (US)?

Anaconda-location-4a-2.png

Anaconda-location-4b-1.png

Anaconda-location-4b-2.png

Anaconda-location-4c-1.png

Anaconda-location-4c-2.png

Anaconda-location-4d-1.png

Anaconda-location-4d-2.png

Related Bugs