KDECore
klocale.cpp
Go to the documentation of this file.
00001 /* This file is part of the KDE libraries 00002 Copyright (c) 1997,2001 Stephan Kulow <coolo@kde.org> 00003 Copyright (c) 1999 Preston Brown <pbrown@kde.org> 00004 Copyright (c) 1999-2002 Hans Petter Bieker <bieker@kde.org> 00005 Copyright (c) 2002 Lukas Tinkl <lukas@kde.org> 00006 Copyright (C) 2007 Bernhard Loos <nhuh.put@web.de> 00007 Copyright (C) 2009, 2010 John Layt <john@layt.net> 00008 00009 This library is free software; you can redistribute it and/or 00010 modify it under the terms of the GNU Library General Public 00011 License as published by the Free Software Foundation; either 00012 version 2 of the License, or (at your option) any later version. 00013 00014 This library is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00017 Library General Public License for more details. 00018 00019 You should have received a copy of the GNU Library General Public License 00020 along with this library; see the file COPYING.LIB. If not, write to 00021 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00022 Boston, MA 02110-1301, USA. 00023 */ 00024 00025 #include "klocale.h" 00026 #if defined Q_WS_WIN 00027 #include "klocale_win_p.h" 00028 #elif defined Q_OS_MAC 00029 #include "klocale_mac_p.h" 00030 #else 00031 #include "klocale_unix_p.h" 00032 #endif 00033 00034 #include <QtCore/QDateTime> 00035 #include <QtCore/QTextCodec> 00036 00037 #include "kcatalog_p.h" 00038 #include "kglobal.h" 00039 #include "kconfig.h" 00040 #include "kdebug.h" 00041 #include "kdatetime.h" 00042 #include "kcalendarsystem.h" 00043 #include "kdayperiod_p.h" 00044 #include "kcurrencycode.h" 00045 #include "kcatalogname_p.h" 00046 #include "common_helpers_p.h" 00047 00048 KLocale::KLocale(const QString &catalog, KSharedConfig::Ptr config) 00049 #if defined Q_WS_WIN 00050 : d(new KLocaleWindowsPrivate(this, catalog, config)) 00051 #elif defined Q_OS_MAC 00052 : d(new KLocaleMacPrivate(this, catalog, config)) 00053 #else 00054 : d(new KLocaleUnixPrivate(this, catalog, config)) 00055 #endif 00056 { 00057 } 00058 00059 KLocale::KLocale(const QString& catalog, const QString &language, const QString &country, KConfig *config) 00060 #if defined Q_WS_WIN 00061 : d(new KLocaleWindowsPrivate(this, catalog, language, country, config)) 00062 #elif defined Q_OS_MAC 00063 : d(new KLocaleMacPrivate(this, catalog, language, country, config)) 00064 #else 00065 : d(new KLocaleUnixPrivate(this, catalog, language, country, config)) 00066 #endif 00067 { 00068 } 00069 00070 KLocale::~KLocale() 00071 { 00072 delete d; 00073 } 00074 00075 bool KLocale::setCountry(const QString &country, KConfig *config) 00076 { 00077 return d->setCountry(country, config); 00078 } 00079 00080 bool KLocale::setCountryDivisionCode(const QString &countryDivisionCode) 00081 { 00082 return d->setCountryDivisionCode(countryDivisionCode); 00083 } 00084 00085 bool KLocale::setLanguage(const QString &language, KConfig *config) 00086 { 00087 return d->setLanguage(language, config); 00088 } 00089 00090 bool KLocale::setLanguage(const QStringList &languages) 00091 { 00092 return d->setLanguage(languages); 00093 } 00094 00095 void KLocale::setCurrencyCode(const QString &newCurrencyCode) 00096 { 00097 d->setCurrencyCode(newCurrencyCode); 00098 } 00099 00100 bool KLocale::isApplicationTranslatedInto(const QString &lang) 00101 { 00102 return d->isApplicationTranslatedInto(lang); 00103 } 00104 00105 void KLocale::splitLocale(const QString &locale, QString &language, QString &country, QString &modifier, 00106 QString &charset) 00107 { 00108 KLocalePrivate::splitLocale(locale, language, country, modifier, charset); 00109 } 00110 00111 QString KLocale::language() const 00112 { 00113 return d->language(); 00114 } 00115 00116 QString KLocale::country() const 00117 { 00118 return d->country(); 00119 } 00120 00121 QString KLocale::countryDivisionCode() const 00122 { 00123 return d->countryDivisionCode(); 00124 } 00125 00126 KCurrencyCode *KLocale::currency() const 00127 { 00128 return d->currency(); 00129 } 00130 00131 QString KLocale::currencyCode() const 00132 { 00133 return d->currencyCode(); 00134 } 00135 00136 void KLocale::insertCatalog(const QString &catalog) 00137 { 00138 d->insertCatalog(catalog); 00139 } 00140 00141 void KLocale::removeCatalog(const QString &catalog) 00142 { 00143 d->removeCatalog(catalog); 00144 } 00145 00146 void KLocale::setActiveCatalog(const QString &catalog) 00147 { 00148 d->setActiveCatalog(catalog); 00149 } 00150 00151 void KLocale::translateRawFrom(const char *catname, const char *ctxt, const char *singular, const char *plural, 00152 unsigned long n, QString *lang, QString *trans) const 00153 { 00154 d->translateRawFrom(catname, ctxt, singular, plural, n, lang, trans); 00155 } 00156 00157 //Convenience versions 00158 void KLocale::translateRawFrom(const char *catname, const char *msg, QString *lang, QString *trans) const 00159 { 00160 d->translateRawFrom(catname, 0, msg, 0, 0, lang, trans); 00161 } 00162 00163 void KLocale::translateRaw(const char *msg, QString *lang, QString *trans) const 00164 { 00165 d->translateRawFrom(0, 0, msg, 0, 0, lang, trans); 00166 } 00167 00168 void KLocale::translateRawFrom(const char *catname, const char *ctxt, const char *msg, QString *lang, 00169 QString *trans) const 00170 { 00171 d->translateRawFrom(catname, ctxt, msg, 0, 0, lang, trans); 00172 } 00173 00174 void KLocale::translateRaw(const char *ctxt, const char *msg, QString *lang, QString *trans) const 00175 { 00176 d->translateRawFrom(0, ctxt, msg, 0, 0, lang, trans); 00177 } 00178 00179 void KLocale::translateRawFrom(const char *catname, const char *singular, const char *plural, 00180 unsigned long n, QString *lang, QString *trans) const 00181 { 00182 d->translateRawFrom(catname, 0, singular, plural, n, lang, trans); 00183 } 00184 00185 void KLocale::translateRaw(const char *singular, const char *plural, unsigned long n, QString *lang, 00186 QString *trans) const 00187 { 00188 d->translateRawFrom(0, 0, singular, plural, n, lang, trans); 00189 } 00190 00191 void KLocale::translateRaw(const char *ctxt, const char *singular, const char *plural, 00192 unsigned long n, QString *lang, QString *trans) const 00193 { 00194 d->translateRawFrom(0, ctxt, singular, plural, n, lang, trans); 00195 } 00196 00197 QString KLocale::translateQt(const char *context, const char *sourceText, const char *comment) const 00198 { 00199 return d->translateQt(context, sourceText, comment); 00200 } 00201 00202 QList<KLocale::DigitSet> KLocale::allDigitSetsList() const 00203 { 00204 return d->allDigitSetsList(); 00205 } 00206 00207 QString KLocale::digitSetToName(KLocale::DigitSet digitSet, bool withDigits) const 00208 { 00209 return d->digitSetToName(digitSet, withDigits); 00210 } 00211 00212 QString KLocale::convertDigits(const QString &str, DigitSet digitSet, bool ignoreContext) const 00213 { 00214 return d->convertDigits(str, digitSet, ignoreContext); 00215 } 00216 00217 bool KLocale::nounDeclension() const 00218 { 00219 return d->nounDeclension(); 00220 } 00221 00222 bool KLocale::dateMonthNamePossessive() const 00223 { 00224 return d->dateMonthNamePossessive(); 00225 } 00226 00227 int KLocale::weekStartDay() const 00228 { 00229 return d->weekStartDay(); 00230 } 00231 00232 int KLocale::workingWeekStartDay() const 00233 { 00234 return d->workingWeekStartDay(); 00235 } 00236 00237 int KLocale::workingWeekEndDay() const 00238 { 00239 return d->workingWeekEndDay(); 00240 } 00241 00242 int KLocale::weekDayOfPray() const 00243 { 00244 return d->weekDayOfPray(); 00245 } 00246 00247 int KLocale::decimalPlaces() const 00248 { 00249 return d->decimalPlaces(); 00250 } 00251 00252 QString KLocale::decimalSymbol() const 00253 { 00254 return d->decimalSymbol(); 00255 } 00256 00257 QString KLocale::thousandsSeparator() const 00258 { 00259 return d->thousandsSeparator(); 00260 } 00261 00262 QString KLocale::currencySymbol() const 00263 { 00264 return d->currencySymbol(); 00265 } 00266 00267 QString KLocale::monetaryDecimalSymbol() const 00268 { 00269 return d->monetaryDecimalSymbol(); 00270 } 00271 00272 QString KLocale::monetaryThousandsSeparator() const 00273 { 00274 return d->monetaryThousandsSeparator(); 00275 } 00276 00277 QString KLocale::positiveSign() const 00278 { 00279 return d->positiveSign(); 00280 } 00281 00282 QString KLocale::negativeSign() const 00283 { 00284 return d->negativeSign(); 00285 } 00286 00287 int KLocale::fracDigits() const 00288 { 00289 return monetaryDecimalPlaces(); 00290 } 00291 00292 int KLocale::monetaryDecimalPlaces() const 00293 { 00294 return d->monetaryDecimalPlaces(); 00295 } 00296 00297 bool KLocale::positivePrefixCurrencySymbol() const 00298 { 00299 return d->positivePrefixCurrencySymbol(); 00300 } 00301 00302 bool KLocale::negativePrefixCurrencySymbol() const 00303 { 00304 return d->negativePrefixCurrencySymbol(); 00305 } 00306 00307 KLocale::SignPosition KLocale::positiveMonetarySignPosition() const 00308 { 00309 return d->positiveMonetarySignPosition(); 00310 } 00311 00312 KLocale::SignPosition KLocale::negativeMonetarySignPosition() const 00313 { 00314 return d->negativeMonetarySignPosition(); 00315 } 00316 00317 QString KLocale::formatMoney(double num, const QString &symbol, int precision) const 00318 { 00319 return d->formatMoney(num, symbol, precision); 00320 } 00321 00322 QString KLocale::formatNumber(double num, int precision) const 00323 { 00324 return d->formatNumber(num, precision); 00325 } 00326 00327 QString KLocale::formatLong(long num) const 00328 { 00329 return d->formatLong(num); 00330 } 00331 00332 QString KLocale::formatNumber(const QString &numStr, bool round, int precision) const 00333 { 00334 return d->formatNumber(numStr, round, precision); 00335 } 00336 00337 QString KLocale::formatByteSize(double size, int precision, KLocale::BinaryUnitDialect dialect, 00338 KLocale::BinarySizeUnits specificUnit) const 00339 { 00340 return d->formatByteSize(size, precision, dialect, specificUnit); 00341 } 00342 00343 QString KLocale::formatByteSize(double size) const 00344 { 00345 return d->formatByteSize(size); 00346 } 00347 00348 KLocale::BinaryUnitDialect KLocale::binaryUnitDialect() const 00349 { 00350 return d->binaryUnitDialect(); 00351 } 00352 00353 void KLocale::setBinaryUnitDialect(KLocale::BinaryUnitDialect newDialect) 00354 { 00355 d->setBinaryUnitDialect(newDialect); 00356 } 00357 00358 QString KLocale::formatDuration(unsigned long mSec) const 00359 { 00360 return d->formatDuration(mSec); 00361 } 00362 00363 QString KLocale::prettyFormatDuration(unsigned long mSec) const 00364 { 00365 return d->prettyFormatDuration(mSec); 00366 } 00367 00368 QString KLocale::formatDate(const QDate &date, KLocale::DateFormat format) const 00369 { 00370 return d->formatDate(date, format); 00371 } 00372 00373 void KLocale::setMainCatalog(const char *catalog) 00374 { 00375 KLocalePrivate::setMainCatalog(catalog); 00376 } 00377 00378 double KLocale::readNumber(const QString &_str, bool * ok) const 00379 { 00380 return d->readNumber(_str, ok); 00381 } 00382 00383 double KLocale::readMoney(const QString &_str, bool *ok) const 00384 { 00385 return d->readMoney(_str, ok); 00386 } 00387 00388 QDate KLocale::readDate(const QString &intstr, bool *ok) const 00389 { 00390 return d->readDate(intstr, ok); 00391 } 00392 00393 QDate KLocale::readDate(const QString &intstr, ReadDateFlags flags, bool *ok) const 00394 { 00395 return d->readDate(intstr, flags, ok); 00396 } 00397 00398 QDate KLocale::readDate(const QString &intstr, const QString &fmt, bool *ok) const 00399 { 00400 return d->readDate(intstr, fmt, ok); 00401 } 00402 00403 QTime KLocale::readTime(const QString &intstr, bool *ok) const 00404 { 00405 return d->readTime(intstr, ok); 00406 } 00407 00408 QTime KLocale::readTime(const QString &intstr, KLocale::ReadTimeFlags flags, bool *ok) const 00409 { 00410 return d->readTime(intstr, flags, ok); 00411 } 00412 00413 QTime KLocale::readLocaleTime(const QString &intstr, bool *ok, KLocale::TimeFormatOptions options, 00414 KLocale::TimeProcessingOptions processing) const 00415 { 00416 return d->readLocaleTime(intstr, ok, options, processing); 00417 } 00418 00419 QString KLocale::formatTime(const QTime &time, bool includeSecs, bool isDuration) const 00420 { 00421 return d->formatTime(time, includeSecs, isDuration); 00422 } 00423 00424 QString KLocale::formatLocaleTime(const QTime &time, KLocale::TimeFormatOptions options) const 00425 { 00426 return d->formatLocaleTime(time, options); 00427 } 00428 00429 bool KLocale::use12Clock() const 00430 { 00431 return d->use12Clock(); 00432 } 00433 00434 QString KLocale::dayPeriodText(const QTime &time, DateTimeComponentFormat format) const 00435 { 00436 return d->dayPeriodForTime(time).periodName(format); 00437 } 00438 00439 QStringList KLocale::languageList() const 00440 { 00441 return d->languageList(); 00442 } 00443 00444 QStringList KLocale::currencyCodeList() const 00445 { 00446 return d->currencyCodeList(); 00447 } 00448 00449 /* Just copy in for now to keep diff clean, remove later 00450 QString KLocalePrivate::formatDateTime(const KLocale *locale, const QDateTime &dateTime, KLocale::DateFormat format, 00451 bool includeSeconds, int daysTo, int secsTo) 00452 { 00453 } 00454 */ 00455 00456 QString KLocale::formatDateTime(const QDateTime &dateTime, KLocale::DateFormat format, bool includeSeconds) const 00457 { 00458 return d->formatDateTime(dateTime, format, includeSeconds); 00459 } 00460 00461 QString KLocale::formatDateTime(const KDateTime &dateTime, KLocale::DateFormat format, DateTimeFormatOptions options) const 00462 { 00463 return d->formatDateTime(dateTime, format, options); 00464 } 00465 00466 QString KLocale::langLookup(const QString &fname, const char *rtype) 00467 { 00468 return KLocalePrivate::langLookup(fname, rtype); 00469 } 00470 void KLocale::setDateFormat(const QString &format) 00471 { 00472 d->setDateFormat(format); 00473 } 00474 00475 void KLocale::setDateFormatShort(const QString &format) 00476 { 00477 d->setDateFormatShort(format); 00478 } 00479 00480 void KLocale::setDateMonthNamePossessive(bool possessive) 00481 { 00482 d->setDateMonthNamePossessive(possessive); 00483 } 00484 00485 void KLocale::setTimeFormat(const QString &format) 00486 { 00487 d->setTimeFormat(format); 00488 } 00489 00490 void KLocale::setWeekStartDay(int day) 00491 { 00492 d->setWeekStartDay(day); 00493 } 00494 00495 void KLocale::setWorkingWeekStartDay(int day) 00496 { 00497 d->setWorkingWeekStartDay(day); 00498 } 00499 00500 void KLocale::setWorkingWeekEndDay(int day) 00501 { 00502 d->setWorkingWeekEndDay(day); 00503 } 00504 00505 void KLocale::setWeekDayOfPray(int day) 00506 { 00507 d->setWeekDayOfPray(day); 00508 } 00509 00510 QString KLocale::dateFormat() const 00511 { 00512 return d->dateFormat(); 00513 } 00514 00515 QString KLocale::dateFormatShort() const 00516 { 00517 return d->dateFormatShort(); 00518 } 00519 00520 QString KLocale::timeFormat() const 00521 { 00522 return d->timeFormat(); 00523 } 00524 00525 void KLocale::setDecimalPlaces(int digits) 00526 { 00527 d->setDecimalPlaces(digits); 00528 } 00529 00530 void KLocale::setDecimalSymbol(const QString &symbol) 00531 { 00532 d->setDecimalSymbol(symbol); 00533 } 00534 00535 void KLocale::setThousandsSeparator(const QString &separator) 00536 { 00537 d->setThousandsSeparator(separator); 00538 } 00539 00540 void KLocale::setPositiveSign(const QString &sign) 00541 { 00542 d->setPositiveSign(sign); 00543 } 00544 00545 void KLocale::setNegativeSign(const QString &sign) 00546 { 00547 d->setNegativeSign(sign); 00548 } 00549 00550 void KLocale::setPositiveMonetarySignPosition(KLocale::SignPosition signpos) 00551 { 00552 d->setPositiveMonetarySignPosition(signpos); 00553 } 00554 00555 void KLocale::setNegativeMonetarySignPosition(KLocale::SignPosition signpos) 00556 { 00557 d->setNegativeMonetarySignPosition(signpos); 00558 } 00559 00560 void KLocale::setPositivePrefixCurrencySymbol(bool prefix) 00561 { 00562 d->setPositivePrefixCurrencySymbol(prefix); 00563 } 00564 00565 void KLocale::setNegativePrefixCurrencySymbol(bool prefix) 00566 { 00567 d->setNegativePrefixCurrencySymbol(prefix); 00568 } 00569 00570 void KLocale::setFracDigits(int digits) 00571 { 00572 setMonetaryDecimalPlaces(digits); 00573 } 00574 00575 void KLocale::setMonetaryDecimalPlaces(int digits) 00576 { 00577 d->setMonetaryDecimalPlaces(digits); 00578 } 00579 00580 void KLocale::setMonetaryThousandsSeparator(const QString &separator) 00581 { 00582 d->setMonetaryThousandsSeparator(separator); 00583 } 00584 00585 void KLocale::setMonetaryDecimalSymbol(const QString &symbol) 00586 { 00587 d->setMonetaryDecimalSymbol(symbol); 00588 } 00589 00590 void KLocale::setCurrencySymbol(const QString & symbol) 00591 { 00592 d->setCurrencySymbol(symbol); 00593 } 00594 00595 int KLocale::pageSize() const 00596 { 00597 return d->pageSize(); 00598 } 00599 00600 void KLocale::setPageSize(int size) 00601 { 00602 d->setPageSize(size); 00603 } 00604 00605 KLocale::MeasureSystem KLocale::measureSystem() const 00606 { 00607 return d->measureSystem(); 00608 } 00609 00610 void KLocale::setMeasureSystem(KLocale::MeasureSystem value) 00611 { 00612 d->setMeasureSystem(value); 00613 } 00614 00615 QString KLocale::defaultLanguage() 00616 { 00617 return KLocalePrivate::defaultLanguage(); 00618 } 00619 00620 QString KLocale::defaultCountry() 00621 { 00622 return KLocalePrivate::defaultCountry(); 00623 } 00624 00625 QString KLocale::defaultCurrencyCode() 00626 { 00627 return KLocalePrivate::defaultCurrencyCode(); 00628 } 00629 00630 bool KLocale::useTranscript() const 00631 { 00632 return d->useTranscript(); 00633 } 00634 00635 const QByteArray KLocale::encoding() const 00636 { 00637 return d->encoding(); 00638 } 00639 00640 int KLocale::encodingMib() const 00641 { 00642 return d->encodingMib(); 00643 } 00644 00645 int KLocale::fileEncodingMib() const 00646 { 00647 return d->fileEncodingMib(); 00648 } 00649 00650 QTextCodec *KLocale::codecForEncoding() const 00651 { 00652 return d->codecForEncoding(); 00653 } 00654 00655 bool KLocale::setEncoding(int mibEnum) 00656 { 00657 return d->setEncoding(mibEnum); 00658 } 00659 00660 QStringList KLocale::allLanguagesList() const 00661 { 00662 return d->allLanguagesList(); 00663 } 00664 00665 QStringList KLocale::installedLanguages() const 00666 { 00667 return d->installedLanguages(); 00668 } 00669 00670 QString KLocale::languageCodeToName(const QString &language) const 00671 { 00672 return d->languageCodeToName(language); 00673 } 00674 00675 QStringList KLocale::allCountriesList() const 00676 { 00677 return d->allCountriesList(); 00678 } 00679 00680 QString KLocale::countryCodeToName(const QString &country) const 00681 { 00682 return d->countryCodeToName(country); 00683 } 00684 00685 void KLocale::setCalendar(const QString &calendarType) 00686 { 00687 d->setCalendar(calendarType); 00688 } 00689 00690 void KLocale::setCalendarSystem(KLocale::CalendarSystem calendarSystem) 00691 { 00692 d->setCalendarSystem(calendarSystem); 00693 } 00694 00695 QString KLocale::calendarType() const 00696 { 00697 return d->calendarType(); 00698 } 00699 00700 KLocale::CalendarSystem KLocale::calendarSystem() const 00701 { 00702 return d->calendarSystem(); 00703 } 00704 00705 const KCalendarSystem * KLocale::calendar() const 00706 { 00707 return d->calendar(); 00708 } 00709 00710 void KLocale::setWeekNumberSystem(KLocale::WeekNumberSystem weekNumberSystem) 00711 { 00712 d->setWeekNumberSystem(weekNumberSystem); 00713 } 00714 00715 KLocale::WeekNumberSystem KLocale::weekNumberSystem() 00716 { 00717 return d->weekNumberSystem(); 00718 } 00719 00720 KLocale::KLocale(const KLocale &rhs) 00721 : d(new KLocalePrivate(*rhs.d)) 00722 { 00723 d->q = this; 00724 } 00725 00726 KLocale & KLocale::operator=(const KLocale & rhs) 00727 { 00728 // the assignment operator works here 00729 *d = *rhs.d; 00730 d->q = this; 00731 return *this; 00732 } 00733 00734 void KLocale::copyCatalogsTo(KLocale *locale) 00735 { 00736 d->copyCatalogsTo(locale); 00737 } 00738 00739 QString KLocale::localizedFilePath(const QString &filePath) const 00740 { 00741 return d->localizedFilePath(filePath); 00742 } 00743 00744 QString KLocale::removeAcceleratorMarker(const QString &label) const 00745 { 00746 return d->removeAcceleratorMarker(label); 00747 } 00748 00749 void KLocale::setDigitSet(KLocale::DigitSet digitSet) 00750 { 00751 d->setDigitSet(digitSet); 00752 } 00753 00754 KLocale::DigitSet KLocale::digitSet() const 00755 { 00756 return d->digitSet(); 00757 } 00758 00759 void KLocale::setMonetaryDigitSet(KLocale::DigitSet digitSet) 00760 { 00761 d->setMonetaryDigitSet(digitSet); 00762 } 00763 00764 KLocale::DigitSet KLocale::monetaryDigitSet() const 00765 { 00766 return d->monetaryDigitSet(); 00767 } 00768 00769 void KLocale::setDateTimeDigitSet(KLocale::DigitSet digitSet) 00770 { 00771 d->setDateTimeDigitSet(digitSet); 00772 } 00773 00774 KLocale::DigitSet KLocale::dateTimeDigitSet() const 00775 { 00776 return d->dateTimeDigitSet(); 00777 }
KDE 4.6 API Reference