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
00490 enum BinarySizeUnits {
00492 DefaultBinaryUnits = -1,
00493
00494
00495 UnitByte,
00496 UnitKiloByte,
00497 UnitMegaByte,
00498 UnitGigaByte,
00499 UnitTeraByte,
00500 UnitPetaByte,
00501 UnitExaByte,
00502 UnitZettaByte,
00503 UnitYottaByte,
00504 UnitLastUnit = UnitYottaByte
00505 };
00506
00525 enum BinaryUnitDialect {
00526 DefaultBinaryDialect = -1,
00527 IECBinaryDialect,
00528 JEDECBinaryDialect,
00529 MetricBinaryDialect,
00530 LastBinaryDialect = MetricBinaryDialect
00531 };
00532
00546 QString formatByteSize( double size ) const;
00547
00571 QString formatByteSize(
00572 double size,
00573 int precision,
00574 BinaryUnitDialect dialect = KLocale::DefaultBinaryDialect,
00575 BinarySizeUnits specificUnit = KLocale::DefaultBinaryUnits
00576 ) const;
00577
00585 BinaryUnitDialect binaryUnitDialect() const;
00586
00595 void setBinaryUnitDialect(BinaryUnitDialect newDialect);
00596
00606 QString formatDuration( unsigned long mSec) const;
00607
00623 QString prettyFormatDuration( unsigned long mSec ) const;
00624
00634 bool nounDeclension() const;
00635
00639 enum DateFormat {
00640 ShortDate,
00641 LongDate,
00642 FancyShortDate,
00645 FancyLongDate
00648 };
00649
00659 QString formatDate(const QDate &date, DateFormat format = LongDate) const;
00660
00672 QString formatDateTime(const QDateTime &dateTime, DateFormat format = ShortDate,
00673 bool includeSecs = false) const;
00674
00678 enum DateTimeFormatOption {
00679 TimeZone = 0x01,
00680 Seconds = 0x02
00681 };
00682 Q_DECLARE_FLAGS(DateTimeFormatOptions, DateTimeFormatOption)
00683
00684
00694 QString formatDateTime(const KDateTime &dateTime, DateFormat format = ShortDate,
00695 DateTimeFormatOptions options = 0) const;
00696
00703 bool dateMonthNamePossessive() const;
00704
00719 QString formatTime(const QTime &pTime, bool includeSecs = false,
00720 bool isDuration = false) const;
00721
00727 enum TimeFormatOption {
00728 TimeDefault = 0x0,
00729
00730 TimeWithoutSeconds = 0x1,
00731 TimeWithoutAmPm = 0x2,
00732
00733
00734
00735 TimeDuration = 0x6
00736
00737
00738
00739
00740 };
00741 Q_DECLARE_FLAGS(TimeFormatOptions, TimeFormatOption)
00742
00743
00753 QString formatLocaleTime(const QTime &pTime,
00754 TimeFormatOptions options = KLocale::TimeDefault) const;
00755
00765 DigitSet dateTimeDigitSet() const;
00766
00772 bool use12Clock() const;
00773
00779 int weekStartDay() const;
00780
00787 int workingWeekStartDay() const;
00788
00795 int workingWeekEndDay() const;
00796
00803 int weekDayOfPray() const;
00804
00810 const KCalendarSystem * calendar() const;
00811
00818 QString calendarType() const;
00819
00827 void setCalendar(const QString & calendarType);
00828
00838 double readMoney(const QString &numStr, bool * ok = 0) const;
00839
00849 double readNumber(const QString &numStr, bool * ok = 0) const;
00850
00861 QDate readDate(const QString &str, bool* ok = 0) const;
00862
00867 QDate readDate( const QString &intstr, const QString &fmt, bool* ok = 0) const;
00868
00872 enum ReadDateFlags {
00873 NormalFormat = 1,
00874 ShortFormat = 2
00875 };
00876
00889 QDate readDate(const QString &str, ReadDateFlags flags, bool *ok = 0) const;
00890
00903 QTime readTime(const QString &str, bool* ok = 0) const;
00904
00910 enum ReadTimeFlags {
00911 WithSeconds = 0,
00912 WithoutSeconds = 1
00913 };
00914
00930 QTime readTime(const QString &str, ReadTimeFlags flags, bool *ok = 0) const;
00931
00938 enum TimeProcessingOption {
00939 ProcessStrict = 0x1,
00940
00941
00942 ProcessNonStrict = 0x2
00943
00944
00945 };
00946 Q_DECLARE_FLAGS(TimeProcessingOptions, TimeProcessingOption)
00947
00948
00966 QTime readLocaleTime(const QString &str, bool *ok = 0,
00967 TimeFormatOptions options = KLocale::TimeDefault,
00968 TimeProcessingOptions processing = ProcessNonStrict) const;
00969
00982 QString language() const;
00983
00995 QString country() const;
00996
01008 QStringList languageList() const;
01009
01018 const QByteArray encoding() const;
01019
01028 int encodingMib() const;
01037 QTextCodec * codecForEncoding() const;
01038
01047 int fileEncodingMib() const;
01048
01071 void setDateFormat(const QString & format);
01094 void setDateFormatShort(const QString & format);
01100 void setDateMonthNamePossessive(bool possessive);
01120 void setTimeFormat(const QString & format);
01121
01130 void setDateTimeDigitSet(DigitSet digitSet);
01131
01137 void setWeekStartDay(int day);
01138
01145 void setWorkingWeekStartDay(int day);
01146
01153 void setWorkingWeekEndDay(int day);
01154
01161 void setWeekDayOfPray(int day);
01162
01169 QString dateFormat() const;
01176 QString dateFormatShort() const;
01183 QString timeFormat() const;
01184
01190 void setDecimalSymbol(const QString & symbol);
01196 void setThousandsSeparator(const QString & separator);
01203 void setPositiveSign(const QString & sign);
01209 void setNegativeSign(const QString & sign);
01218 void setDigitSet(DigitSet digitSet);
01224 void setPositiveMonetarySignPosition(SignPosition signpos);
01230 void setNegativeMonetarySignPosition(SignPosition signpos);
01238 void setPositivePrefixCurrencySymbol(bool prefix);
01246 void setNegativePrefixCurrencySymbol(bool prefix);
01252 void setFracDigits(int digits);
01258 void setMonetaryThousandsSeparator(const QString & separator);
01265 void setMonetaryDecimalSymbol(const QString & symbol);
01271 void setCurrencySymbol(const QString & symbol);
01280 void setMonetaryDigitSet(DigitSet digitSet);
01281
01287 int pageSize() const;
01288
01294 void setPageSize(int paperFormat);
01295
01300 enum MeasureSystem {
01301 Metric,
01302 Imperial
01303 };
01304
01310 MeasureSystem measureSystem() const;
01311
01317 void setMeasureSystem(MeasureSystem value);
01318
01329 void insertCatalog(const QString& catalog);
01330
01336 void removeCatalog(const QString &catalog);
01337
01342 void setActiveCatalog(const QString &catalog);
01343
01349 QString translateQt(const char *context,
01350 const char *sourceText,
01351 const char *comment) const;
01352
01363 QStringList allLanguagesList() const;
01364
01380 QString languageCodeToName(const QString &language) const;
01381
01392 QStringList allCountriesList() const;
01393
01408 QString countryCodeToName(const QString &country) const;
01409
01420 static void splitLocale(const QString &locale,
01421 QString &language,
01422 QString &country,
01423 QString &modifier,
01424 QString &charset);
01425
01434 static void setMainCatalog(const char *catalog);
01435
01452 static QString langLookup(const QString &fname, const char *rtype = "html");
01453
01459 static QString defaultLanguage();
01460
01466 static QString defaultCountry();
01467
01473 bool useTranscript() const;
01474
01480 bool isApplicationTranslatedInto( const QString & language);
01481
01487 void copyCatalogsTo(KLocale *locale);
01488
01501 bool setCountry(const QString & country, KConfig *config);
01502
01515 bool setLanguage(const QString &language, KConfig *config);
01516
01526 bool setLanguage(const QStringList &languages);
01527
01550 QString localizedFilePath(const QString &filePath) const;
01551
01568 QString removeAcceleratorMarker(const QString &label) const;
01569
01588 QString convertDigits(const QString &str, DigitSet digitSet,
01589 bool ignoreContext = false) const;
01590
01591 private:
01592 KLocalePrivate * const d;
01593 };
01594
01595 Q_DECLARE_OPERATORS_FOR_FLAGS(KLocale::DateTimeFormatOptions)
01596 Q_DECLARE_OPERATORS_FOR_FLAGS(KLocale::TimeFormatOptions)
01597 Q_DECLARE_OPERATORS_FOR_FLAGS(KLocale::TimeProcessingOptions)
01598
01599 #endif