KDE Core/Platform 11/Locale: Difference between revisions
< KDE Core | Platform 11
Line 65: | Line 65: | ||
== What's missing in QLocale == | == What's missing in QLocale == | ||
* ISO codes for language/country, uses enums instead | * ISO codes for language/country, uses enums instead [CLDR, already in data .h] | ||
* Digit Sets | * Digit Sets [CLDR] | ||
* Binary Formats | * Binary Formats [???] | ||
* Page Size | * Page Size [???] | ||
* Decimal Places | * Decimal Places [CLDR patterns] | ||
* Separate monetary number symbols (decimal, sign, etc) | * Separate monetary number symbols (decimal, sign, etc) [Not in CLDR, POSIX only] | ||
* Monetary formatting options internal only not exposed | * Monetary formatting options internal only not exposed | ||
* Digit grouping | * Digit grouping [CLDR patterns] | ||
* Week number systems | * Week number systems [CLDR week vars] | ||
* Calendar systems | * Calendar systems [CLDR] | ||
* Duration | * Duration [???] | ||
* Pretty format | * Pretty format [???] | ||
* Day of Pray | * Day of Pray [???] | ||
* Working week start/end | * Working week start/end [CLDR] | ||
* ... | * ... | ||
Revision as of 09:58, 6 June 2011
Locale
- http://community.kde.org/KDE_Core/KLocale
- http://community.kde.org/KDE_Core/ISO_Codes
- http://community.kde.org/KDE_Core/QtMerge/QDateTime
KLocale
- Based on POSIX standard locales with many extensions.
- Have own locale settings files
What's wrong with KLocale:
- Gtk/Qt apps running under kde-workspace don't use the KDE locale
- KDE apps running under other platforms/workspaces do not use host locale
- Class merges settings, formatters, parsers and translations in one giant blob
- Circular dependencies with KConfig and KCalendarSystem
- Unnecessary dependency for Qt-Addon libraries
What's great about KLocale:
- Users can customise workspace locale settings
- Apps can customise locale settings
- Many advanced settings and formats not in QLocale (yet)
QLocale
- Based on Unicode CLDR standard locales.
- Obtaining a POSIX backend foruse on MeeGo in Qt4.8?
- http://www.unicode.org/reports/tr35/tr35-15.html
- Encodes CLDR data in .h file for performance
What's wrong with QLocale:
- Not all KDE, CLDR or POSIX settings are supported
- Users unable to change settings
- Apps unable to change individual settings without sub-classing QSystemLocale (to/from string methods partially mitigate need for this)
What's good with QLocale:
- Uses host settings on all platforms
- Low-level common class so good for Qt Addons
- Some settings not yet in KDE
- QSystemLocale settings container that can be sub-classed
The Plan
- Add all KDE settings that are also in CLDR to QLocale
- Use QLocale to replace KLocale's role as settings container
- Gives correct Windows, Mac, Gnome, Meego settings
- KDE Workspace to set locale envvar on login if KDE locale different to system locale
- Gives correct locale Gtk/Qt apps
- KCM to load settings from QLocale, write out as both POSIX and CLDR format files only if user chooses different settings
- locale envvar then set to absolute path to users POSIX file so all Gtk apps get right settings
- QLocale loads CLDR(?) file so KDE/Qt apps get right settings
- Apps use parser/formatter classes/api's to alter settings for one-off calls rather than changing the locale itself, or create a whole new locale object.
- Settings not available in QLocale are used by formatter/parser classes
- Remove our kde-runtime/l10n locale files
- Remove currency files and api to new Qt Addon ISO Codes library
Big Questions
- Breaks Source Compatibility in a big way, virtually every method and enum has a different name and parms as well as the different namespace. Keep KDE4support KLocale wrapped around QLocale?
- Date/Time formats: Keep POSIX formats (need own formatter/parser that translates Unicode format) or switch to Unicode format (not SC, QDateTime may not support all our features)
- How will QLocale load custom CLDR? Probably not via xml? Platform plugin? If not CLDR then fallback to custom POSIX file but lacks some settings.
What's missing in QLocale
- ISO codes for language/country, uses enums instead [CLDR, already in data .h]
- Digit Sets [CLDR]
- Binary Formats [???]
- Page Size [???]
- Decimal Places [CLDR patterns]
- Separate monetary number symbols (decimal, sign, etc) [Not in CLDR, POSIX only]
- Monetary formatting options internal only not exposed
- Digit grouping [CLDR patterns]
- Week number systems [CLDR week vars]
- Calendar systems [CLDR]
- Duration [???]
- Pretty format [???]
- Day of Pray [???]
- Working week start/end [CLDR]
- ...
What's extra in QLocale
- More locale metadata
- Script
- Quotes
- Lists
- More number symbols
- Standalone month/day names
- Read DateTime
- ...