KDE Core/Platform 11/Locale: Difference between revisions

From KDE Community Wiki
Line 5: Line 5:
* http://community.kde.org/KDE_Core/QtMerge/QDateTime
* http://community.kde.org/KDE_Core/QtMerge/QDateTime


== KLocale
== KLocale ==


Based on POSIX standard locales with many extensions.
Based on POSIX standard locales with many extensions.

Revision as of 09:07, 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

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

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
  • ...