/*! Constructs a DefaultCatalog with given signature and language and reads the catalog from disk. InitCheck() will be B_OK if catalog could be loaded successfully, it will give an appropriate error-code otherwise. */ DefaultCatalog::DefaultCatalog(const entry_ref &catalogOwner, const char *language, uint32 fingerprint) : HashMapCatalog("", language, fingerprint) { // We created the catalog with an invalid signature, but we fix that now. SetSignature(catalogOwner); status_t status; // search for catalog living in sub-folder of app's folder: node_ref nref; nref.device = catalogOwner.device; nref.node = catalogOwner.directory; BDirectory appDir(&nref); BString catalogName("locale/"); catalogName << kCatFolder << "/" << fSignature << "/" << fLanguageName << kCatExtension; BPath catalogPath(&appDir, catalogName.String()); status = ReadFromFile(catalogPath.Path()); if (status != B_OK) { // search in data folders directory_which which[] = { B_USER_DATA_DIRECTORY, B_COMMON_DATA_DIRECTORY, B_SYSTEM_DATA_DIRECTORY }; for (size_t i = 0; i < sizeof(which) / sizeof(which[0]); i++) { BPath path; if (find_directory(which[i], &path) == B_OK) { BString catalogName(path.Path()); catalogName << "/locale/" << kCatFolder << "/" << fSignature << "/" << fLanguageName << kCatExtension; status = ReadFromFile(catalogName.String()); if (status == B_OK) break; } } } if (status != B_OK) { // give lowest priority to catalog embedded as resource in application // executable, so they can be overridden easily. status = ReadFromResource(catalogOwner); } fInitCheck = status; }
QList<KAboutPerson> KAboutData::translators() const { QList<KAboutPerson> personList; #pragma message("KDE5 TODO: What about this code ?") #if 0 KLocale *tmpLocale = NULL; if (KLocale::global()) { // There could be many catalogs loaded into the global locale, // e.g. in systemsettings. The tmp locale is needed to make sure we // use the translators name from this aboutdata's catalog, rather than // from any other loaded catalog. tmpLocale = new KLocale(*KLocale::global()); tmpLocale->setActiveCatalog(catalogName()); } #endif QString translatorName; if (!d->translatorName.isEmpty()) { translatorName = d->translatorName; } else { translatorName = i18nc("NAME OF TRANSLATORS", NAME_OF_TRANSLATORS); //toString(tmpLocale); } QString translatorEmail; if (!d->translatorEmail.isEmpty()) { translatorEmail = d->translatorEmail; } else { translatorEmail = i18nc("EMAIL OF TRANSLATORS", EMAIL_OF_TRANSLATORS); //toString(tmpLocale); } #if 0 delete tmpLocale; #endif if ( translatorName.isEmpty() || translatorName == QString::fromUtf8( NAME_OF_TRANSLATORS ) ) return personList; const QStringList nameList(translatorName.split(QString(QLatin1Char(',')))); QStringList emailList; if( !translatorEmail.isEmpty() && translatorEmail != QString::fromUtf8( EMAIL_OF_TRANSLATORS ) ) { emailList = translatorEmail.split(QString(QLatin1Char(',')), QString::KeepEmptyParts); } QStringList::const_iterator nit; QStringList::const_iterator eit = emailList.constBegin(); for( nit = nameList.constBegin(); nit != nameList.constEnd(); ++nit ) { QString email; if ( eit != emailList.constEnd() ) { email = *eit; ++eit; } personList.append(KAboutPerson((*nit).trimmed(), email.trimmed(), true)); } return personList; }