00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KLOCALE_H
00023 #define KLOCALE_H
00024
00025 #include <kdecore_export.h>
00026 #include <klocalizedstring.h>
00027 #include <ksharedconfig.h>
00028
00029 #include <QtCore/QString>
00030 #include <QtCore/QList>
00031
00032 class QStringList;
00033 class QTextCodec;
00034 class QDate;
00035 class QTime;
00036 class QDateTime;
00037
00038 class KDateTime;
00039 class KCalendarSystem;
00040
00041 class KLocalePrivate;
00042
00068 class KDECORE_EXPORT KLocale
00069 {
00070 public:
00091 explicit KLocale(const QString& catalog, KSharedConfig::Ptr config = KSharedConfig::Ptr());
00092
00106 KLocale(const QString& catalog, const QString &language, const QString &country = QString(), KConfig *config = 0);
00107
00111 KLocale( const KLocale & rhs );
00112
00116 KLocale& operator= ( const KLocale & rhs );
00117
00121 virtual ~KLocale();
00122
00139 void translateRaw(const char* msg,
00140 QString *lang, QString *trans) const;
00141
00160 void translateRaw(const char *ctxt, const char *msg,
00161 QString *lang, QString *trans) const;
00162
00183 void translateRaw(const char *singular, const char *plural, unsigned long n,
00184 QString *lang, QString *trans) const;
00185
00208 void translateRaw(const char *ctxt, const char *singular, const char *plural,
00209 unsigned long n, QString *lang, QString *trans) const;
00210
00218 bool setEncoding(int mibEnum);
00219
00224 enum SignPosition {
00228 ParensAround = 0,
00232 BeforeQuantityMoney = 1,
00236 AfterQuantityMoney = 2,
00240 BeforeMoney = 3,
00244 AfterMoney = 4
00245 };
00246
00252 enum DigitSet {
00253 ArabicDigits,
00255 ArabicIndicDigits,
00256 EasternArabicIndicDigits,
00257 DevenagariDigits
00258 };
00259
00272 QString digitSetToName(DigitSet digitSet, bool withDigits = false) const;
00273
00283 QList<DigitSet> allDigitSetsList () const;
00284
00291 QString decimalSymbol() const;
00292
00300 QString thousandsSeparator() const;
00301
00311 DigitSet digitSet() const;
00312
00319 QString currencySymbol() const;
00320
00328 QString monetaryDecimalSymbol() const;
00329
00337 QString monetaryThousandsSeparator() const;
00338
00345 QString positiveSign() const;
00346
00353 QString negativeSign() const;
00354
00361 int fracDigits() const;
00362
00369 bool positivePrefixCurrencySymbol() const;
00370
00377 bool negativePrefixCurrencySymbol() const;
00378
00386 SignPosition positiveMonetarySignPosition() const;
00387
00395 SignPosition negativeMonetarySignPosition() const;
00396
00406 DigitSet monetaryDigitSet() const;
00407
00422 QString formatMoney(double num,
00423 const QString & currency = QString(),
00424 int digits = -1) const;
00425
00441 QString formatNumber(double num, int precision = -1) const;
00442
00455 QString formatNumber(const QString &numStr, bool round=true, int precision=2) const;
00456
00467 QString formatLong(long num) const;
00468
00479 QString formatByteSize( double size ) const;
00480
00490 QString formatDuration( unsigned long mSec) const;
00491
00507 QString prettyFormatDuration( unsigned long mSec ) const;
00508
00518 bool nounDeclension() const;
00519
00523 enum DateFormat {
00524 ShortDate,
00525 LongDate,
00526 FancyShortDate,
00529 FancyLongDate
00532 };
00533
00543 QString formatDate(const QDate &date, DateFormat format = LongDate) const;
00544
00556 QString formatDateTime(const QDateTime &dateTime, DateFormat format = ShortDate,
00557 bool includeSecs = false) const;
00558
00562 enum DateTimeFormatOption {
00563 TimeZone = 0x01,
00564 Seconds = 0x02
00565 };
00566 Q_DECLARE_FLAGS(DateTimeFormatOptions, DateTimeFormatOption)
00567
00568
00578 QString formatDateTime(const KDateTime &dateTime, DateFormat format = ShortDate,
00579 DateTimeFormatOptions options = 0) const;
00580
00587 bool dateMonthNamePossessive() const;
00588
00601 QString formatTime(const QTime &pTime, bool includeSecs = false,
00602 bool isDuration = false) const;
00603
00613 DigitSet dateTimeDigitSet() const;
00614
00620 bool use12Clock() const;
00621
00627 int weekStartDay() const;
00628
00635 int workingWeekStartDay() const;
00636
00643 int workingWeekEndDay() const;
00644
00651 int weekDayOfPray() const;
00652
00658 const KCalendarSystem * calendar() const;
00659
00666 QString calendarType() const;
00667
00675 void setCalendar(const QString & calendarType);
00676
00686 double readMoney(const QString &numStr, bool * ok = 0) const;
00687
00697 double readNumber(const QString &numStr, bool * ok = 0) const;
00698
00709 QDate readDate(const QString &str, bool* ok = 0) const;
00710
00715 QDate readDate( const QString &intstr, const QString &fmt, bool* ok = 0) const;
00716
00720 enum ReadDateFlags {
00721 NormalFormat = 1,
00722 ShortFormat = 2
00723 };
00724
00737 QDate readDate(const QString &str, ReadDateFlags flags, bool *ok = 0) const;
00738
00751 QTime readTime(const QString &str, bool* ok = 0) const;
00752
00756 enum ReadTimeFlags {
00757 WithSeconds = 0,
00758 WithoutSeconds = 1
00759 };
00773 QTime readTime(const QString &str, ReadTimeFlags flags, bool *ok = 0) const;
00774
00787 QString language() const;
00788
00800 QString country() const;
00801
00813 QStringList languageList() const;
00814
00823 const QByteArray encoding() const;
00824
00833 int encodingMib() const;
00842 QTextCodec * codecForEncoding() const;
00843
00852 int fileEncodingMib() const;
00853
00876 void setDateFormat(const QString & format);
00899 void setDateFormatShort(const QString & format);
00905 void setDateMonthNamePossessive(bool possessive);
00925 void setTimeFormat(const QString & format);
00926
00935 void setDateTimeDigitSet(DigitSet digitSet);
00936
00942 void setWeekStartDay(int day);
00943
00950 void setWorkingWeekStartDay(int day);
00951
00958 void setWorkingWeekEndDay(int day);
00959
00966 void setWeekDayOfPray(int day);
00967
00974 QString dateFormat() const;
00981 QString dateFormatShort() const;
00988 QString timeFormat() const;
00989
00995 void setDecimalSymbol(const QString & symbol);
01001 void setThousandsSeparator(const QString & separator);
01008 void setPositiveSign(const QString & sign);
01014 void setNegativeSign(const QString & sign);
01023 void setDigitSet(DigitSet digitSet);
01029 void setPositiveMonetarySignPosition(SignPosition signpos);
01035 void setNegativeMonetarySignPosition(SignPosition signpos);
01043 void setPositivePrefixCurrencySymbol(bool prefix);
01051 void setNegativePrefixCurrencySymbol(bool prefix);
01057 void setFracDigits(int digits);
01063 void setMonetaryThousandsSeparator(const QString & separator);
01070 void setMonetaryDecimalSymbol(const QString & symbol);
01076 void setCurrencySymbol(const QString & symbol);
01085 void setMonetaryDigitSet(DigitSet digitSet);
01086
01092 int pageSize() const;
01093
01099 void setPageSize(int paperFormat);
01100
01105 enum MeasureSystem {
01106 Metric,
01107 Imperial
01108 };
01109
01115 MeasureSystem measureSystem() const;
01116
01122 void setMeasureSystem(MeasureSystem value);
01123
01134 void insertCatalog(const QString& catalog);
01135
01141 void removeCatalog(const QString &catalog);
01142
01147 void setActiveCatalog(const QString &catalog);
01148
01154 QString translateQt(const char *context,
01155 const char *sourceText,
01156 const char *comment) const;
01157
01168 QStringList allLanguagesList() const;
01169
01185 QString languageCodeToName(const QString &language) const;
01186
01197 QStringList allCountriesList() const;
01198
01213 QString countryCodeToName(const QString &country) const;
01214
01225 static void splitLocale(const QString &locale,
01226 QString &language,
01227 QString &country,
01228 QString &modifier,
01229 QString &charset);
01230
01239 static void setMainCatalog(const char *catalog);
01240
01257 static QString langLookup(const QString &fname, const char *rtype = "html");
01258
01264 static QString defaultLanguage();
01265
01271 static QString defaultCountry();
01272
01278 bool useTranscript() const;
01279
01285 bool isApplicationTranslatedInto( const QString & language);
01286
01292 void copyCatalogsTo(KLocale *locale);
01293
01306 bool setCountry(const QString & country, KConfig *config);
01307
01320 bool setLanguage(const QString &language, KConfig *config);
01321
01331 bool setLanguage(const QStringList &languages);
01332
01355 QString localizedFilePath(const QString &filePath) const;
01356
01373 QString removeAcceleratorMarker(const QString &label) const;
01374
01393 QString convertDigits(const QString &str, DigitSet digitSet,
01394 bool ignoreContext = false) const;
01395
01396 private:
01397 KLocalePrivate * const d;
01398 };
01399
01400 Q_DECLARE_OPERATORS_FOR_FLAGS(KLocale::DateTimeFormatOptions)
01401
01402 #endif