From Fedora Project Wiki
 
(7 intermediate revisions by 2 users not shown)
Line 6: Line 6:


== Idea for Time Entry filtering possible TZs ==
== Idea for Time Entry filtering possible TZs ==
[[Image:mockup-timeentry-anaconda-tzdetermination.png]]
[[Image:mockup-timeentry-anaconda-tzdetermination.png | 600px]]


= Issues =
= Issues =
Line 107: Line 107:
== 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