|
|
Line 1: |
Line 1: |
| = Resources =
| | You want |
| * [https://www.redhat.com/archives/anaconda-devel-list/2010-December/msg00110.html Original mailing list thread]
| | [[Anaconda/UX Redesign]] |
| | |
| = 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 ==
| |
| | |
| Currently, we have the following data sources available to us:
| |
| | |
| * iso-codes
| |
| * localedata
| |
| * tzdata
| |
| * libgweather
| |
| * geoclue
| |
| * xkeyboard-config
| |
| | |
| === iso-codes ===
| |
| | |
| Includes:
| |
| * country subdivisions (state/province), indexed by country
| |
| * countries, and their country code
| |
| * languages
| |
| | |
| Does not map:
| |
| * languages to countries
| |
|
| |
| === localedata ===
| |
| | |
| Maps:
| |
| * languages to countries (more or less)
| |
| | |
| Does not map:
| |
| * languages to a primary locale/country
| |
|
| |
| === tzdata ===
| |
| | |
| Includes:
| |
| * timezones, indexed by country
| |
| * latitude/longitude for timezones
| |
| | |
| Does not map:
| |
| * locales to country
| |
| * random cities to timezones (only specific timezone cities)
| |
|
| |
| === libgweather ===
| |
| Includes:
| |
| * many many cities, organized by country
| |
| ** with timezone
| |
| ** with lat/lon
| |
| ** with weather codes
| |
| | |
| Does not map:
| |
| * cities/countries to locale
| |
|
| |
| === geoclue ===
| |
| Maps:
| |
| * current location to:
| |
| ** country
| |
| ** city
| |
| ** latitude/longitude
| |
| | |
| === xkeyboard-config ===
| |
| Maps:
| |
| * language name to xkb layout (1:n, though)
| |
| * country name to xkb layout
| |
| | |
| == Widgetry ==
| |
| === Split-Out Widgetry ===
| |
| * 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 ===
| |
| * gdm - language and keyboard selectors
| |
| ** Uses: iso-codes, xkeyboard-config
| |
| * gnome-control-center datetime - timezone selecor
| |
| ** Uses: tzdata
| |
| ** http://live.gnome.org/Design/SystemSettings/DateAndTime
| |
| * gnome-panel - location selector
| |
| ** Uses: libgweather, tzdata
| |
| | |
| === Widgetry currently in development ===
| |
| * gnome locale configuration applet
| |
| ** Uses: iso-codes, xkeyboard-config, and more
| |
| ** http://live.gnome.org/Design/SystemSettings/RegionAndLanguage
| |
| | |
| = 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, via tzdata)
| |
| ** 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.
| |