KDE Core/KLocale/Frameworks: Difference between revisions

From KDE Community Wiki
Line 63: Line 63:
|-
|-
| allCountriesList()
| allCountriesList()
| -
| None, loop from QLocale::AnyCountry to QLocale::LastCountry
| To be added
| To be added
|-
|-
| QString country()
| QString country()
| Country country()
| Country country() or name.split('_').at(1)
|
| Provide ISO conversion methods
|-
|-
| QString countryCodeToName(QString country)
| QString countryCodeToName(QString country)
| QString countryToString(Country country) or QString nativeCountryName()
| QString nativeCountryName() or QString countryToString(Country country)
|
| Add nativeCountryName(Country country) ???
|-
|-
| QString defaultCountry()
| QString defaultCountry()
Line 95: Line 95:
QLocale uses an enum value where KDE uses the ISO Code.  Support may be added to Qt to convert between the two, or this may be provided in the planned QtIsoCodes addon.
QLocale uses an enum value where KDE uses the ISO Code.  Support may be added to Qt to convert between the two, or this may be provided in the planned QtIsoCodes addon.


QStringList    allLanguagesList() const
{|
 
|-
QString         language() const
! KLocale
QString         languageCodeToName(const QString &language) const
! Qt 5.0
 
! Qt 5.1
QStringList     languageList() const
|-
=> uiLanguages()
| ISO codes as strings
static QString  defaultLanguage()
| enum Language
 
| Conversion methods to be added
bool           setLanguage(const QStringList &languages)
|-
bool           setLanguage(const QString &language, KConfig *config)
| QStringList    allLanguagesList() const
 
| None, loop from QLocale::AnyCountry to QLocale::LastCountry
====Digit Sets====
| To be added
 
|-
Not supported directly in Qt 5.0, some conversion happens implicitly, defer to 5.1 if really needed.
| QString language()
 
| Language language() or name.split('_').at(0)
QList<DigitSet> allDigitSetsList () const
| Provide ISO conversion methods
DigitSet        digitSet () const
|-
DigitSet        monetaryDigitSet () const
| QString languageCodeToName(QString language)
 
| nativeLanguageName() or languageToString(Language language)
void            setDigitSet (DigitSet digitSet)
| Add nativeLanguageName(Language language) ???
 
|-
QString        digitSetToName (DigitSet digitSet, bool withDigits=false) const
| QStringList languageList()
QString        convertDigits (const QString &str, DigitSet digitSet, bool ignoreContext=false) const
| uiLanguages()
|
|-
| static QString  defaultLanguage()
| QLocale::C
|
|-
| bool setLanguage(QStringList languages)
| -
| KDE Platform module
|-
| bool setLanguage(const QString &language, KConfig *config)
| QLocale(Language language, Country country)
|
|}


====Calendar / Date / Time====
====Calendar / Date / Time====
Line 212: Line 226:
void    setMonetaryDecimalPlaces (int digits)
void    setMonetaryDecimalPlaces (int digits)
void    setMonetaryDecimalSymbol (const QString &symbol)
void    setMonetaryDecimalSymbol (const QString &symbol)
void    setMonetaryDigitSet (DigitSet digitSet)
void    setMonetaryThousandsSeparator (const QString &separator)
void    setMonetaryThousandsSeparator (const QString &separator)
void    setNegativeMonetarySignPosition (SignPosition signpos)
void    setNegativeMonetarySignPosition (SignPosition signpos)
Line 222: Line 235:


double  readMoney (const QString &numStr, bool *ok=0) const
double  readMoney (const QString &numStr, bool *ok=0) const
====Digit Sets====
Not supported directly in Qt 5.0, some conversion happens implicitly, defer to 5.1 if really needed.
QList<DigitSet> allDigitSetsList () const
DigitSet        digitSet () const
void            setDigitSet (DigitSet digitSet)
DigitSet        monetaryDigitSet () const
void    setMonetaryDigitSet (DigitSet digitSet)
QString        digitSetToName (DigitSet digitSet, bool withDigits=false) const
QString        convertDigits (const QString &str, DigitSet digitSet, bool ignoreContext=false) const


====Binary Units====
====Binary Units====

Revision as of 19:55, 18 March 2012

KDE Frameworks 5 Migration

This page summarises the steps required for the migration form KLocale to Qlocale in KDE Frameworks 5.

Global locale

Qt does not have an equivalent to KGlobal::locale(), i.e. application level locale settings, it only has the Qt default and system locales which apply at system-wide level.

Qt also doesn't offer setXxx() api in QLocale to allow apps to override a setting while running, and probably never will. Usually in KDE this is abused for things like temp changes to the date format when the normal format options api should be used, or a different locale object created. This will be the correct way to do so in Frameworks.

For example:

KGlobal::locale()->setDateFormat("%y-%M-%d");
label->setText(KGlobal::formatDate(myDate));

When it should be:

label->setText(KGlobal::formatDate(myDate, "%y-%M-%d"));

And under Qt5 will become:

label->setText(QLocale().toString(myDate, "yyyy-MM-dd"));


KGlobal::locale() returns the application's locale, which defaults to the system locale unless set different using KLocale::setLocale()

QLocale() constructs the default locale which is the system locale unless set different using QLocale::setDefaultLocale() QLocale::system() will always return the system locale.


So change all KGlobal::locale().xxx() references to QLocale().xxx()???

Would we want a QApplication::locale() ???

Side-note: QLocale::setDefaultLocale() could be used in KDE4 Workspace with a custom QSystemLocale to force all Qt apps to use the KDE settings!

API Migration

Locale

KLocale(const QString &catalog, KSharedConfig::Ptr config=KSharedConfig::Ptr()) KLocale(const QString &catalog, const QString &language, const QString &country=QString(), KConfig *config=0)

void reparseConfiguration()

static void splitLocale(const QString &locale, QString &language, QString &country, QString &modifier, QString &charset)

Countries

QLocale uses an enum value where KDE uses the ISO Code. Support may be added to Qt to convert between the two, or this may be provided in the planned QtIsoCodes addon.


KLocale Qt 5.0 Qt 5.1
ISO codes as strings enum Country Conversion methods to be added
allCountriesList() None, loop from QLocale::AnyCountry to QLocale::LastCountry To be added
QString country() Country country() or name.split('_').at(1) Provide ISO conversion methods
QString countryCodeToName(QString country) QString nativeCountryName() or QString countryToString(Country country) Add nativeCountryName(Country country) ???
QString defaultCountry() QLocale::C
bool setCountry(QString country, KConfig *config) QLocale(Language language, Country country)
QString countryDivisionCode () const Not used anywhere
bool setCountryDivisionCode (const QString &countryDivision) Not used anywhere

Languages

QLocale uses an enum value where KDE uses the ISO Code. Support may be added to Qt to convert between the two, or this may be provided in the planned QtIsoCodes addon.

KLocale Qt 5.0 Qt 5.1
ISO codes as strings enum Language Conversion methods to be added
QStringList allLanguagesList() const None, loop from QLocale::AnyCountry to QLocale::LastCountry To be added
QString language() Language language() or name.split('_').at(0) Provide ISO conversion methods
QString languageCodeToName(QString language) nativeLanguageName() or languageToString(Language language) Add nativeLanguageName(Language language) ???
QStringList languageList() uiLanguages()
static QString defaultLanguage() QLocale::C
bool setLanguage(QStringList languages) - KDE Platform module
bool setLanguage(const QString &language, KConfig *config) QLocale(Language language, Country country)

Calendar / Date / Time

const KCalendarSystem * calendar () const KLocale::CalendarSystem calendarSystem () const QString calendarType () const

QString dateFormat () const QString dateFormatShort () const bool dateMonthNamePossessive () const DigitSet dateTimeDigitSet () const QString dayPeriodText (const QTime &time, DateTimeComponentFormat format=DefaultComponentFormat) const QString formatDate (const QDate &date, DateFormat format=LongDate) const QString formatDateTime (const QDateTime &dateTime, DateFormat format=ShortDate, bool includeSecs=false) const QString formatDateTime (const KDateTime &dateTime, DateFormat format=ShortDate, DateTimeFormatOptions options=0) const QString formatDuration (unsigned long mSec) const QString formatLocaleTime (const QTime &pTime, TimeFormatOptions options=KLocale::TimeDefault) const QString formatTime (const QTime &pTime, bool includeSecs=false, bool isDuration=false) const QString prettyFormatDuration (unsigned long mSec) const

QDate readDate (const QString &str, bool *ok=0) const QDate readDate (const QString &intstr, const QString &fmt, bool *ok=0) const QDate readDate (const QString &str, ReadDateFlags flags, bool *ok=0) const QTime readLocaleTime (const QString &str, bool *ok=0, TimeFormatOptions options=KLocale::TimeDefault, TimeProcessingOptions processing=ProcessNonStrict) const QTime readTime (const QString &str, bool *ok=0) const QTime readTime (const QString &str, ReadTimeFlags flags, bool *ok=0) const

void setCalendar (const QString &calendarType) void setCalendarSystem (KLocale::CalendarSystem calendarSystem) void setDateFormat (const QString &format) void setDateFormatShort (const QString &format) void setDateMonthNamePossessive (bool possessive) void setDateTimeDigitSet (DigitSet digitSet) void setTimeFormat (const QString &format) void setWeekDayOfPray (int day) void setWeekNumberSystem (KLocale::WeekNumberSystem weekNumberSystem) void setWeekStartDay (int day) void setWorkingWeekEndDay (int day) void setWorkingWeekStartDay (int day)

bool use12Clock () const => Remove int weekDayOfPray () const => Remove, try replace with weeend days instead

KLocale::WeekNumberSystem weekNumberSystem () KLocale::WeekNumberSystem weekNumberSystem () const int weekStartDay () const int workingWeekEndDay () const int workingWeekStartDay () const QString timeFormat () const

Numbers

int decimalPlaces() const QString decimalSymbol() const int fracDigits() const QString negativeSign() const QString positiveSign() const QString thousandsSeparator() const

void setDecimalPlaces(int digits) void setDecimalSymbol(const QString &symbol) void setFracDigits(int digits) void setNegativeSign(const QString &sign) void setPositiveSign(const QString &sign) void setThousandsSeparator(const QString &separator)

QString formatLong(long num) const QString formatNumber(double num, int precision=-1) const QString formatNumber(const QString &numStr, bool round=true, int precision=-1) const

double readNumber(const QString &numStr, bool *ok=0) const

Currency / Money

KCurrencyCode *currency () const QString currencyCode () const QStringList currencyCodeList () const QString currencySymbol () const int monetaryDecimalPlaces () const QString monetaryDecimalSymbol () const QString monetaryThousandsSeparator () const SignPosition negativeMonetarySignPosition () const bool negativePrefixCurrencySymbol () const SignPosition positiveMonetarySignPosition () const bool positivePrefixCurrencySymbol () const static QString defaultCurrencyCode ()

void setCurrencyCode (const QString &newCurrencyCode) void setCurrencySymbol (const QString &symbol) void setMonetaryDecimalPlaces (int digits) void setMonetaryDecimalSymbol (const QString &symbol) void setMonetaryThousandsSeparator (const QString &separator) void setNegativeMonetarySignPosition (SignPosition signpos) void setNegativePrefixCurrencySymbol (bool prefix) void setPositiveMonetarySignPosition (SignPosition signpos) void setPositivePrefixCurrencySymbol (bool prefix)

QString formatMoney (double num, const QString &currency=QString(), int precision=-1) const

double readMoney (const QString &numStr, bool *ok=0) const

Digit Sets

Not supported directly in Qt 5.0, some conversion happens implicitly, defer to 5.1 if really needed.

QList<DigitSet> allDigitSetsList () const
DigitSet        digitSet () const
void            setDigitSet (DigitSet digitSet)
DigitSet        monetaryDigitSet () const
void    setMonetaryDigitSet (DigitSet digitSet)
QString         digitSetToName (DigitSet digitSet, bool withDigits=false) const
QString         convertDigits (const QString &str, DigitSet digitSet, bool ignoreContext=false) const

Binary Units

Not supported in QLocale.

BinaryUnitDialect binaryUnitDialect () const QString formatByteSize (double size) const QString formatByteSize (double size, int precision, BinaryUnitDialect dialect=KLocale::DefaultBinaryDialect, BinarySizeUnits specificUnit=KLocale::DefaultBinaryUnits) const void setBinaryUnitDialect (BinaryUnitDialect newDialect)

Measurement Systems

MeasureSystem measureSystem () const void setMeasureSystem (MeasureSystem value)

int pageSize () const void setPageSize (int paperFormat)

Encoding

QTextCodec * codecForEncoding () const const QByteArray encoding () const int encodingMib () const int fileEncodingMib () const bool nounDeclension () const QString removeAcceleratorMarker (const QString &label) const bool setEncoding (int mibEnum)


Translations

Replace with QTranslator / tr() at lowest level, or new KTranslator at higher level.

QStringList installedLanguages () const bool isApplicationTranslatedInto (const QString &language)

void copyCatalogsTo (KLocale *locale) void insertCatalog (const QString &catalog) void removeCatalog (const QString &catalog) void setActiveCatalog (const QString &catalog) static void setMainCatalog (const char *catalog)

bool useTranscript () const

QString translateQt(const char *context, const char *sourceText, const char *comment) const void translateRaw(const char *singular, const char *plural, unsigned long n, QString *lang, QString *trans) const void translateRaw(const char *ctxt, const char *singular, const char *plural, unsigned long n, QString *lang, QString *trans) const void translateRaw(const char *msg, QString *lang, QString *trans) const void translateRaw(const char *ctxt, const char *msg, QString *lang, QString *trans) const void translateRawFrom(const char *catname, const char *msg, QString *lang, QString *trans) const void translateRawFrom(const char *catname, const char *singular, const char *plural, unsigned long n, QString *lang, QString *trans) const void translateRawFrom(const char *catname, const char *ctxt, const char *msg, QString *lang, QString *trans) const void translateRawFrom(const char *catname, const char *ctxt, const char *singular, const char *plural, unsigned long n, QString *lang, QString *trans) const

QString localizedFilePath (const QString &filePath) const static QString langLookup (const QString &fname, const char *rtype="html")