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 <qstring.h>
00026 #include <kdelibs_export.h>
00027
00028 class QStringList;
00029 class QTextCodec;
00030 class QDate;
00031 class QTime;
00032 class QDateTime;
00033
00034 class KGlobal;
00035 class KConfig;
00036 class KConfigBase;
00037 class KLocalePrivate;
00038 class KCatalogue;
00039 class KCalendarSystem;
00040
00045 #ifndef I18N_NOOP
00046
00052 #define I18N_NOOP(x) x
00053 #endif
00054
00055 #ifndef I18N_NOOP2
00056
00063 #define I18N_NOOP2(comment,x) x
00064 #endif
00065
00078 KDECORE_EXPORT QString i18n(const char *text);
00079
00087 KDECORE_EXPORT QString i18n(const char *comment, const char *text);
00088
00100 KDECORE_EXPORT QString i18n(const char *singular, const char *plural, unsigned long n);
00101
00108 inline QString tr2i18n(const char* message, const char* =0) {
00109 return i18n(message);
00110 }
00111
00124 class KDECORE_EXPORT KLocale
00125 {
00126 friend class KGlobal;
00127 public:
00144 KLocale( const QString& catalog, KConfig *config = 0 );
00145
00149 KLocale( const KLocale & rhs );
00150
00154 KLocale& operator= ( const KLocale & rhs );
00155
00159 ~KLocale();
00160
00179 QString translate( const char *index ) const;
00180
00206 QString translate( const char *comment, const char *fallback) const;
00207
00218 QString translate( const char *singular, const char *plural,
00219 unsigned long n) const;
00220
00228 bool setEncoding(int mibEnum);
00229
00239 bool setLanguage(const QString & language);
00240
00250 bool setLanguage(const QStringList & languages);
00251
00261 bool setCountry(const QString & country);
00262
00267 enum SignPosition { ParensAround = 0, BeforeQuantityMoney = 1,
00268 AfterQuantityMoney = 2,
00269 BeforeMoney = 3, AfterMoney = 4 };
00270
00277 QString decimalSymbol() const;
00278
00286 QString thousandsSeparator() const;
00287
00294 QString currencySymbol() const;
00295
00303 QString monetaryDecimalSymbol() const;
00304
00312 QString monetaryThousandsSeparator() const;
00313
00320 QString positiveSign() const;
00321
00328 QString negativeSign() const;
00329
00336 int fracDigits() const;
00337
00344 bool positivePrefixCurrencySymbol() const;
00345
00352 bool negativePrefixCurrencySymbol() const;
00353
00361 SignPosition positiveMonetarySignPosition() const;
00362
00370 SignPosition negativeMonetarySignPosition() const;
00371
00386 QString formatMoney(double num,
00387 const QString & currency = QString::null,
00388 int digits = -1) const;
00389
00405 QString formatNumber(double num, int precision = -1) const;
00406
00414 QString formatNumber(const QString &numStr) const KDE_DEPRECATED;
00415
00429 QString formatNumber(const QString &numStr, bool round, int precision) const;
00430
00442 QString formatLong(long num) const;
00443
00452 bool nounDeclension() const;
00453
00463 QString formatDate(const QDate &pDate, bool shortFormat = false) const;
00464
00472 bool dateMonthNamePossessive() const;
00473
00486 QString formatTime(const QTime &pTime, bool includeSecs, bool isDuration ) const;
00487
00498 QString formatTime(const QTime &pTime, bool includeSecs = false) const;
00499
00505 bool use12Clock() const;
00506
00516 bool weekStartsMonday() const KDE_DEPRECATED;
00517
00524 int weekStartDay() const;
00525
00546 QString monthName(int i, bool shortName = false) const KDE_DEPRECATED;
00547
00571 QString monthNamePossessive(int i, bool shortName = false) const KDE_DEPRECATED;
00572
00583 QString weekDayName(int i, bool shortName = false) const KDE_DEPRECATED;
00584
00591 const KCalendarSystem * calendar() const;
00592
00600 QString calendarType() const;
00601
00610 void setCalendar(const QString & calendarType);
00611
00622 QString formatDateTime(const QDateTime &pDateTime,
00623 bool shortFormat = true,
00624 bool includeSecs = false) const;
00625
00635 double readMoney(const QString &numStr, bool * ok = 0) const;
00636
00646 double readNumber(const QString &numStr, bool * ok = 0) const;
00647
00658 QDate readDate(const QString &str, bool* ok = 0) const;
00659
00664 QDate readDate( const QString &intstr, const QString &fmt, bool* ok = 0) const;
00665
00666 enum ReadDateFlags {
00667 NormalFormat = 1,
00668 ShortFormat = 2
00669 };
00670
00684 QDate readDate(const QString &str, ReadDateFlags flags, bool *ok = 0) const;
00685
00698 QTime readTime(const QString &str, bool* ok = 0) const;
00699
00700 enum ReadTimeFlags {
00701 WithSeconds = 0,
00702 WithoutSeconds = 1
00703 };
00718 QTime readTime(const QString &str, ReadTimeFlags flags, bool *ok = 0) const;
00719
00727 QString language() const;
00728
00735 QString country() const;
00736
00750 QStringList languagesTwoAlpha() const;
00751
00760 QStringList languageList() const;
00761
00770 const char * encoding() const;
00771
00780 int encodingMib() const;
00789 QTextCodec * codecForEncoding() const;
00790
00799 int fileEncodingMib() const;
00800
00822 void setDateFormat(const QString & format);
00844 void setDateFormatShort(const QString & format);
00851 void setDateMonthNamePossessive(bool possessive);
00870 void setTimeFormat(const QString & format);
00871
00881 void setWeekStartsMonday(bool start) KDE_DEPRECATED;
00882
00889 void setWeekStartDay(int day);
00896 QString dateFormat() const;
00903 QString dateFormatShort() const;
00910 QString timeFormat() const;
00911
00917 void setDecimalSymbol(const QString & symbol);
00923 void setThousandsSeparator(const QString & separator);
00930 void setPositiveSign(const QString & sign);
00936 void setNegativeSign(const QString & sign);
00942 void setPositiveMonetarySignPosition(SignPosition signpos);
00948 void setNegativeMonetarySignPosition(SignPosition signpos);
00956 void setPositivePrefixCurrencySymbol(bool prefix);
00964 void setNegativePrefixCurrencySymbol(bool prefix);
00970 void setFracDigits(int digits);
00976 void setMonetaryThousandsSeparator(const QString & separator);
00983 void setMonetaryDecimalSymbol(const QString & symbol);
00989 void setCurrencySymbol(const QString & symbol);
00990
00996 int pageSize() const;
00997
01003 void setPageSize(int paperFormat);
01004
01009 enum MeasureSystem { Metric, Imperial };
01010
01016 MeasureSystem measureSystem() const;
01017
01023 void setMeasureSystem(MeasureSystem value);
01024
01035 void insertCatalogue(const QString& catalog);
01036
01042 void removeCatalogue(const QString &catalog);
01043
01048 void setActiveCatalogue(const QString &catalog);
01049
01056 QString translateQt(const char *context,
01057 const char *sourceText,
01058 const char *message) const;
01059
01065 QStringList allLanguagesTwoAlpha() const;
01066
01073 QString twoAlphaToLanguageName(const QString &code) const;
01074
01080 QStringList allCountriesTwoAlpha() const;
01081
01088 QString twoAlphaToCountryName(const QString &code) const;
01089
01099 static void splitLocale(const QString & str,
01100 QString & language,
01101 QString & country,
01102 QString & charset);
01103
01112 static void setMainCatalogue(const char *catalog);
01113
01120 static QString langLookup(const QString &fname, const char *rtype = "html");
01121
01127 static QString defaultLanguage();
01128
01134 static QString defaultCountry();
01135
01136
01140 static QString _initLanguage(KConfigBase *config);
01141
01142 #ifdef KDE_NO_COMPAT
01143 private:
01144 #endif
01145
01149 QString formatMoney(const QString &numStr) const KDE_DEPRECATED;
01150
01157 QString languages() const KDE_DEPRECATED;
01158
01163 bool setCharset(const QString & charset) KDE_DEPRECATED;
01164
01169 QString charset() const KDE_DEPRECATED;
01170
01171 protected:
01176 static void initInstance();
01177
01178 private:
01185 void initFormat(KConfig *config);
01186
01193 void initMainCatalogues(const QString & catalog);
01194
01203 void initLanguageList(KConfig * config, bool useEnv);
01204
01210 void initEncoding(KConfig * config);
01211
01216 void initFileNameEncoding(KConfig *config);
01217
01221 static QCString encodeFileNameUTF8( const QString & fileName );
01222
01226 static QString decodeFileNameUTF8( const QCString & localFileName );
01227
01232 void initCatalogue( KCatalogue & catalog );
01233
01237 void doFormatInit() const;
01238
01242 void initFormat();
01243
01247 QString translate_priv(const char *index,
01248 const char *text,
01249 const char ** original = 0,
01250 int* pluralType = 0) const;
01251
01255 bool useDefaultLanguage() const;
01256
01260 bool isLanguageInstalled(const QString & language) const;
01261
01266 void updateCatalogues( );
01267
01271 void initPluralTypes( );
01277 int pluralType( const QString & language );
01278
01285 int pluralType( const KCatalogue& catalog );
01292
01293
01294
01299 static QString catalogueFileName(const QString & language,
01300 const KCatalogue & catalog);
01301
01307 bool isApplicationTranslatedInto( const QString & language);
01308
01309 private:
01310
01311 QString m_decimalSymbol;
01312 QString m_thousandsSeparator;
01313 QString m_currencySymbol;
01314 QString m_monetaryDecimalSymbol;
01315 QString m_monetaryThousandsSeparator;
01316 QString m_positiveSign;
01317 QString m_negativeSign;
01318 int m_fracDigits;
01319 SignPosition m_positiveMonetarySignPosition;
01320 SignPosition m_negativeMonetarySignPosition;
01321
01322
01323 QString m_timeFormat;
01324 QString m_dateFormat;
01325 QString m_dateFormatShort;
01326
01327 QString m_language;
01328 QString m_country;
01329
01330 bool m_weekStartsMonday;
01331 bool m_positivePrefixCurrencySymbol;
01332 bool m_negativePrefixCurrencySymbol;
01333
01334 KLocalePrivate *d;
01335 };
01336
01337 #endif