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
00041
#ifndef I18N_NOOP
00042
00048 #define I18N_NOOP(x) x
00049
#endif
00050
00051
#ifndef I18N_NOOP2
00052
00058 #define I18N_NOOP2(comment,x) x
00059
#endif
00060
00073 KDECORE_EXPORT
QString i18n(
const char *text);
00074
00082 KDECORE_EXPORT
QString i18n(
const char *comment,
const char *text);
00083
00095 KDECORE_EXPORT
QString i18n(
const char *singular,
const char *plural,
unsigned long n);
00096
00103 inline QString tr2i18n(
const char* message,
const char* =0) {
00104
return i18n(message);
00105 }
00106
00119 class KDECORE_EXPORT KLocale
00120 {
00121
friend class KGlobal;
00122
public:
00139 KLocale(
const QString& catalog,
KConfig *config = 0 );
00140
00144 KLocale(
const KLocale & rhs );
00145
00149 KLocale& operator= (
const KLocale & rhs );
00150
00154 ~KLocale();
00155
00174
QString translate(
const char *index )
const;
00175
00201
QString translate(
const char *comment,
const char *fallback)
const;
00202
00213
QString translate(
const char *singular,
const char *plural,
00214
unsigned long n)
const;
00215
00223
bool setEncoding(
int mibEnum);
00224
00234
bool setLanguage(
const QString & language);
00235
00245
bool setLanguage(
const QStringList & languages);
00246
00256
bool setCountry(
const QString & country);
00257
00262 enum SignPosition { ParensAround = 0, BeforeQuantityMoney = 1,
00263 AfterQuantityMoney = 2,
00264 BeforeMoney = 3, AfterMoney = 4 };
00265
00272
QString decimalSymbol() const;
00273
00281
QString thousandsSeparator() const;
00282
00289
QString currencySymbol() const;
00290
00298
QString monetaryDecimalSymbol() const;
00299
00307
QString monetaryThousandsSeparator() const;
00308
00315
QString positiveSign() const;
00316
00323
QString negativeSign() const;
00324
00331
int fracDigits() const;
00332
00339
bool positivePrefixCurrencySymbol() const;
00340
00347
bool negativePrefixCurrencySymbol() const;
00348
00356 SignPosition positiveMonetarySignPosition() const;
00357
00365 SignPosition negativeMonetarySignPosition() const;
00366
00381
QString formatMoney(
double num,
00382 const
QString & currency =
QString::null,
00383
int digits = -1) const;
00384
00397
QString formatNumber(
double num,
int precision = -1) const;
00398
00410
QString formatLong(
long num) const;
00411
00420
bool nounDeclension() const;
00421
00431
QString formatDate(const
QDate &pDate,
bool shortFormat = false) const;
00432
00440
bool dateMonthNamePossessive() const;
00441
00454
QString formatTime(const
QTime &pTime,
bool includeSecs,
bool isDuration ) const;
00455
00466
QString formatTime(const
QTime &pTime,
bool includeSecs = false) const;
00467
00473
bool use12Clock() const;
00474
00484
bool weekStartsMonday() const KDE_DEPRECATED;
00485
00492
int weekStartDay() const;
00493
00514
QString monthName(
int i,
bool shortName = false) const KDE_DEPRECATED;
00515
00539
QString monthNamePossessive(
int i,
bool shortName = false) const KDE_DEPRECATED;
00540
00551
QString weekDayName(
int i,
bool shortName = false) const KDE_DEPRECATED;
00552
00559 const
KCalendarSystem * calendar() const;
00560
00568
QString calendarType() const;
00569
00578
void setCalendar(const
QString & calendarType);
00579
00590
QString formatDateTime(const
QDateTime &pDateTime,
00591
bool shortFormat = true,
00592
bool includeSecs = false) const;
00593
00603
double readMoney(const
QString &numStr,
bool * ok = 0) const;
00604
00614
double readNumber(const
QString &numStr,
bool * ok = 0) const;
00615
00626
QDate readDate(const
QString &str,
bool* ok = 0) const;
00627
00632
QDate readDate( const
QString &intstr, const
QString &fmt,
bool* ok = 0) const;
00633
00634 enum ReadDateFlags {
00635 NormalFormat = 1,
00636 ShortFormat = 2
00637 };
00638
00652
QDate readDate(
const QString &str, ReadDateFlags flags,
bool *ok = 0)
const;
00653
00666
QTime readTime(
const QString &str,
bool* ok = 0)
const;
00667
00668
enum ReadTimeFlags {
00669 WithSeconds = 0,
00670 WithoutSeconds = 1
00671 };
00686
QTime readTime(
const QString &str, ReadTimeFlags flags,
bool *ok = 0)
const;
00687
00695
QString language() const;
00696
00703
QString country() const;
00704
00718
QStringList languagesTwoAlpha() const;
00719
00728
QStringList languageList() const;
00729
00738 const
char * encoding() const;
00739
00748
int encodingMib() const;
00757
QTextCodec * codecForEncoding() const;
00758
00767
int fileEncodingMib() const;
00768
00790
void setDateFormat(const
QString & format);
00812
void setDateFormatShort(const
QString & format);
00819
void setDateMonthNamePossessive(
bool possessive);
00838
void setTimeFormat(const
QString & format);
00839
00849
void setWeekStartsMonday(
bool start) KDE_DEPRECATED;
00850
00857
void setWeekStartDay(
int day);
00864
QString dateFormat() const;
00871
QString dateFormatShort() const;
00878
QString timeFormat() const;
00879
00885
void setDecimalSymbol(const
QString & symbol);
00891
void setThousandsSeparator(const
QString & separator);
00898
void setPositiveSign(const
QString & sign);
00904
void setNegativeSign(const
QString & sign);
00910
void setPositiveMonetarySignPosition(SignPosition signpos);
00916
void setNegativeMonetarySignPosition(SignPosition signpos);
00924
void setPositivePrefixCurrencySymbol(
bool prefix);
00932
void setNegativePrefixCurrencySymbol(
bool prefix);
00938
void setFracDigits(
int digits);
00944
void setMonetaryThousandsSeparator(const
QString & separator);
00951
void setMonetaryDecimalSymbol(const
QString & symbol);
00957
void setCurrencySymbol(const
QString & symbol);
00958
00964
int pageSize() const;
00965
00971
void setPageSize(
int paperFormat);
00972
00977 enum MeasureSystem { Metric, Imperial };
00978
00984 MeasureSystem measureSystem() const;
00985
00991
void setMeasureSystem(MeasureSystem value);
00992
01003
void insertCatalogue(const
QString& catalog);
01004
01010
void removeCatalogue(const
QString &catalog);
01011
01016
void setActiveCatalogue(const
QString &catalog);
01017
01024
QString translateQt(const
char *context,
01025 const
char *sourceText,
01026 const
char *message) const;
01027
01033
QStringList allLanguagesTwoAlpha() const;
01034
01041
QString twoAlphaToLanguageName(const
QString &code) const;
01042
01048
QStringList allCountriesTwoAlpha() const;
01049
01056
QString twoAlphaToCountryName(const
QString &code) const;
01057
01067 static
void splitLocale(const
QString & str,
01068
QString & language,
01069
QString & country,
01070
QString & charset);
01071
01080 static
void setMainCatalogue(const
char *catalog);
01081
01088 static
QString langLookup(const
QString &fname, const
char *rtype = "html");
01089
01095 static
QString defaultLanguage();
01096
01102 static
QString defaultCountry();
01103
01104
01108 static
QString _initLanguage(
KConfigBase *config);
01109
01110 #ifdef KDE_NO_COMPAT
01111 private:
01112 #endif
01117
QString formatMoney(const
QString &numStr) const KDE_DEPRECATED;
01118
01123
QString formatNumber(const
QString &numStr) const KDE_DEPRECATED;
01124
01131
QString languages() const KDE_DEPRECATED;
01132
01137
bool setCharset(const
QString & charset) KDE_DEPRECATED;
01138
01143
QString charset() const KDE_DEPRECATED;
01144
01145 protected:
01150 static
void initInstance();
01151
01152 private:
01159
void initFormat(
KConfig *config);
01160
01167
void initMainCatalogues(const
QString & catalog);
01168
01177
void initLanguageList(
KConfig * config,
bool useEnv);
01178
01184
void initEncoding(
KConfig * config);
01185
01190
void initFileNameEncoding(
KConfig *config);
01191
01195 static
QCString encodeFileNameUTF8( const
QString & fileName );
01196
01200 static
QString decodeFileNameUTF8( const
QCString & localFileName );
01201
01206
void initCatalogue(
KCatalogue & catalog );
01207
01211
void doFormatInit() const;
01212
01216
void initFormat();
01217
01221
QString translate_priv(const
char *index,
01222 const
char *text,
01223 const
char ** original = 0,
01224
int* pluralType = 0) const;
01225
01229
bool useDefaultLanguage() const;
01230
01234
bool isLanguageInstalled(const
QString & language) const;
01235
01240
void updateCatalogues( );
01241
01245
void initPluralTypes( );
01251
int pluralType( const
QString & language );
01252
01259
int pluralType( const
KCatalogue& catalog );
01266
01267
01268
01273 static
QString catalogueFileName(const
QString & language,
01274 const
KCatalogue & catalog);
01275
01281
bool isApplicationTranslatedInto( const
QString & language);
01282
01283 private:
01284
01285
QString m_decimalSymbol;
01286
QString m_thousandsSeparator;
01287
QString m_currencySymbol;
01288
QString m_monetaryDecimalSymbol;
01289
QString m_monetaryThousandsSeparator;
01290
QString m_positiveSign;
01291
QString m_negativeSign;
01292
int m_fracDigits;
01293 SignPosition m_positiveMonetarySignPosition;
01294 SignPosition m_negativeMonetarySignPosition;
01295
01296
01297
QString m_timeFormat;
01298
QString m_dateFormat;
01299
QString m_dateFormatShort;
01300
01301
QString m_language;
01302
QString m_country;
01303
01304
bool m_weekStartsMonday;
01305
bool m_positivePrefixCurrencySymbol;
01306
bool m_negativePrefixCurrencySymbol;
01307
01308 KLocalePrivate *d;
01309 };
01310
01311 #endif