QMimeType: use default locale rather than system locale
This makes it possible for the application to control which language is used by QMimeType::comment() [ChangeLog][QtCore][QMimeType] QMimeType::comment() now uses the default locale rather than system locale, so that applications can control which language is being used. Task-number: QTBUG-50776 Change-Id: I82623b7c488035a4164fadaf37ebcc79a9fd6173 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>bb10
parent
35b871b2b6
commit
3e453abc7d
|
|
@ -576,7 +576,7 @@ void QMimeBinaryProvider::loadMimeTypePrivate(QMimeTypePrivate &data)
|
|||
|
||||
QString comment;
|
||||
QString mainPattern;
|
||||
const QString preferredLanguage = QLocale::system().name();
|
||||
const QString preferredLanguage = QLocale().name();
|
||||
|
||||
for (QStringList::const_reverse_iterator it = mimeFiles.crbegin(), end = mimeFiles.crend(); it != end; ++it) { // global first, then local.
|
||||
QFile qfile(*it);
|
||||
|
|
|
|||
|
|
@ -232,15 +232,15 @@ QString QMimeType::name() const
|
|||
/*!
|
||||
Returns the description of the MIME type to be displayed on user interfaces.
|
||||
|
||||
The system language (QLocale::system().name()) is used to select the appropriate translation.
|
||||
The default language (QLocale().name()) is used to select the appropriate translation.
|
||||
*/
|
||||
QString QMimeType::comment() const
|
||||
{
|
||||
QMimeDatabasePrivate::instance()->provider()->loadMimeTypePrivate(*d);
|
||||
|
||||
QStringList languageList;
|
||||
languageList << QLocale::system().name();
|
||||
languageList << QLocale::system().uiLanguages();
|
||||
languageList << QLocale().name();
|
||||
languageList << QLocale().uiLanguages();
|
||||
Q_FOREACH (const QString &language, languageList) {
|
||||
const QString lang = language == QLatin1String("C") ? QLatin1String("en_US") : language;
|
||||
const QString comm = d->localeComments.value(lang);
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@ tst_QMimeDatabase::tst_QMimeDatabase()
|
|||
|
||||
void tst_QMimeDatabase::initTestCase()
|
||||
{
|
||||
QLocale::setDefault(QLocale::c());
|
||||
QVERIFY2(m_temporaryDir.isValid(), qPrintable(m_temporaryDir.errorString()));
|
||||
QStandardPaths::setTestModeEnabled(true);
|
||||
m_localMimeDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/mime";
|
||||
|
|
@ -450,6 +451,21 @@ void tst_QMimeDatabase::icons()
|
|||
QCOMPARE(pub.genericIconName(), QString::fromLatin1("x-office-document"));
|
||||
}
|
||||
|
||||
void tst_QMimeDatabase::comment()
|
||||
{
|
||||
struct RestoreLocale
|
||||
{
|
||||
~RestoreLocale() { QLocale::setDefault(QLocale::c()); }
|
||||
} restoreLocale;
|
||||
|
||||
QLocale::setDefault(QLocale("de"));
|
||||
QMimeDatabase db;
|
||||
QMimeType directory = db.mimeTypeForName(QStringLiteral("inode/directory"));
|
||||
QCOMPARE(directory.comment(), QStringLiteral("Ordner"));
|
||||
QLocale::setDefault(QLocale("fr"));
|
||||
QCOMPARE(directory.comment(), QStringLiteral("dossier"));
|
||||
}
|
||||
|
||||
// In here we do the tests that need some content in a temporary file.
|
||||
// This could also be added to shared-mime-info's testsuite...
|
||||
void tst_QMimeDatabase::mimeTypeForFileWithContent()
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ private slots:
|
|||
void listAliases_data();
|
||||
void listAliases();
|
||||
void icons();
|
||||
void comment();
|
||||
void mimeTypeForFileWithContent();
|
||||
void mimeTypeForUrl();
|
||||
void mimeTypeForData_data();
|
||||
|
|
|
|||
Loading…
Reference in New Issue