KDE Core/Platform 11/Locale: Difference between revisions

From KDE Community Wiki
Line 4: Line 4:
* http://community.kde.org/KDE_Core/ISO_Codes
* http://community.kde.org/KDE_Core/ISO_Codes
* http://community.kde.org/KDE_Core/QtMerge/QDateTime
* http://community.kde.org/KDE_Core/QtMerge/QDateTime
== KLocale
Based on POSIX standard locales with many extensions.


What's wrong with KLocale:
What's wrong with KLocale:
Line 16: Line 20:
* Apps can customise locale settings
* Apps can customise locale settings
* Many advanced settings and formats not in QLocale (yet)
* Many advanced settings and formats not in QLocale (yet)
== QLocale ==
Based on Unicode CLDR standard locales.  Obtaining a POSIX backend in Qt4.8?


What's wrong with QLocale:
What's wrong with QLocale:
* Not all settings are supported
* Not all KDE, CLDR or POSIX settings are supported
* Apps and users unable to change settings
* Apps and users unable to change settings


Line 25: Line 33:
* Low-level common class so good for Qt Addons
* Low-level common class so good for Qt Addons
* Some settings not yet in KDE
* Some settings not yet in KDE
* QSystemLocale settings container that can be sub-classed


The Plan:
== The Plan ==
* Add all KDE settings that already exist in CLDR to QLocale
 
* Add all KDE settings that are also in CLDR to QLocale
* Use QLocale to replace KLocale's role as settings container
* Use QLocale to replace KLocale's role as settings container
** Gives correct Windows, Mac, Gnome, Meego settings
** Gives correct Windows, Mac, Gnome, Meego settings
Line 37: Line 47:
* 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.
* 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
* Settings not available in QLocale are used by formatter/parser classes
* Remove our kde-runtime/l10n locale files
== Big Questions ==


Big Questions:
* 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)
* 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?  Fallback to custom POSIX but lacks some settings.
* How will QLocale load custom CLDR?  Fallback to custom POSIX but lacks some settings.


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
* Digit Sets
* Digit Sets
Line 52: Line 65:
* ...
* ...


What's extra in QLocale:
== What's extra in QLocale ==
 
* More locale metadata
* More locale metadata
* Script
* Script
Line 58: Line 72:
* Lists
* Lists
* More number symbols
* More number symbols
* ...

Revision as of 08:54, 6 June 2011

Locale

== KLocale

Based on POSIX standard locales with many extensions.

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 in Qt4.8?

What's wrong with QLocale:

  • Not all KDE, CLDR or POSIX settings are supported
  • Apps and users unable to change settings

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

Big Questions

  • 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? Fallback to custom POSIX but lacks some settings.

What's missing in QLocale

  • ISO codes for language/country, uses enums instead
  • Digit Sets
  • Binary Formats
  • Page Size
  • Decimal Places
  • Separate monetary number symbols (decimal, sign, etc) but that's a Unicode CLDR thing
  • Monetary formatting options internal only not exposed
  • ...

What's extra in QLocale

  • More locale metadata
  • Script
  • Quotes
  • Lists
  • More number symbols
  • ...