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 00180 virtual void initLanguageList(const QString &language, const QString &configLanguages, bool useEnv); 00181 00185 virtual bool useDefaultLanguage() const; 00186 00187 public: 00188 00193 virtual bool setLanguage(const QString &language, KConfig *config); 00194 00199 virtual bool setLanguage(const QStringList &languages); 00200 00205 virtual QString language() const; 00206 00211 virtual QStringList languageList() const; 00212 00217 virtual QStringList allLanguagesList(); 00218 00223 virtual QStringList installedLanguages(); 00224 00229 static QString defaultLanguage(); 00230 00235 virtual QString languageCodeToName(const QString &language); 00236 00242 virtual bool nounDeclension() const; 00243 00249 static QString langLookup(const QString &fname, const char *rtype = "html"); 00250 00255 virtual bool useTranscript() const; 00256 00257 /************************** 00258 ** Catalog settings ** 00259 **************************/ 00260 00261 protected: 00262 00266 virtual void initMainCatalogs(); 00267 00274 virtual void updateCatalogs(); 00275 00276 public: 00277 00282 static void setMainCatalog(const char *catalog); 00283 00288 virtual void setActiveCatalog(const QString &catalog); 00289 00294 virtual void insertCatalog(const QString &catalog); 00295 00300 virtual void removeCatalog(const QString &catalog); 00301 00306 virtual void copyCatalogsTo(KLocale *locale); 00307 00312 virtual void translateRawFrom(const char *catname, const char *msgctxt, const char *msgid, const char *msgid_plural = 0, 00313 unsigned long n = 0, QString *language = 0, QString *translation = 0) const; 00314 00319 virtual QString translateQt(const char *context, const char *sourceText, const char *comment) const; 00320 00325 virtual bool isApplicationTranslatedInto(const QString &language); 00326 00327 /*************************** 00328 ** Calendar settings ** 00329 ***************************/ 00330 00331 protected: 00332 00336 virtual KLocale::CalendarSystem calendarTypeToCalendarSystem(const QString &calendarType) const; 00337 00341 virtual QString calendarSystemToCalendarType(KLocale::CalendarSystem) const; 00342 00343 public: 00344 00349 virtual void setCalendar(const QString &calendarType); 00350 00355 virtual void setCalendarSystem(KLocale::CalendarSystem); 00356 00361 virtual QString calendarType() const; 00362 00367 KLocale::CalendarSystem calendarSystem() const; 00368 00373 virtual const KCalendarSystem *calendar(); 00374 00379 void setWeekNumberSystem(KLocale::WeekNumberSystem weekNumberSystem); 00380 00385 KLocale::WeekNumberSystem weekNumberSystem(); 00386 00391 virtual void setWeekStartDay(int day); 00392 00397 virtual int weekStartDay() const; 00398 00403 virtual void setWorkingWeekStartDay(int day); 00404 00409 virtual int workingWeekStartDay() const; 00410 00415 virtual void setWorkingWeekEndDay(int day); 00416 00421 virtual int workingWeekEndDay() const; 00422 00427 virtual void setWeekDayOfPray(int day); 00428 00433 virtual int weekDayOfPray() const; 00434 00435 /*************************** 00436 ** Date/Time settings ** 00437 ***************************/ 00438 00439 protected: 00440 00444 virtual void initDayPeriods(const KConfigGroup &cg); 00445 00446 public: 00447 00452 virtual void setDateFormat(const QString &format); 00453 00458 virtual QString dateFormat() const; 00459 00464 virtual void setDateFormatShort(const QString &format); 00465 00470 virtual QString dateFormatShort() const; 00471 00476 virtual void setTimeFormat(const QString &format); 00477 00482 virtual QString timeFormat() const; 00483 00488 virtual void setDateTimeDigitSet(KLocale::DigitSet digitSet); 00489 00494 virtual KLocale::DigitSet dateTimeDigitSet() const; 00495 00500 virtual void setDateMonthNamePossessive(bool possessive); 00501 00506 virtual bool dateMonthNamePossessive() const; 00507 00512 virtual bool use12Clock() const; 00513 00518 virtual void setDayPeriods(const QList<KDayPeriod> &dayPeriods); 00519 00524 virtual QList<KDayPeriod> dayPeriods() const; 00525 00530 virtual KDayPeriod dayPeriodForTime(const QTime &time) const; 00531 00536 virtual QString formatDate(const QDate &date, KLocale::DateFormat format = KLocale::LongDate); 00537 00542 virtual QDate readDate(const QString &str, bool *ok = 0); 00543 00548 virtual QDate readDate(const QString &intstr, const QString &fmt, bool *ok = 0); 00549 00554 virtual QDate readDate(const QString &str, KLocale::ReadDateFlags flags, bool *ok = 0); 00555 00561 virtual QString formatTime(const QTime &pTime, bool includeSecs = false, bool isDuration = false) const; 00562 00567 virtual QString formatLocaleTime(const QTime &pTime, KLocale::TimeFormatOptions options = KLocale::TimeDefault) const; 00568 00573 virtual QTime readTime(const QString &str, bool *ok = 0) const; 00574 00580 virtual QTime readTime(const QString &str, KLocale::ReadTimeFlags flags, bool *ok = 0) const; 00581 00586 virtual QTime readLocaleTime(const QString &str, bool *ok = 0, 00587 KLocale::TimeFormatOptions options = KLocale::TimeDefault, 00588 KLocale::TimeProcessingOptions processing = KLocale::ProcessNonStrict) const; 00589 00594 static QString formatDateTime(const KLocale *locale, const QDateTime &dateTime, KLocale::DateFormat, 00595 bool includeSeconds, int daysToNow, int secsToNow); 00596 00601 virtual QString formatDateTime(const QDateTime &dateTime, KLocale::DateFormat format = KLocale::ShortDate, 00602 bool includeSecs = false) const; 00603 00608 virtual QString formatDateTime(const KDateTime &dateTime, KLocale::DateFormat format = KLocale::ShortDate, 00609 KLocale::DateTimeFormatOptions options = 0); 00610 00615 virtual QString formatDuration(unsigned long mSec) const; 00616 00621 virtual QString prettyFormatDuration(unsigned long mSec) const; 00622 00623 /*************************** 00624 ** Digit Set settings ** 00625 ***************************/ 00626 00627 protected: 00628 00632 static QString toArabicDigits(const QString &str); 00633 00637 static QString digitSetString(KLocale::DigitSet digitSet); 00638 00639 public: 00640 00645 virtual QList<KLocale::DigitSet> allDigitSetsList() const; 00646 00651 virtual QString digitSetToName(KLocale::DigitSet digitSet, bool withDigits = false) const; 00652 00657 virtual QString convertDigits(const QString &str, KLocale::DigitSet digitSet, bool ignoreContext = false) const; 00658 00659 /*************************** 00660 ** Number settings ** 00661 ***************************/ 00662 00663 public: 00664 00669 virtual void setDecimalPlaces(int digits); 00670 00675 virtual int decimalPlaces() const; 00676 00681 virtual void setDecimalSymbol(const QString &symbol); 00682 00687 virtual QString decimalSymbol() const; 00688 00693 virtual void setThousandsSeparator(const QString &separator); 00694 00699 virtual QString thousandsSeparator() const; 00700 00705 virtual void setPositiveSign(const QString &sign); 00706 00711 virtual QString positiveSign() const; 00712 00717 virtual void setNegativeSign(const QString &sign); 00718 00723 virtual QString negativeSign() const; 00724 00729 virtual void setDigitSet(KLocale::DigitSet digitSet); 00730 00735 virtual KLocale::DigitSet digitSet() const; 00736 00741 virtual QString formatNumber(double num, int precision = -1) const; 00742 00747 virtual QString formatNumber(const QString &numStr, bool round = true, int precision = -1) const; 00748 00753 virtual QString formatLong(long num) const; 00754 00759 virtual double readNumber(const QString &numStr, bool *ok = 0) const; 00760 00761 /************************** 00762 ** Currency settings ** 00763 **************************/ 00764 00765 protected: 00766 00770 virtual void initCurrency(); 00771 00772 public: 00773 00778 virtual void setCurrencyCode(const QString &newCurrencyCode); 00779 00784 virtual QString currencyCode() const; 00785 00790 virtual KCurrencyCode *currency(); 00791 00796 static QString defaultCurrencyCode(); 00797 00802 virtual QStringList currencyCodeList() const; 00803 00804 /*************************** 00805 ** Money settings ** 00806 ***************************/ 00807 00808 public: 00809 00814 virtual void setCurrencySymbol(const QString &symbol); 00815 00820 virtual QString currencySymbol() const; 00821 00826 virtual void setMonetaryDecimalSymbol(const QString &symbol); 00827 00832 virtual QString monetaryDecimalSymbol() const; 00833 00838 virtual void setMonetaryThousandsSeparator(const QString &separator); 00839 00844 virtual QString monetaryThousandsSeparator() const; 00845 00850 virtual void setMonetaryDecimalPlaces(int digits); 00851 00856 virtual int monetaryDecimalPlaces() const; 00857 00863 virtual void setPositivePrefixCurrencySymbol(bool prefix); 00864 00869 virtual bool positivePrefixCurrencySymbol() const; 00870 00876 virtual void setNegativePrefixCurrencySymbol(bool prefix); 00877 00882 virtual bool negativePrefixCurrencySymbol() const; 00883 00888 virtual void setPositiveMonetarySignPosition(KLocale::SignPosition signpos); 00889 00894 virtual KLocale::SignPosition positiveMonetarySignPosition() const; 00895 00900 virtual void setNegativeMonetarySignPosition(KLocale::SignPosition signpos); 00901 00906 virtual KLocale::SignPosition negativeMonetarySignPosition() const; 00907 00912 virtual void setMonetaryDigitSet(KLocale::DigitSet digitSet); 00913 00918 virtual KLocale::DigitSet monetaryDigitSet() const; 00919 00924 virtual QString formatMoney(double num, const QString ¤cy = QString(), int precision = -1) const; 00925 00930 virtual double readMoney(const QString &numStr, bool *ok = 0) const; 00931 00932 /*************************** 00933 ** Units settings ** 00934 ***************************/ 00935 00936 protected: 00937 00942 QList<QString> dialectUnitsList(KLocale::BinaryUnitDialect dialect); 00943 00944 enum DurationType { 00945 DaysDurationType = 0, 00946 HoursDurationType, 00947 MinutesDurationType, 00948 SecondsDurationType 00949 }; 00950 00954 static QString formatSingleDuration(KLocalePrivate::DurationType durationType, int n); 00955 00956 public: 00957 00962 virtual KLocale::BinaryUnitDialect binaryUnitDialect() const; 00963 00968 virtual void setBinaryUnitDialect(KLocale::BinaryUnitDialect newDialect); 00969 00974 virtual QString formatByteSize(double size); 00975 00980 virtual QString formatByteSize(double size, int precision, 00981 KLocale::BinaryUnitDialect dialect = KLocale::DefaultBinaryDialect, 00982 KLocale:: BinarySizeUnits specificUnit = KLocale::DefaultBinaryUnits); 00983 00988 virtual void setPageSize(int paperFormat); 00989 00994 virtual int pageSize() const; 00995 01000 virtual void setMeasureSystem(KLocale::MeasureSystem value); 01001 01006 virtual KLocale::MeasureSystem measureSystem() const; 01007 01008 /*************************** 01009 ** Encoding settings ** 01010 ***************************/ 01011 01012 protected: 01013 01017 virtual void initEncoding(); 01018 01023 virtual void initFileNameEncoding(); 01024 01028 virtual QByteArray systemCodeset() const; 01029 01033 static QByteArray encodeFileNameUTF8(const QString &fileName); 01034 01038 static QString decodeFileNameUTF8(const QByteArray &localFileName); 01039 01040 public: 01041 01046 virtual bool setEncoding(int mibEnum); 01047 01052 virtual const QByteArray encoding(); 01053 01058 virtual int encodingMib() const; 01059 01064 virtual int fileEncodingMib() const; 01065 01070 virtual QTextCodec *codecForEncoding() const; 01071 01072 /*************************** 01073 ** Utilities ** 01074 ***************************/ 01075 01076 public: 01077 01082 static void splitLocale(const QString &locale, QString &language, QString &country, 01083 QString &modifier, QString &charset); 01084 01089 virtual QString localizedFilePath(const QString &filePath) const; 01090 01095 virtual QString removeAcceleratorMarker(const QString &label) const; 01096 01097 // Parent KLocale, public needed for copy ctor 01098 KLocale *q; 01099 01100 private: 01101 // Config file containing locale config 01102 KSharedConfig::Ptr m_config; 01103 01104 // Country settings 01105 QString m_country; 01106 QString m_countryDivisionCode; 01107 01108 // Language settings 01109 QString m_language; 01110 KConfig *m_languages; 01111 QStringList m_languageList; 01112 bool m_languageSensitiveDigits; // FIXME: Temporary until full language-sensitivity implemented. 01113 bool m_nounDeclension; 01114 01115 // Catalog settings 01116 QString m_catalogName; // catalogName ("app name") used by this KLocale object 01117 QList<KCatalogName> m_catalogNames; // list of all catalogs (regardless of language) 01118 QList<KCatalog> m_catalogs; // list of all found catalogs, one instance per catalog name and language 01119 int m_numberOfSysCatalogs; // number of catalogs that each app draws from 01120 bool m_useTranscript; // indicates if scripted messages are to be executed 01121 01122 // Calendar settings 01123 KLocale::CalendarSystem m_calendarSystem; 01124 KCalendarSystem *m_calendar; 01125 KLocale::WeekNumberSystem m_weekNumberSystem; 01126 int m_weekStartDay; 01127 int m_workingWeekStartDay; 01128 int m_workingWeekEndDay; 01129 int m_weekDayOfPray; 01130 01131 // Date/Time settings 01132 QString m_dateFormat; 01133 QString m_dateFormatShort; 01134 QString m_timeFormat; 01135 KLocale::DigitSet m_dateTimeDigitSet; 01136 bool m_dateMonthNamePossessive; 01137 mutable QList<KDayPeriod> m_dayPeriods; 01138 01139 // Number settings 01140 int m_decimalPlaces; 01141 QString m_decimalSymbol; 01142 QString m_thousandsSeparator; 01143 QString m_positiveSign; 01144 QString m_negativeSign; 01145 KLocale::DigitSet m_digitSet; 01146 01147 // Currency settings 01148 QString m_currencyCode; 01149 KCurrencyCode *m_currency; 01150 QStringList m_currencyCodeList; 01151 01152 // Money settings 01153 QString m_currencySymbol; 01154 QString m_monetaryDecimalSymbol; 01155 QString m_monetaryThousandsSeparator; 01156 int m_monetaryDecimalPlaces; 01157 KLocale::SignPosition m_positiveMonetarySignPosition; 01158 KLocale::SignPosition m_negativeMonetarySignPosition; 01159 bool m_positivePrefixCurrencySymbol; 01160 bool m_negativePrefixCurrencySymbol; 01161 KLocale::DigitSet m_monetaryDigitSet; 01162 01163 // Units settings 01164 KLocale::BinaryUnitDialect m_binaryUnitDialect; 01165 QList<QString> m_byteSizeFmt; 01166 int m_pageSize; 01167 KLocale::MeasureSystem m_measureSystem; 01168 01169 // Encoding settings 01170 QString m_encoding; 01171 QTextCodec *m_codecForEncoding; 01172 bool m_utf8FileEncoding; 01173 }; 01174 01175 #endif /* KLOCALE_P_H */ 01176
KDE 4.6 API Reference