• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.11.5 API Reference
  • KDE Home
  • Contact Us
 

KDECore

  • kdecore
  • localization
klocale.h
Go to the documentation of this file.
1 /* This file is part of the KDE libraries
2  Copyright (C) 1997 Stephan Kulow <coolo@kde.org>
3  Copyright (C) 1999-2003 Hans Petter Bieker <bieker@kde.org>
4  Copyright (c) 2002 Lukas Tinkl <lukas@kde.org>
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Library General Public
8  License as published by the Free Software Foundation; either
9  version 2 of the License, or (at your option) any later version.
10 
11  This library is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  Library General Public License for more details.
15 
16  You should have received a copy of the GNU Library General Public License
17  along with this library; see the file COPYING.LIB. If not, write to
18  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  Boston, MA 02110-1301, USA.
20 */
21 #ifndef KLOCALE_H
22 #define KLOCALE_H
23 
24 #include <kdecore_export.h>
25 #include <klocalizedstring.h>
26 #include <ksharedconfig.h>
27 
28 #include <QtCore/QString>
29 #include <QtCore/QList>
30 
31 class QStringList;
32 class QTextCodec;
33 class QDate;
34 class QTime;
35 class QDateTime;
36 
37 class KDateTime;
38 class KCalendarSystem;
39 class KCurrencyCode;
40 class KDayPeriod;
41 
42 class KLocalePrivate;
43 
69 class KDECORE_EXPORT KLocale
70 {
71 public:
95  explicit KLocale(const QString& catalog, KSharedConfig::Ptr config = KSharedConfig::Ptr());
96 
114  KLocale(const QString& catalog, const QString &language, const QString &country = QString(),
115  KConfig *config = 0);
116 
120  KLocale(const KLocale & rhs);
121 
125  KLocale& operator= (const KLocale & rhs);
126 
130  virtual ~KLocale();
131 
153  void translateRawFrom(const char* catname, const char* msg, QString *lang, QString *trans) const;
154 
160  void translateRaw(const char* msg, QString *lang, QString *trans) const;
161 
185  void translateRawFrom(const char *catname, const char *ctxt, const char *msg, QString *lang, QString *trans) const;
186 
192  void translateRaw(const char *ctxt, const char *msg, QString *lang, QString *trans) const;
193 
219  void translateRawFrom(const char *catname, const char *singular, const char *plural, unsigned long n,
220  QString *lang, QString *trans) const;
221 
227  void translateRaw(const char *singular, const char *plural, unsigned long n, QString *lang,
228  QString *trans) const;
229 
257  void translateRawFrom(const char *catname, const char *ctxt, const char *singular, const char *plural,
258  unsigned long n, QString *lang, QString *trans) const;
259 
265  void translateRaw(const char *ctxt, const char *singular, const char *plural, unsigned long n,
266  QString *lang, QString *trans) const;
267 
275  bool setEncoding(int mibEnum);
276 
281  enum SignPosition {
285  ParensAround = 0,
289  BeforeQuantityMoney = 1,
293  AfterQuantityMoney = 2,
297  BeforeMoney = 3,
301  AfterMoney = 4
302  };
303 
309  enum DigitSet {
310  ArabicDigits,
312  ArabicIndicDigits,
313  EasternArabicIndicDigits,
314  DevenagariDigits,
315  BengaliDigits,
316  GujaratiDigits,
317  GurmukhiDigits,
318  KannadaDigits,
319  KhmerDigits,
320  MalayalamDigits,
321  OriyaDigits,
322  TamilDigits,
323  TeluguDigits,
324  ThaiDigits
325  // The following Decimal Digit Sets are defined in Unicode but the associated
326  // languages are not yet translated in KDE, so are not yet enabled.
327  // The script names are taken from the Unicode standard, the associated
328  // languages from Wikipedia.
329  // BalineseDigits, /**< ᭐᭑᭒᭓᭔᭕᭖᭗᭘᭙ (Balinese) */
330  // ChamDigits, /**< ꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙ (Cham) */
331  // JavaneseDigits, /**< ꧐꧑꧒꧓꧔꧕꧖꧗꧘꧙ (Javanese) */
332  // KayahLiDigits, /**< ꤀꤁꤂꤃꤄꤅꤆꤇꤈꤉ (Kayah) */
333  // LaoDigits, /**< ໐໑໒໓໔໕໖໗໘໙ (Lao) */
334  // LepchaDigits, /**< ᱀᱁᱂᱃᱄᱅᱆᱇᱈᱉ (Lepcha) */
335  // LimbuDigits, /**< ᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏ (Limbu) */
336  // MeeteiMayekDigits, /**< ꯰꯱꯲꯳꯴꯵꯶꯷꯸꯹ (Meitei) */
337  // MongolianDigits, /**< ᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙ (Mongolian) */
338  // MyanmarDigits, /**< ၀၁၂၃၄၅၆၇၈၉ (Myanmar/Burmese ) */
339  // MyanmarShanDigits, /**< ႐႑႒႓႔႕႖႗႘႙ (Shan) */
340  // NewTaiLueDigits, /**< ᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙ (Tai Lü) */
341  // NKoDigits, /**< ߀߁߂߃߄߅߆߇߈߉ (Mande and N'Ko) */
342  // OlChikiDigits, /**< ᱐᱑᱒᱓᱔᱕᱖᱗᱘᱙ (Santali) */
343  // OsmanyaDigits, /**< ҠҡҢңҤҥҦҧҨҩ (Somali) */
344  // SaurashtraDigits, /**< ꣐꣑꣒꣓꣔꣕꣖꣗꣘꣙ (Saurashtra) */
345  // SundaneseDigits, /**< ᮰᮱᮲᮳᮴᮵᮶᮷᮸᮹ (Sundanese) */
346  // TaiThamDigits, /**< ᪐᪑᪒᪓᪔᪕᪖᪗᪘᪙ (Tai Lü) */
347  // TibetanDigits, /**< ༠༡༢༣༤༥༦༧༨༩ (Tibetan) */
348  // VaiDigits, /**< ꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩ (Vai) */
349  };
350 
363  QString digitSetToName(DigitSet digitSet, bool withDigits = false) const;
364 
374  QList<DigitSet> allDigitSetsList() const;
375 
382  QString decimalSymbol() const;
383 
391  QString thousandsSeparator() const;
392 
402  DigitSet digitSet() const;
403 
411  QString currencyCode() const;
412 
420  KCurrencyCode *currency() const;
421 
428  QString currencySymbol() const;
429 
437  QString monetaryDecimalSymbol() const;
438 
446  QString monetaryThousandsSeparator() const;
447 
454  QString positiveSign() const;
455 
462  QString negativeSign() const;
463 
471  KDE_DEPRECATED int fracDigits() const;
472 
480  int decimalPlaces() const;
481 
489  int monetaryDecimalPlaces() const;
490 
497  bool positivePrefixCurrencySymbol() const;
498 
505  bool negativePrefixCurrencySymbol() const;
506 
514  SignPosition positiveMonetarySignPosition() const;
515 
523  SignPosition negativeMonetarySignPosition() const;
524 
534  DigitSet monetaryDigitSet() const;
535 
551  QString formatMoney(double num, const QString &currency = QString(), int precision = -1) const;
552 
570  QString formatNumber(double num, int precision = -1) const;
571 
586  QString formatNumber(const QString &numStr, bool round = true, int precision = -1) const;
587 
598  QString formatLong(long num) const;
599 
621  enum BinarySizeUnits {
623  DefaultBinaryUnits = -1,
624 
625  // The first real unit must be 0 for the current implementation!
626  UnitByte,
627  UnitKiloByte,
628  UnitMegaByte,
629  UnitGigaByte,
630  UnitTeraByte,
631  UnitPetaByte,
632  UnitExaByte,
633  UnitZettaByte,
634  UnitYottaByte,
635  UnitLastUnit = UnitYottaByte
636  };
637 
656  enum BinaryUnitDialect {
657  DefaultBinaryDialect = -1,
658  IECBinaryDialect,
659  JEDECBinaryDialect,
660  MetricBinaryDialect,
661  LastBinaryDialect = MetricBinaryDialect
662  };
663 
677  QString formatByteSize(double size) const;
678 
704  QString formatByteSize(double size, int precision,
705  BinaryUnitDialect dialect = KLocale::DefaultBinaryDialect,
706  BinarySizeUnits specificUnit = KLocale::DefaultBinaryUnits) const;
707 
720  BinaryUnitDialect binaryUnitDialect() const;
721 
730  void setBinaryUnitDialect(BinaryUnitDialect newDialect);
731 
741  QString formatDuration(unsigned long mSec) const;
742 
758  QString prettyFormatDuration(unsigned long mSec) const;
759 
769  KDE_DEPRECATED bool nounDeclension() const;
770 
771  //KDE5 move to KDateTime namespace
780  enum CalendarSystem {
781  QDateCalendar = 1,
782  //BahaiCalendar = 2, /**< Baha'i Calendar */
783  //BuddhistLunarCalendar = 3, /**< Buddhist Lunar Calendar*/
784  //ChineseCalendar = 4, /**< Chinese Calendar */
785  CopticCalendar = 5,
786  EthiopianCalendar = 6,
787  //EthiopianAmeteAlemCalendar = 7, /**< Ethiopian Amete Alem version, aka Ethiopic Amete Alem */
788  GregorianCalendar = 8,
789  HebrewCalendar = 9,
790  //HinduCalendar = 10, /**< Hindu Lunar Calendar */
791  //IslamicLunarCalendar = 11, /**< Islamic Lunar Calendar */
792  IslamicCivilCalendar = 12,
793  //IslamicUmAlQuraCalendar = 13, /**< Islamic Lunar Calendar, Um Al Qura varient used in Saudi Arabia */
794  IndianNationalCalendar = 14,
795  //Iso8601Calendar = 15, /**< ISO 8601 Standard Calendar */
796  JalaliCalendar = 16,
797  //JalaliBirashkCalendar = 17, /**< Jalali Calendar, Birashk Algorythm variant */
798  //Jalali33YearCalendar = 18, /**< Jalali Calendar, 33 Year cycle variant */
799  JapaneseCalendar= 19,
800  //JucheCalendar = 20, /**< Juche Calendar, used in North Korea */
801  JulianCalendar = 21,
802  MinguoCalendar= 22,
803  ThaiCalendar = 23
804  };
805 
806  //KDE5 move to KDateTime namespace
815  enum WeekNumberSystem {
816  DefaultWeekNumber = -1,
817  IsoWeekNumber = 0,
818  FirstFullWeek = 1,
819  FirstPartialWeek = 2,
820  SimpleWeek = 3
821  };
822 
823  //KDE5 move to KDateTime namespace
829  enum DateTimeFormatStandard {
830  KdeFormat,
831  PosixFormat,
832  UnicodeFormat
833  };
834 
835  //KDE5 move to KDateTime namespace
841  enum DateTimeParseMode {
842  LiberalParsing
845  //ModerateParsing, /**< Parse Date/Time with modeate tolerance.
846  // The date components in the format must all
847  // occur in the input and in the same order,
848  // but the spacing and the componants themselves
849  // may vary from the strict format. */
850  //StrictParsing /**< Parse Date/Time strictly to the format. */
851  };
852 
853  //KDE5 move to KDateTime namespace
865  enum DateTimeComponent {
866  Year = 0x1,
867  YearName = 0x2,
868  Month = 0x4,
869  MonthName = 0x8,
870  Day = 0x10,
871  DayName = 0x20,
872  JulianDay = 0x40,
873  EraName = 0x80,
874  EraYear = 0x100,
875  YearInEra = 0x200,
876  DayOfYear = 0x400,
877  DayOfYearName = 0x800,
878  DayOfWeek = 0x1000,
879  DayOfWeekName = 0x2000,
880  Week = 0x4000,
881  WeekYear = 0x8000,
882  MonthsInYear = 0x10000,
883  WeeksInYear = 0x20000,
884  DaysInYear = 0x40000,
885  DaysInMonth = 0x80000,
886  DaysInWeek = 0x100000,
887  Hour = 0x200000,
888  Minute = 0x400000,
889  Second = 0x800000,
890  Millisecond = 0x1000000,
891  DayPeriod = 0x2000000,
892  DayPeriodHour = 0x4000000,
893  Timezone = 0x8000000,
894  TimezoneName = 0x10000000,
895  UnixTime = 0x20000000
896  };
897  Q_DECLARE_FLAGS(DateTimeComponents, DateTimeComponent)
898 
899  //KDE5 move to KDateTime namespace
908  enum DateTimeComponentFormat {
909  DefaultComponentFormat = -1,
910  ShortNumber = 0,
911  LongNumber,
912  //OrdinalNumber /**< Ordinal number format, e.g. "2nd" for the 2nd */
913  NarrowName = 3,
914  ShortName,
915  LongName
916  };
917 
918  //KDE5 move to KDateTime namespace
922  enum DateFormat {
923  ShortDate,
924  LongDate,
925  FancyShortDate,
928  FancyLongDate,
931  IsoDate,
932  IsoWeekDate,
933  IsoOrdinalDate
934  };
935 
936  //KDE5 move to KDateTime namespace
946  QString formatDate(const QDate &date, DateFormat format = LongDate) const;
947 
948  //KDE5 move to KDateTime namespace
960  QString formatDateTime(const QDateTime &dateTime, DateFormat format = ShortDate,
961  bool includeSecs = false) const;
962 
963  //KDE5 move to KDateTime namespace
967  enum DateTimeFormatOption {
968  TimeZone = 0x01,
969  Seconds = 0x02
970  };
971  Q_DECLARE_FLAGS(DateTimeFormatOptions, DateTimeFormatOption)
972 
973  //KDE5 move to KDateTime namespace
984  QString formatDateTime(const KDateTime &dateTime, DateFormat format = ShortDate,
985  DateTimeFormatOptions options = 0) const;
986 
993  bool dateMonthNamePossessive() const;
994 
1009  QString formatTime(const QTime &pTime, bool includeSecs = false, bool isDuration = false) const;
1010 
1011  //KDE5 move to KDateTime namespace
1017  enum TimeFormatOption {
1018  TimeDefault = 0x0,
1019 
1020  TimeWithoutSeconds = 0x1,
1021  TimeWithoutAmPm = 0x2,
1022 
1023 
1024 
1025  TimeDuration = 0x6,
1026 
1027 
1028 
1029 
1030  TimeFoldHours = 0xE
1031 
1032 
1033 
1034 
1035  };
1036  Q_DECLARE_FLAGS(TimeFormatOptions, TimeFormatOption)
1037 
1038  //KDE5 move to KDateTime namespace
1049  QString formatLocaleTime(const QTime &pTime,
1050  TimeFormatOptions options = KLocale::TimeDefault) const;
1051 
1061  DigitSet dateTimeDigitSet() const;
1062 
1068  bool use12Clock() const;
1069 
1079  QString dayPeriodText(const QTime &time, DateTimeComponentFormat format = DefaultComponentFormat) const;
1080 
1086  int weekStartDay() const;
1087 
1094  int workingWeekStartDay() const;
1095 
1102  int workingWeekEndDay() const;
1103 
1110  int weekDayOfPray() const;
1111 
1117  const KCalendarSystem * calendar() const;
1118 
1119  //KDE5 remove
1129  KDE_DEPRECATED QString calendarType() const;
1130 
1140  KLocale::CalendarSystem calendarSystem() const;
1141 
1142  //KDE5 remove
1152  KDE_DEPRECATED void setCalendar(const QString & calendarType);
1153 
1163  void setCalendarSystem(KLocale::CalendarSystem calendarSystem);
1164 
1174  void setWeekNumberSystem(KLocale::WeekNumberSystem weekNumberSystem);
1175 
1176  //KDE5 remove in favour of const version
1186  KLocale::WeekNumberSystem weekNumberSystem();
1187 
1197  KLocale::WeekNumberSystem weekNumberSystem() const;
1198 
1208  double readMoney(const QString &numStr, bool * ok = 0) const;
1209 
1219  double readNumber(const QString &numStr, bool * ok = 0) const;
1220 
1221  //KDE5 move to KDateTime namespace
1235  QDate readDate(const QString &str, bool* ok = 0) const;
1236 
1237  //KDE5 move to KDateTime namespace
1243  QDate readDate(const QString &intstr, const QString &fmt, bool* ok = 0) const;
1244 
1245  //KDE5 move to KDateTime namespace
1249  enum ReadDateFlags {
1250  NormalFormat = 1,
1252  ShortFormat = 2,
1254  IsoFormat = 4,
1256  IsoWeekFormat = 8,
1258  IsoOrdinalFormat = 16
1260  };
1261 
1262  //KDE5 move to KDateTime namespace
1276  QDate readDate(const QString &str, ReadDateFlags flags, bool *ok = 0) const;
1277 
1290  QTime readTime(const QString &str, bool* ok = 0) const;
1291 
1297  enum ReadTimeFlags {
1298  WithSeconds = 0,
1299  WithoutSeconds = 1
1300  }; // (maybe use this enum as a bitfield, if adding independent features?)
1301 
1317  QTime readTime(const QString &str, ReadTimeFlags flags, bool *ok = 0) const;
1318 
1325  enum TimeProcessingOption {
1326  ProcessStrict = 0x1,
1327 
1328 
1329  ProcessNonStrict = 0x2
1330 
1331 
1332  };
1333  Q_DECLARE_FLAGS(TimeProcessingOptions, TimeProcessingOption)
1334 
1335 
1353  QTime readLocaleTime(const QString &str, bool *ok = 0,
1354  TimeFormatOptions options = KLocale::TimeDefault,
1355  TimeProcessingOptions processing = ProcessNonStrict) const;
1356 
1369  QString language() const;
1370 
1389  QString country() const;
1390 
1409  QString countryDivisionCode() const;
1410 
1422  QStringList languageList() const;
1423 
1437  QStringList currencyCodeList() const;
1438 
1447  const QByteArray encoding() const;
1448 
1457  int encodingMib() const;
1458 
1467  QTextCodec * codecForEncoding() const;
1468 
1477  int fileEncodingMib() const;
1478 
1501  void setDateFormat(const QString & format);
1502 
1525  void setDateFormatShort(const QString & format);
1526 
1532  void setDateMonthNamePossessive(bool possessive);
1533 
1553  void setTimeFormat(const QString & format);
1554 
1563  void setDateTimeDigitSet(DigitSet digitSet);
1564 
1570  void setWeekStartDay(int day);
1571 
1578  void setWorkingWeekStartDay(int day);
1579 
1586  void setWorkingWeekEndDay(int day);
1587 
1594  void setWeekDayOfPray(int day);
1595 
1602  QString dateFormat() const;
1603 
1610  QString dateFormatShort() const;
1611 
1618  QString timeFormat() const;
1619 
1625  void setDecimalSymbol(const QString & symbol);
1626 
1632  void setThousandsSeparator(const QString & separator);
1633 
1640  void setPositiveSign(const QString & sign);
1641 
1647  void setNegativeSign(const QString & sign);
1648 
1657  void setDigitSet(DigitSet digitSet);
1658 
1664  void setPositiveMonetarySignPosition(SignPosition signpos);
1665 
1671  void setNegativeMonetarySignPosition(SignPosition signpos);
1672 
1680  void setPositivePrefixCurrencySymbol(bool prefix);
1681 
1689  void setNegativePrefixCurrencySymbol(bool prefix);
1690 
1698  KDE_DEPRECATED void setFracDigits(int digits);
1699 
1707  void setDecimalPlaces(int digits);
1708 
1716  void setMonetaryDecimalPlaces(int digits);
1717 
1723  void setMonetaryThousandsSeparator(const QString & separator);
1724 
1731  void setMonetaryDecimalSymbol(const QString & symbol);
1732 
1740  void setCurrencyCode(const QString &newCurrencyCode);
1741 
1750  void setCurrencySymbol(const QString & symbol);
1751 
1760  void setMonetaryDigitSet(DigitSet digitSet);
1761 
1767  int pageSize() const;
1768 
1774  void setPageSize(int paperFormat);
1775 
1780  enum MeasureSystem {
1781  Metric,
1782  Imperial
1783  };
1784 
1790  MeasureSystem measureSystem() const;
1791 
1797  void setMeasureSystem(MeasureSystem value);
1798 
1809  void insertCatalog(const QString& catalog);
1810 
1816  void removeCatalog(const QString &catalog);
1817 
1822  void setActiveCatalog(const QString &catalog);
1823 
1829  QString translateQt(const char *context, const char *sourceText, const char *comment) const;
1830 
1842  QStringList allLanguagesList() const;
1843 
1856  QStringList installedLanguages() const;
1857 
1874  QString languageCodeToName(const QString &language) const;
1875 
1886  QStringList allCountriesList() const;
1887 
1902  QString countryCodeToName(const QString &country) const;
1903 
1914  static void splitLocale(const QString &locale, QString &language, QString &country,
1915  QString &modifier, QString &charset);
1916 
1925  static void setMainCatalog(const char *catalog);
1926 
1943  static QString langLookup(const QString &fname, const char *rtype = "html");
1944 
1950  static QString defaultLanguage();
1951 
1962  static QString defaultCountry();
1963 
1971  static QString defaultCurrencyCode();
1972 
1978  bool useTranscript() const;
1979 
1985  bool isApplicationTranslatedInto(const QString & language);
1986 
1992  void copyCatalogsTo(KLocale *locale);
1993 
2012  bool setCountry(const QString & country, KConfig *config);
2013 
2029  bool setCountryDivisionCode(const QString & countryDivision);
2030 
2047  bool setLanguage(const QString &language, KConfig *config);
2048 
2058  bool setLanguage(const QStringList &languages);
2059 
2082  QString localizedFilePath(const QString &filePath) const;
2083 
2100  QString removeAcceleratorMarker(const QString &label) const;
2101 
2120  QString convertDigits(const QString &str, DigitSet digitSet,
2121  bool ignoreContext = false) const;
2122 
2129  void reparseConfiguration();
2130 
2131 private:
2132  friend class KLocalePrivate;
2133  friend class KLocaleTest;
2134  friend class KDateTimeFormatter;
2135  KLocalePrivate * const d;
2136 };
2137 
2138 Q_DECLARE_OPERATORS_FOR_FLAGS(KLocale::DateTimeFormatOptions)
2139 Q_DECLARE_OPERATORS_FOR_FLAGS(KLocale::DateTimeComponents)
2140 Q_DECLARE_OPERATORS_FOR_FLAGS(KLocale::TimeFormatOptions)
2141 Q_DECLARE_OPERATORS_FOR_FLAGS(KLocale::TimeProcessingOptions)
2142 
2143 #endif
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Sep 23 2014 09:53:08 by doxygen 1.8.3.1 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDECore

Skip menu "KDECore"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs-4.11.5 API Reference

Skip menu "kdelibs-4.11.5 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal