KDECore
klocale_p.h
Go to the documentation of this file.
00001 /* This file is part of the KDE libraries 00002 * Copyright 2009 David Faure <faure@kde.org> 00003 * Copyright 2010 John Layt <john@layt.net> 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Library General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2 of the License, or (at your option) any later version. 00009 * 00010 * This library is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Library General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Library General Public License 00016 * along with this library; see the file COPYING.LIB. If not, write to 00017 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00018 * Boston, MA 02110-1301, USA. 00019 */ 00020 00021 #ifndef KLOCALE_P_H 00022 #define KLOCALE_P_H 00023 00024 #include "klocale.h" 00025 00026 class QMutex; 00027 00028 class KCatalog; 00029 class KDayPeriod; 00030 00031 // Used by both KLocale and KLocalizedString, since they call each other. 00032 QMutex* kLocaleMutex(); 00033 00034 class KLocalePrivate 00035 { 00036 public: 00045 KLocalePrivate(KLocale *q_ptr); 00046 00050 KLocalePrivate(const KLocalePrivate &rhs); 00051 00055 KLocalePrivate &operator=(const KLocalePrivate &rhs); 00056 00060 virtual ~KLocalePrivate(); 00061 00062 /************************** 00063 ** Initialization ** 00064 **************************/ 00065 00066 protected: 00067 00071 KConfig *config(); 00072 00076 virtual void copy(const KLocalePrivate &rhs); 00077 00081 virtual void initFormat(); 00082 00086 virtual void init(const QString& catalogName, const QString &language, const QString &country, 00087 KSharedConfig::Ptr persistantconfig, KConfig *tempConfig); 00088 00092 virtual void initConfig(KConfig *config); 00093 00094 /************************** 00095 ** Country settings ** 00096 **************************/ 00097 00098 protected: 00099 00105 virtual void initCountry(const QString &country, const QString &configCountry); 00106 00111 virtual QString systemCountry() const; 00112 00113 public: 00114 00119 virtual bool setCountry(const QString &country, KConfig *config); 00120 00125 virtual QString country() const; 00126 00131 static QString defaultCountry(); 00132 00137 virtual QStringList allCountriesList() const; 00138 00143 virtual QString countryCodeToName(const QString &country) const; 00144 00149 bool setCountryDivisionCode(const QString & countryDivision); 00150 00155 QString countryDivisionCode() const; 00156 00157 /************************** 00158 ** Language settings ** 00159 **************************/ 00160 00161 protected: 00162 00166 static void getLanguagesFromVariable(QStringList &list, const char *variable, bool isLanguageList = false); 00167 00171 virtual QStringList systemLanguageList() const; 00172 00182 virtual void initLanguageList(const QString &language, const QString &configLanguages, bool useEnv); 00183 00187 virtual bool useDefaultLanguage() const; 00188 00189 public: 00190 00195 virtual bool setLanguage(const QString &language, KConfig *config); 00196 00201 virtual bool setLanguage(const QStringList &languages); 00202 00207 virtual QString language() const; 00208 00213 virtual QStringList languageList() const; 00214 00219 virtual QStringList allLanguagesList(); 00220 00225 virtual QStringList installedLanguages(); 00226 00231 static QString defaultLanguage(); 00232 00237 virtual QString languageCodeToName(const QString &language); 00238 00244 virtual bool nounDeclension() const; 00245 00251 static QString langLookup(const QString &fname, const char *rtype = "html"); 00252 00257 virtual bool useTranscript() const; 00258 00259 /************************** 00260 ** Catalog settings ** 00261 **************************/ 00262 00263 protected: 00264 00268 virtual void initMainCatalogs(); 00269 00276 virtual void updateCatalogs(); 00277 00278 public: 00279 00284 static void setMainCatalog(const char *catalog); 00285 00290 virtual void setActiveCatalog(const QString &catalog); 00291 00296 virtual void insertCatalog(const QString &catalog); 00297 00302 virtual void removeCatalog(const QString &catalog); 00303 00308 virtual void copyCatalogsTo(KLocale *locale); 00309 00314 virtual void translateRawFrom(const char *catname, const char *msgctxt, const char *msgid, const char *msgid_plural = 0, 00315 unsigned long n = 0, QString *language = 0, QString *translation = 0) const; 00316 00321 virtual QString translateQt(const char *context, const char *sourceText, const char *comment) const; 00322 00327 virtual bool isApplicationTranslatedInto(const QString &language); 00328 00329 /*************************** 00330 ** Calendar settings ** 00331 ***************************/ 00332 00333 protected: 00334 00338 virtual KLocale::CalendarSystem calendarTypeToCalendarSystem(const QString &calendarType) const; 00339 00343 virtual QString calendarSystemToCalendarType(KLocale::CalendarSystem) const; 00344 00345 public: 00346 00351 virtual void setCalendar(const QString &calendarType); 00352 00357 virtual void setCalendarSystem(KLocale::CalendarSystem); 00358 00363 virtual QString calendarType() const; 00364 00369 KLocale::CalendarSystem calendarSystem() const; 00370 00375 virtual const KCalendarSystem *calendar(); 00376 00381 void setWeekNumberSystem(KLocale::WeekNumberSystem weekNumberSystem); 00382 00387 KLocale::WeekNumberSystem weekNumberSystem(); 00388 00393 virtual void setWeekStartDay(int day); 00394 00399 virtual int weekStartDay() const; 00400 00405 virtual void setWorkingWeekStartDay(int day); 00406 00411 virtual int workingWeekStartDay() const; 00412 00417 virtual void setWorkingWeekEndDay(int day); 00418 00423 virtual int workingWeekEndDay() const; 00424 00429 virtual void setWeekDayOfPray(int day); 00430 00435 virtual int weekDayOfPray() const; 00436 00437 /*************************** 00438 ** Date/Time settings ** 00439 ***************************/ 00440 00441 protected: 00442 00446 virtual void initDayPeriods(const KConfigGroup &cg); 00447 00448 public: 00449 00454 virtual void setDateFormat(const QString &format); 00455 00460 virtual QString dateFormat() const; 00461 00466 virtual void setDateFormatShort(const QString &format); 00467 00472 virtual QString dateFormatShort() const; 00473 00478 virtual void setTimeFormat(const QString &format); 00479 00484 virtual QString timeFormat() const; 00485 00490 virtual void setDateTimeDigitSet(KLocale::DigitSet digitSet); 00491 00496 virtual KLocale::DigitSet dateTimeDigitSet() const; 00497 00502 virtual void setDateMonthNamePossessive(bool possessive); 00503 00508 virtual bool dateMonthNamePossessive() const; 00509 00514 virtual bool use12Clock() const; 00515 00520 virtual void setDayPeriods(const QList<KDayPeriod> &dayPeriods); 00521 00526 virtual QList<KDayPeriod> dayPeriods() const; 00527 00532 virtual KDayPeriod dayPeriodForTime(const QTime &time) const; 00533 00538 virtual QString formatDate(const QDate &date, KLocale::DateFormat format = KLocale::LongDate); 00539 00544 virtual QDate readDate(const QString &str, bool *ok = 0); 00545 00550 virtual QDate readDate(const QString &intstr, const QString &fmt, bool *ok = 0); 00551 00556 virtual QDate readDate(const QString &str, KLocale::ReadDateFlags flags, bool *ok = 0); 00557 00563 virtual QString formatTime(const QTime &pTime, bool includeSecs = false, bool isDuration = false) const; 00564 00569 virtual QString formatLocaleTime(const QTime &pTime, KLocale::TimeFormatOptions options = KLocale::TimeDefault) const; 00570 00575 virtual QTime readTime(const QString &str, bool *ok = 0) const; 00576 00582 virtual QTime readTime(const QString &str, KLocale::ReadTimeFlags flags, bool *ok = 0) const; 00583 00588 virtual QTime readLocaleTime(const QString &str, bool *ok = 0, 00589 KLocale::TimeFormatOptions options = KLocale::TimeDefault, 00590 KLocale::TimeProcessingOptions processing = KLocale::ProcessNonStrict) const; 00591 00596 static QString formatDateTime(const KLocale *locale, const QDateTime &dateTime, KLocale::DateFormat, 00597 bool includeSeconds, int daysToNow, int secsToNow); 00598 00603 virtual QString formatDateTime(const QDateTime &dateTime, KLocale::DateFormat format = KLocale::ShortDate, 00604 bool includeSecs = false) const; 00605 00610 virtual QString formatDateTime(const KDateTime &dateTime, KLocale::DateFormat format = KLocale::ShortDate, 00611 KLocale::DateTimeFormatOptions options = 0); 00612 00617 virtual QString formatDuration(unsigned long mSec) const; 00618 00623 virtual QString prettyFormatDuration(unsigned long mSec) const; 00624 00625 /*************************** 00626 ** Digit Set settings ** 00627 ***************************/ 00628 00629 protected: 00630 00634 static QString toArabicDigits(const QString &str); 00635 00639 static QString digitSetString(KLocale::DigitSet digitSet); 00640 00641 public: 00642 00647 virtual QList<KLocale::DigitSet> allDigitSetsList() const; 00648 00653 virtual QString digitSetToName(KLocale::DigitSet digitSet, bool withDigits = false) const; 00654 00659 virtual QString convertDigits(const QString &str, KLocale::DigitSet digitSet, bool ignoreContext = false) const; 00660 00661 /*************************** 00662 ** Number settings ** 00663 ***************************/ 00664 00665 public: 00666 00671 virtual void setDecimalPlaces(int digits); 00672 00677 virtual int decimalPlaces() const; 00678 00683 virtual void setDecimalSymbol(const QString &symbol); 00684 00689 virtual QString decimalSymbol() const; 00690 00696 virtual void setThousandsSeparator(const QString &separator); 00697 00703 virtual QString thousandsSeparator() const; 00704 00710 virtual void setNumericDigitGrouping(QList<int> groupList); 00711 00717 virtual QList<int> numericDigitGrouping() const; 00718 00723 virtual void setPositiveSign(const QString &sign); 00724 00729 virtual QString positiveSign() const; 00730 00735 virtual void setNegativeSign(const QString &sign); 00736 00741 virtual QString negativeSign() const; 00742 00747 virtual void setDigitSet(KLocale::DigitSet digitSet); 00748 00753 virtual KLocale::DigitSet digitSet() const; 00754 00759 virtual QString formatNumber(double num, int precision = -1) const; 00760 00765 virtual QString formatNumber(const QString &numStr, bool round = true, int precision = -1) const; 00766 00771 virtual QString formatLong(long num) const; 00772 00777 virtual double readNumber(const QString &numStr, bool *ok = 0) const; 00778 00779 /************************** 00780 ** Currency settings ** 00781 **************************/ 00782 00783 protected: 00784 00788 virtual void initCurrency(); 00789 00790 public: 00791 00796 virtual void setCurrencyCode(const QString &newCurrencyCode); 00797 00802 virtual QString currencyCode() const; 00803 00808 virtual KCurrencyCode *currency(); 00809 00814 static QString defaultCurrencyCode(); 00815 00820 virtual QStringList currencyCodeList() const; 00821 00822 /*************************** 00823 ** Money settings ** 00824 ***************************/ 00825 00826 public: 00827 00832 virtual void setCurrencySymbol(const QString &symbol); 00833 00838 virtual QString currencySymbol() const; 00839 00844 virtual void setMonetaryDecimalSymbol(const QString &symbol); 00845 00850 virtual QString monetaryDecimalSymbol() const; 00851 00857 virtual void setMonetaryThousandsSeparator(const QString &separator); 00858 00864 virtual QString monetaryThousandsSeparator() const; 00865 00871 virtual void setMonetaryDigitGrouping(QList<int> groupList); 00872 00878 virtual QList<int> monetaryDigitGrouping() const; 00879 00884 virtual void setMonetaryDecimalPlaces(int digits); 00885 00890 virtual int monetaryDecimalPlaces() const; 00891 00897 virtual void setPositivePrefixCurrencySymbol(bool prefix); 00898 00903 virtual bool positivePrefixCurrencySymbol() const; 00904 00910 virtual void setNegativePrefixCurrencySymbol(bool prefix); 00911 00916 virtual bool negativePrefixCurrencySymbol() const; 00917 00922 virtual void setPositiveMonetarySignPosition(KLocale::SignPosition signpos); 00923 00928 virtual KLocale::SignPosition positiveMonetarySignPosition() const; 00929 00934 virtual void setNegativeMonetarySignPosition(KLocale::SignPosition signpos); 00935 00940 virtual KLocale::SignPosition negativeMonetarySignPosition() const; 00941 00946 virtual void setMonetaryDigitSet(KLocale::DigitSet digitSet); 00947 00952 virtual KLocale::DigitSet monetaryDigitSet() const; 00953 00958 virtual QString formatMoney(double num, const QString ¤cy = QString(), int precision = -1) const; 00959 00964 virtual double readMoney(const QString &numStr, bool *ok = 0) const; 00965 00966 /*************************** 00967 ** Units settings ** 00968 ***************************/ 00969 00970 protected: 00971 00976 QList<QString> dialectUnitsList(KLocale::BinaryUnitDialect dialect); 00977 00978 enum DurationType { 00979 DaysDurationType = 0, 00980 HoursDurationType, 00981 MinutesDurationType, 00982 SecondsDurationType 00983 }; 00984 00988 static QString formatSingleDuration(KLocalePrivate::DurationType durationType, int n); 00989 00990 public: 00991 00996 virtual KLocale::BinaryUnitDialect binaryUnitDialect() const; 00997 01002 virtual void setBinaryUnitDialect(KLocale::BinaryUnitDialect newDialect); 01003 01008 virtual QString formatByteSize(double size); 01009 01014 virtual QString formatByteSize(double size, int precision, 01015 KLocale::BinaryUnitDialect dialect = KLocale::DefaultBinaryDialect, 01016 KLocale:: BinarySizeUnits specificUnit = KLocale::DefaultBinaryUnits); 01017 01022 virtual void setPageSize(int paperFormat); 01023 01028 virtual int pageSize() const; 01029 01034 virtual void setMeasureSystem(KLocale::MeasureSystem value); 01035 01040 virtual KLocale::MeasureSystem measureSystem() const; 01041 01042 /*************************** 01043 ** Encoding settings ** 01044 ***************************/ 01045 01046 protected: 01047 01051 virtual void initEncoding(); 01052 01057 virtual void initFileNameEncoding(); 01058 01062 virtual QByteArray systemCodeset() const; 01063 01067 static QByteArray encodeFileNameUTF8(const QString &fileName); 01068 01072 static QString decodeFileNameUTF8(const QByteArray &localFileName); 01073 01074 public: 01075 01080 virtual bool setEncoding(int mibEnum); 01081 01086 virtual const QByteArray encoding(); 01087 01092 virtual int encodingMib() const; 01093 01098 virtual int fileEncodingMib() const; 01099 01104 virtual QTextCodec *codecForEncoding() const; 01105 01106 /*************************** 01107 ** Utilities ** 01108 ***************************/ 01109 01110 public: 01111 01116 static void splitLocale(const QString &locale, QString &language, QString &country, 01117 QString &modifier, QString &charset); 01118 01123 virtual QString localizedFilePath(const QString &filePath) const; 01124 01129 virtual QString removeAcceleratorMarker(const QString &label) const; 01130 01131 private: 01132 01136 QList<int> digitGroupFormatToList(const QString &digitGroupFormat) const; 01137 01141 QString formatDigitGroup(const QString &number, const QString &groupSeparator, const QString &decimalSeperator, QList<int> groupList) const; 01142 01146 QString parseDigitGroup(const QString &number, const QString &groupSeparator, const QString &decimalSeperator, QList<int> groupList, bool *ok) const; 01147 01148 public: 01149 // Parent KLocale, public needed for copy ctor 01150 KLocale *q; 01151 01152 private: 01153 // Config file containing locale config 01154 KSharedConfig::Ptr m_config; 01155 01156 // Country settings 01157 QString m_country; 01158 QString m_countryDivisionCode; 01159 01160 // Language settings 01161 QString m_language; 01162 KConfig *m_languages; 01163 QStringList m_languageList; 01164 bool m_languageSensitiveDigits; // FIXME: Temporary until full language-sensitivity implemented. 01165 bool m_nounDeclension; 01166 01167 // Catalog settings 01168 QString m_catalogName; // catalogName ("app name") used by this KLocale object 01169 QList<KCatalogName> m_catalogNames; // list of all catalogs (regardless of language) 01170 QList<KCatalog> m_catalogs; // list of all found catalogs, one instance per catalog name and language 01171 int m_numberOfSysCatalogs; // number of catalogs that each app draws from 01172 bool m_useTranscript; // indicates if scripted messages are to be executed 01173 01174 // Calendar settings 01175 KLocale::CalendarSystem m_calendarSystem; 01176 KCalendarSystem *m_calendar; 01177 KLocale::WeekNumberSystem m_weekNumberSystem; 01178 int m_weekStartDay; 01179 int m_workingWeekStartDay; 01180 int m_workingWeekEndDay; 01181 int m_weekDayOfPray; 01182 01183 // Date/Time settings 01184 QString m_dateFormat; 01185 QString m_dateFormatShort; 01186 QString m_timeFormat; 01187 KLocale::DigitSet m_dateTimeDigitSet; 01188 bool m_dateMonthNamePossessive; 01189 mutable QList<KDayPeriod> m_dayPeriods; 01190 01191 // Number settings 01192 int m_decimalPlaces; 01193 QString m_decimalSymbol; 01194 QString m_thousandsSeparator; 01195 QList<int> m_numericDigitGrouping; 01196 QString m_positiveSign; 01197 QString m_negativeSign; 01198 KLocale::DigitSet m_digitSet; 01199 01200 // Currency settings 01201 QString m_currencyCode; 01202 KCurrencyCode *m_currency; 01203 QStringList m_currencyCodeList; 01204 01205 // Money settings 01206 QString m_currencySymbol; 01207 QString m_monetaryDecimalSymbol; 01208 QString m_monetaryThousandsSeparator; 01209 QList<int> m_monetaryDigitGrouping; 01210 int m_monetaryDecimalPlaces; 01211 KLocale::SignPosition m_positiveMonetarySignPosition; 01212 KLocale::SignPosition m_negativeMonetarySignPosition; 01213 bool m_positivePrefixCurrencySymbol; 01214 bool m_negativePrefixCurrencySymbol; 01215 KLocale::DigitSet m_monetaryDigitSet; 01216 01217 // Units settings 01218 KLocale::BinaryUnitDialect m_binaryUnitDialect; 01219 QList<QString> m_byteSizeFmt; 01220 int m_pageSize; 01221 KLocale::MeasureSystem m_measureSystem; 01222 01223 // Encoding settings 01224 QString m_encoding; 01225 QTextCodec *m_codecForEncoding; 01226 bool m_utf8FileEncoding; 01227 }; 01228 01229 #endif /* KLOCALE_P_H */ 01230
KDE 4.7 API Reference