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:
00090 explicit KLocale(const QString& catalog, KSharedConfig::Ptr config = KSharedConfig::Ptr());
00091
00105 KLocale(const QString& catalog, const QString &language, const QString &country = QString(), KConfig *config = 0);
00106
00110 KLocale( const KLocale & rhs );
00111
00115 KLocale& operator= ( const KLocale & rhs );
00116
00120 virtual ~KLocale();
00121
00138 void translateRaw(const char* msg,
00139 QString *lang, QString *trans) const;
00140
00159 void translateRaw(const char *ctxt, const char *msg,
00160 QString *lang, QString *trans) const;
00161
00182 void translateRaw(const char *singular, const char *plural, unsigned long n,
00183 QString *lang, QString *trans) const;
00184
00207 void translateRaw(const char *ctxt, const char *singular, const char *plural,
00208 unsigned long n, QString *lang, QString *trans) const;
00209
00217 bool setEncoding(int mibEnum);
00218
00223 enum SignPosition {
00227 ParensAround = 0,
00231 BeforeQuantityMoney = 1,
00235 AfterQuantityMoney = 2,
00239 BeforeMoney = 3,
00243 AfterMoney = 4
00244 };
00245
00252 QString decimalSymbol() const;
00253
00261 QString thousandsSeparator() const;
00262
00269 QString currencySymbol() const;
00270
00278 QString monetaryDecimalSymbol() const;
00279
00287 QString monetaryThousandsSeparator() const;
00288
00295 QString positiveSign() const;
00296
00303 QString negativeSign() const;
00304
00311 int fracDigits() const;
00312
00319 bool positivePrefixCurrencySymbol() const;
00320
00327 bool negativePrefixCurrencySymbol() const;
00328
00336 SignPosition positiveMonetarySignPosition() const;
00337
00345 SignPosition negativeMonetarySignPosition() const;
00346
00361 QString formatMoney(double num,
00362 const QString & currency = QString(),
00363 int digits = -1) const;
00364
00380 QString formatNumber(double num, int precision = -1) const;
00381
00394 QString formatNumber(const QString &numStr, bool round=true, int precision=2) const;
00395
00406 QString formatLong(long num) const;
00407
00418 QString formatByteSize( double size ) const;
00419
00429 QString formatDuration( unsigned long mSec) const;
00430
00446 QString prettyFormatDuration( unsigned long mSec ) const;
00447
00457 bool nounDeclension() const;
00458
00462 enum DateFormat {
00463 ShortDate,
00464 LongDate,
00465 FancyShortDate,
00468 FancyLongDate
00471 };
00472
00482 QString formatDate(const QDate &date, DateFormat format = LongDate) const;
00483
00495 QString formatDateTime(const QDateTime &dateTime, DateFormat format = ShortDate,
00496 bool includeSecs = false) const;
00497
00501 enum DateTimeFormatOption {
00502 TimeZone = 0x01,
00503 Seconds = 0x02
00504 };
00505 Q_DECLARE_FLAGS(DateTimeFormatOptions, DateTimeFormatOption)
00506
00507
00517 QString formatDateTime(const KDateTime &dateTime, DateFormat format = ShortDate,
00518 DateTimeFormatOptions options = 0) const;
00519
00526 bool dateMonthNamePossessive() const;
00527
00540 QString formatTime(const QTime &pTime, bool includeSecs = false,
00541 bool isDuration = false) const;
00542
00548 bool use12Clock() const;
00549
00555 int weekStartDay() const;
00556
00563 int workingWeekStartDay() const;
00564
00571 int workingWeekEndDay() const;
00572
00579 int weekDayOfPray() const;
00580
00586 const KCalendarSystem * calendar() const;
00587
00594 QString calendarType() const;
00595
00603 void setCalendar(const QString & calendarType);
00604
00614 double readMoney(const QString &numStr, bool * ok = 0) const;
00615
00625 double readNumber(const QString &numStr, bool * ok = 0) const;
00626
00637 QDate readDate(const QString &str, bool* ok = 0) const;
00638
00643 QDate readDate( const QString &intstr, const QString &fmt, bool* ok = 0) const;
00644
00648 enum ReadDateFlags {
00649 NormalFormat = 1,
00650 ShortFormat = 2
00651 };
00652
00665 QDate readDate(const QString &str, ReadDateFlags flags, bool *ok = 0) const;
00666
00679 QTime readTime(const QString &str, bool* ok = 0) const;
00680
00684 enum ReadTimeFlags {
00685 WithSeconds = 0,
00686 WithoutSeconds = 1
00687 };
00701 QTime readTime(const QString &str, ReadTimeFlags flags, bool *ok = 0) const;
00702
00715 QString language() const;
00716
00728 QString country() const;
00729
00741 QStringList languageList() const;
00742
00751 const QByteArray encoding() const;
00752
00761 int encodingMib() const;
00770 QTextCodec * codecForEncoding() const;
00771
00780 int fileEncodingMib() const;
00781
00804 void setDateFormat(const QString & format);
00827 void setDateFormatShort(const QString & format);
00833 void setDateMonthNamePossessive(bool possessive);
00853 void setTimeFormat(const QString & format);
00854
00855
00861 void setWeekStartDay(int day);
00862
00869 void setWorkingWeekStartDay(int day);
00870
00877 void setWorkingWeekEndDay(int day);
00878
00885 void setWeekDayOfPray(int day);
00886
00893 QString dateFormat() const;
00900 QString dateFormatShort() const;
00907 QString timeFormat() const;
00908
00914 void setDecimalSymbol(const QString & symbol);
00920 void setThousandsSeparator(const QString & separator);
00927 void setPositiveSign(const QString & sign);
00933 void setNegativeSign(const QString & sign);
00939 void setPositiveMonetarySignPosition(SignPosition signpos);
00945 void setNegativeMonetarySignPosition(SignPosition signpos);
00953 void setPositivePrefixCurrencySymbol(bool prefix);
00961 void setNegativePrefixCurrencySymbol(bool prefix);
00967 void setFracDigits(int digits);
00973 void setMonetaryThousandsSeparator(const QString & separator);
00980 void setMonetaryDecimalSymbol(const QString & symbol);
00986 void setCurrencySymbol(const QString & symbol);
00987
00993 int pageSize() const;
00994
01000 void setPageSize(int paperFormat);
01001
01006 enum MeasureSystem {
01007 Metric,
01008 Imperial
01009 };
01010
01016 MeasureSystem measureSystem() const;
01017
01023 void setMeasureSystem(MeasureSystem value);
01024
01035 void insertCatalog(const QString& catalog);
01036
01042 void removeCatalog(const QString &catalog);
01043
01048 void setActiveCatalog(const QString &catalog);
01049
01055 QString translateQt(const char *context,
01056 const char *sourceText,
01057 const char *comment) const;
01058
01069 QStringList allLanguagesList() const;
01070
01086 QString languageCodeToName(const QString &language) const;
01087
01098 QStringList allCountriesList() const;
01099
01114 QString countryCodeToName(const QString &country) const;
01115
01126 static void splitLocale(const QString &locale,
01127 QString &language,
01128 QString &country,
01129 QString &modifier,
01130 QString &charset);
01131
01140 static void setMainCatalog(const char *catalog);
01141
01158 static QString langLookup(const QString &fname, const char *rtype = "html");
01159
01165 static QString defaultLanguage();
01166
01172 static QString defaultCountry();
01173
01179 bool useTranscript() const;
01180
01186 bool isApplicationTranslatedInto( const QString & language);
01187
01193 void copyCatalogsTo(KLocale *locale);
01194
01207 bool setCountry(const QString & country, KConfig *config);
01208
01221 bool setLanguage(const QString &language, KConfig *config);
01222
01232 bool setLanguage(const QStringList &languages);
01233
01256 QString localizedFilePath(const QString &filePath) const;
01257
01274 QString removeAcceleratorMarker(const QString &label) const;
01275
01276 private:
01277 KLocalePrivate * const d;
01278 };
01279
01280 Q_DECLARE_OPERATORS_FOR_FLAGS(KLocale::DateTimeFormatOptions)
01281
01282 #endif