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 "kdemacros.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
QString i18n(
const char *text);
00074
00082
QString i18n(
const char *comment,
const char *text);
00083
00090
QString i18n(
const char *singular,
const char *plural,
unsigned long n);
00091
00098 inline QString tr2i18n(
const char* message,
const char* =0) {
00099
return i18n(message);
00100 }
00101
00114 class KLocale
00115 {
00116
friend class KGlobal;
00117
public:
00134
KLocale(
const QString& catalog,
KConfig *config = 0 );
00135
00139
KLocale(
const KLocale & rhs );
00140
00144
KLocale&
operator= (
const KLocale & rhs );
00145
00149
~KLocale();
00150
00169
QString translate(
const char *index )
const;
00170
00196
QString translate(
const char *comment,
const char *fallback)
const;
00197
00208
QString translate(
const char *singular,
const char *plural,
00209
unsigned long n)
const;
00210
00218
bool setEncoding(
int mibEnum);
00219
00229
bool setLanguage(
const QString &
language);
00230
00240
bool setLanguage(
const QStringList &
languages);
00241
00251
bool setCountry(
const QString &
country);
00252
00257 enum SignPosition { ParensAround = 0, BeforeQuantityMoney = 1,
00258 AfterQuantityMoney = 2,
00259 BeforeMoney = 3, AfterMoney = 4 };
00260
00267
QString decimalSymbol() const;
00268
00276
QString thousandsSeparator() const;
00277
00284
QString currencySymbol() const;
00285
00293
QString monetaryDecimalSymbol() const;
00294
00302
QString monetaryThousandsSeparator() const;
00303
00310
QString positiveSign() const;
00311
00318
QString negativeSign() const;
00319
00326
int fracDigits() const;
00327
00334
bool positivePrefixCurrencySymbol() const;
00335
00342
bool negativePrefixCurrencySymbol() const;
00343
00351 SignPosition positiveMonetarySignPosition() const;
00352
00360 SignPosition negativeMonetarySignPosition() const;
00361
00376
QString formatMoney(
double num,
00377 const
QString & currency =
QString::null,
00378
int digits = -1) const;
00379
00392
QString formatNumber(
double num,
int precision = -1) const;
00393
00405
QString formatLong(
long num) const;
00406
00415
bool nounDeclension() const;
00416
00426
QString formatDate(const
QDate &pDate,
bool shortFormat = false) const;
00427
00435
bool dateMonthNamePossessive() const;
00436
00449
QString formatTime(const
QTime &pTime,
bool includeSecs,
bool isDuration ) const;
00450
00461
QString formatTime(const
QTime &pTime,
bool includeSecs = false) const;
00462
00468
bool use12Clock() const;
00469
00479
bool weekStartsMonday() const KDE_DEPRECATED;
00480
00487
int weekStartDay() const;
00488
00509
QString monthName(
int i,
bool shortName = false) const KDE_DEPRECATED;
00510
00534
QString monthNamePossessive(
int i,
bool shortName = false) const KDE_DEPRECATED;
00535
00546
QString weekDayName(
int i,
bool shortName = false) const KDE_DEPRECATED;
00547
00554 const
KCalendarSystem * calendar() const;
00555
00563
QString calendarType() const;
00564
00573
void setCalendar(const
QString & calendarType);
00574
00585
QString formatDateTime(const
QDateTime &pDateTime,
00586
bool shortFormat = true,
00587
bool includeSecs = false) const;
00588
00598
double readMoney(const
QString &numStr,
bool * ok = 0) const;
00599
00609
double readNumber(const
QString &numStr,
bool * ok = 0) const;
00610
00621
QDate readDate(const
QString &str,
bool* ok = 0) const;
00622
00627
QDate readDate( const
QString &intstr, const
QString &fmt,
bool* ok = 0) const;
00628
00629 enum ReadDateFlags {
00630 NormalFormat = 1,
00631 ShortFormat = 2
00632 };
00633
00647
QDate readDate(
const QString &str, ReadDateFlags flags,
bool *ok = 0)
const;
00648
00661
QTime readTime(
const QString &str,
bool* ok = 0)
const;
00662
00663
enum ReadTimeFlags {
00664 WithSeconds = 0,
00665 WithoutSeconds = 1
00666 };
00681
QTime readTime(
const QString &str, ReadTimeFlags flags,
bool *ok = 0)
const;
00682
00690
QString language() const;
00691
00698
QString country() const;
00699
00713
QStringList languagesTwoAlpha() const;
00714
00723
QStringList languageList() const;
00724
00733 const
char * encoding() const;
00734
00743
int encodingMib() const;
00752
QTextCodec * codecForEncoding() const;
00753
00762
int fileEncodingMib() const;
00763
00785
void setDateFormat(const
QString & format);
00807
void setDateFormatShort(const
QString & format);
00814
void setDateMonthNamePossessive(
bool possessive);
00833
void setTimeFormat(const
QString & format);
00834
00844
void setWeekStartsMonday(
bool start) KDE_DEPRECATED;
00845
00852
void setWeekStartDay(
int day);
00859
QString dateFormat() const;
00866
QString dateFormatShort() const;
00873
QString timeFormat() const;
00874
00880
void setDecimalSymbol(const
QString & symbol);
00886
void setThousandsSeparator(const
QString & separator);
00893
void setPositiveSign(const
QString & sign);
00899
void setNegativeSign(const
QString & sign);
00905
void setPositiveMonetarySignPosition(SignPosition signpos);
00911
void setNegativeMonetarySignPosition(SignPosition signpos);
00919
void setPositivePrefixCurrencySymbol(
bool prefix);
00927
void setNegativePrefixCurrencySymbol(
bool prefix);
00933
void setFracDigits(
int digits);
00939
void setMonetaryThousandsSeparator(const
QString & separator);
00946
void setMonetaryDecimalSymbol(const
QString & symbol);
00952
void setCurrencySymbol(const
QString & symbol);
00953
00959
int pageSize() const;
00960
00966
void setPageSize(
int paperFormat);
00967
00972 enum MeasureSystem { Metric, Imperial };
00973
00979 MeasureSystem
measureSystem() const;
00980
00986
void setMeasureSystem(MeasureSystem value);
00987
00998
void insertCatalogue(const
QString& catalog);
00999
01005
void removeCatalogue(const
QString &catalog);
01006
01011
void setActiveCatalogue(const
QString &catalog);
01012
01019
QString translateQt(const
char *context,
01020 const
char *sourceText,
01021 const
char *message) const;
01022
01028
QStringList allLanguagesTwoAlpha() const;
01029
01036
QString twoAlphaToLanguageName(const
QString &code) const;
01037
01043
QStringList allCountriesTwoAlpha() const;
01044
01051
QString twoAlphaToCountryName(const
QString &code) const;
01052
01062 static
void splitLocale(const
QString & str,
01063
QString & language,
01064
QString & country,
01065
QString & charset);
01066
01075 static
void setMainCatalogue(const
char *catalog);
01076
01083 static
QString langLookup(const
QString &fname, const
char *rtype = "html");
01084
01090 static
QString defaultLanguage();
01091
01097 static
QString defaultCountry();
01098
01099
01103 static
QString _initLanguage(
KConfigBase *config);
01104
01105 #ifdef KDE_NO_COMPAT
01106 private:
01107 #endif
01112
QString formatMoney(const
QString &numStr) const KDE_DEPRECATED;
01113
01118
QString formatNumber(const
QString &numStr) const KDE_DEPRECATED;
01119
01126
QString languages() const KDE_DEPRECATED;
01127
01132
bool setCharset(const
QString & charset) KDE_DEPRECATED;
01133
01138
QString charset() const KDE_DEPRECATED;
01139
01140 protected:
01145 static
void initInstance();
01146
01147 private:
01154
void initFormat(
KConfig *config);
01155
01162
void initMainCatalogues(const
QString & catalog);
01163
01172
void initLanguageList(
KConfig * config,
bool useEnv);
01173
01179
void initEncoding(
KConfig * config);
01180
01185
void initFileNameEncoding(
KConfig *config);
01186
01190 static
QCString encodeFileNameUTF8( const
QString & fileName );
01191
01195 static
QString decodeFileNameUTF8( const
QCString & localFileName );
01196
01201
void initCatalogue(
KCatalogue & catalog );
01202
01206
void doFormatInit() const;
01207
01211
void initFormat();
01212
01216
QString translate_priv(const
char *index,
01217 const
char *text,
01218 const
char ** original = 0,
01219
int* pluralType = 0) const;
01220
01224
bool useDefaultLanguage() const;
01225
01229
bool isLanguageInstalled(const
QString & language) const;
01230
01235
void updateCatalogues( );
01236
01240
void initPluralTypes( );
01246
int pluralType( const
QString & language );
01247
01254
int pluralType( const
KCatalogue& catalog );
01261
01262
01263
01268 static
QString catalogueFileName(const
QString & language,
01269 const
KCatalogue & catalog);
01270
01276
bool isApplicationTranslatedInto( const
QString & language);
01277
01278 private:
01279
01280
QString m_decimalSymbol;
01281
QString m_thousandsSeparator;
01282
QString m_currencySymbol;
01283
QString m_monetaryDecimalSymbol;
01284
QString m_monetaryThousandsSeparator;
01285
QString m_positiveSign;
01286
QString m_negativeSign;
01287
int m_fracDigits;
01288 SignPosition m_positiveMonetarySignPosition;
01289 SignPosition m_negativeMonetarySignPosition;
01290
01291
01292
QString m_timeFormat;
01293
QString m_dateFormat;
01294
QString m_dateFormatShort;
01295
01296
QString m_language;
01297
QString m_country;
01298
01299
bool m_weekStartsMonday;
01300
bool m_positivePrefixCurrencySymbol;
01301
bool m_negativePrefixCurrencySymbol;
01302
01303 KLocalePrivate *d;
01304 };
01305
01306 #endif