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
00031 class QStringList;
00032 class QTextCodec;
00033 class QDate;
00034 class QTime;
00035 class QDateTime;
00036
00037 class KDateTime;
00038 class KCalendarSystem;
00039
00040 class KLocalePrivate;
00041
00067 class KDECORE_EXPORT KLocale
00068 {
00069 public:
00086 explicit KLocale(const QString& catalog, KSharedConfig::Ptr config = KSharedConfig::Ptr());
00087
00088 KLocale(const QString& catalog, const QString &language, const QString &country = QString(), KConfig *config = 0);
00089
00093 KLocale( const KLocale & rhs );
00094
00098 KLocale& operator= ( const KLocale & rhs );
00099
00103 virtual ~KLocale();
00104
00121 void translateRaw(const char* msg,
00122 QString *lang, QString *trans) const;
00123
00142 void translateRaw(const char *ctxt, const char *msg,
00143 QString *lang, QString *trans) const;
00144
00165 void translateRaw(const char *singular, const char *plural, unsigned long n,
00166 QString *lang, QString *trans) const;
00167
00190 void translateRaw(const char *ctxt, const char *singular, const char *plural,
00191 unsigned long n, QString *lang, QString *trans) const;
00192
00200 bool setEncoding(int mibEnum);
00201
00206 enum SignPosition {
00210 ParensAround = 0,
00214 BeforeQuantityMoney = 1,
00218 AfterQuantityMoney = 2,
00222 BeforeMoney = 3,
00226 AfterMoney = 4
00227 };
00228
00235 QString decimalSymbol() const;
00236
00244 QString thousandsSeparator() const;
00245
00252 QString currencySymbol() const;
00253
00261 QString monetaryDecimalSymbol() const;
00262
00270 QString monetaryThousandsSeparator() const;
00271
00278 QString positiveSign() const;
00279
00286 QString negativeSign() const;
00287
00294 int fracDigits() const;
00295
00302 bool positivePrefixCurrencySymbol() const;
00303
00310 bool negativePrefixCurrencySymbol() const;
00311
00319 SignPosition positiveMonetarySignPosition() const;
00320
00328 SignPosition negativeMonetarySignPosition() const;
00329
00344 QString formatMoney(double num,
00345 const QString & currency = QString(),
00346 int digits = -1) const;
00347
00363 QString formatNumber(double num, int precision = -1) const;
00364
00377 QString formatNumber(const QString &numStr, bool round=true, int precision=2) const;
00378
00389 QString formatLong(long num) const;
00390
00401 QString formatByteSize( double size ) const;
00402
00412 QString formatDuration( unsigned long mSec) const;
00420 bool nounDeclension() const;
00421
00425 enum DateFormat {
00426 ShortDate,
00427 LongDate,
00428 FancyShortDate,
00431 FancyLongDate
00434 };
00435
00445 QString formatDate(const QDate &date, DateFormat format = LongDate) const;
00446
00457 QString formatDateTime(const QDateTime &dateTime, DateFormat format = ShortDate,
00458 bool includeSecs = false) const;
00459
00463 enum DateTimeFormatOption {
00464 TimeZone = 0x01,
00465 Seconds = 0x02
00466 };
00467 Q_DECLARE_FLAGS(DateTimeFormatOptions, DateTimeFormatOption)
00468
00469
00479 QString formatDateTime(const KDateTime &dateTime, DateFormat format = ShortDate,
00480 DateTimeFormatOptions options = 0) const;
00481
00488 bool dateMonthNamePossessive() const;
00489
00502 QString formatTime(const QTime &pTime, bool includeSecs = false,
00503 bool isDuration = false) const;
00504
00510 bool use12Clock() const;
00511
00517 int weekStartDay() const;
00518
00524 const KCalendarSystem * calendar() const;
00525
00532 QString calendarType() const;
00533
00541 void setCalendar(const QString & calendarType);
00542
00552 double readMoney(const QString &numStr, bool * ok = 0) const;
00553
00563 double readNumber(const QString &numStr, bool * ok = 0) const;
00564
00575 QDate readDate(const QString &str, bool* ok = 0) const;
00576
00581 QDate readDate( const QString &intstr, const QString &fmt, bool* ok = 0) const;
00582
00586 enum ReadDateFlags {
00587 NormalFormat = 1,
00588 ShortFormat = 2
00589 };
00590
00603 QDate readDate(const QString &str, ReadDateFlags flags, bool *ok = 0) const;
00604
00617 QTime readTime(const QString &str, bool* ok = 0) const;
00618
00622 enum ReadTimeFlags {
00623 WithSeconds = 0,
00624 WithoutSeconds = 1
00625 };
00639 QTime readTime(const QString &str, ReadTimeFlags flags, bool *ok = 0) const;
00640
00653 QString language() const;
00654
00666 QString country() const;
00667
00679 QStringList languageList() const;
00680
00689 const QByteArray encoding() const;
00690
00699 int encodingMib() const;
00708 QTextCodec * codecForEncoding() const;
00709
00718 int fileEncodingMib() const;
00719
00742 void setDateFormat(const QString & format);
00765 void setDateFormatShort(const QString & format);
00771 void setDateMonthNamePossessive(bool possessive);
00791 void setTimeFormat(const QString & format);
00792
00793
00799 void setWeekStartDay(int day);
00806 QString dateFormat() const;
00813 QString dateFormatShort() const;
00820 QString timeFormat() const;
00821
00827 void setDecimalSymbol(const QString & symbol);
00833 void setThousandsSeparator(const QString & separator);
00840 void setPositiveSign(const QString & sign);
00846 void setNegativeSign(const QString & sign);
00852 void setPositiveMonetarySignPosition(SignPosition signpos);
00858 void setNegativeMonetarySignPosition(SignPosition signpos);
00866 void setPositivePrefixCurrencySymbol(bool prefix);
00874 void setNegativePrefixCurrencySymbol(bool prefix);
00880 void setFracDigits(int digits);
00886 void setMonetaryThousandsSeparator(const QString & separator);
00893 void setMonetaryDecimalSymbol(const QString & symbol);
00899 void setCurrencySymbol(const QString & symbol);
00900
00906 int pageSize() const;
00907
00913 void setPageSize(int paperFormat);
00914
00919 enum MeasureSystem {
00920 Metric,
00921 Imperial
00922 };
00923
00929 MeasureSystem measureSystem() const;
00930
00936 void setMeasureSystem(MeasureSystem value);
00937
00948 void insertCatalog(const QString& catalog);
00949
00955 void removeCatalog(const QString &catalog);
00956
00961 void setActiveCatalog(const QString &catalog);
00962
00968 QString translateQt(const char *context,
00969 const char *sourceText,
00970 const char *comment) const;
00971
00982 QStringList allLanguagesList() const;
00983
00999 QString languageCodeToName(const QString &language) const;
01000
01011 QStringList allCountriesList() const;
01012
01026 QString countryCodeToName(const QString &country) const;
01027
01038 static void splitLocale(const QString &locale,
01039 QString &language,
01040 QString &country,
01041 QString &modifier,
01042 QString &charset);
01043
01052 static void setMainCatalog(const char *catalog);
01053
01070 static QString langLookup(const QString &fname, const char *rtype = "html");
01071
01077 static QString defaultLanguage();
01078
01084 static QString defaultCountry();
01085
01091 bool useTranscript() const;
01092
01098 bool isApplicationTranslatedInto( const QString & language);
01099
01103 void copyCatalogsTo(KLocale *locale);
01104
01114 bool setCountry(const QString & country, KConfig *config);
01115
01125 bool setLanguage(const QString &language, KConfig *config);
01126
01136 bool setLanguage(const QStringList &languages);
01137
01160 QString localizedFilePath(const QString &filePath) const;
01161
01162 private:
01163 KLocalePrivate * const d;
01164 };
01165
01166 Q_DECLARE_OPERATORS_FOR_FLAGS(KLocale::DateTimeFormatOptions)
01167
01168 #endif