From 988f09bb051dca0437ecec431ee44ed5b4a560d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Thu, 5 Jun 2014 14:05:44 +0200 Subject: Fix locale-aware reading in KDesktopFile The underlying KConfig used QLocale::name() for getting the locale aware part. But this returns "de_DE" while the desktop files store "de". In addition it constructs a QLocale object instead of using the system locale. This has the advantage that the usage of QLocale::setDafault() gets honored by KConfig. REVIEW: 118564 --- autotests/kdesktopfiletest.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'autotests/kdesktopfiletest.cpp') diff --git a/autotests/kdesktopfiletest.cpp b/autotests/kdesktopfiletest.cpp index 494a43c0..6c3af4c2 100644 --- a/autotests/kdesktopfiletest.cpp +++ b/autotests/kdesktopfiletest.cpp @@ -16,6 +16,7 @@ * Boston, MA 02110-1301, USA. */ #include "kdesktopfiletest.h" +#include "helper.h" #include #include @@ -49,6 +50,35 @@ void KDesktopFileTest::testRead() QCOMPARE(df.fileName(), QFileInfo(fileName).canonicalFilePath()); } +void KDesktopFileTest::testReadLocalized() +{ + QTemporaryFile file("testReadLocalizedXXXXXX.desktop"); + QVERIFY(file.open()); + const QString fileName = file.fileName(); + QTextStream ts(&file); + ts << + "[Desktop Entry]\n" + "Type=Application\n" + "Name=My Application\n" + "Name[de]=Meine Anwendung\n" + "Icon=foo\n" + "\n"; + file.close(); + QVERIFY(QFile::exists(fileName)); + QVERIFY(KDesktopFile::isDesktopFile(fileName)); + + DefaultLocale defaultLocale; + // set language to German for which we have a translation + QLocale::setDefault(QLocale(QLocale::German)); + KDesktopFile df(fileName); + QCOMPARE(df.readName(), QString::fromLatin1("Meine Anwendung")); + + // set language to French for which we don't have a translation + QLocale::setDefault(QLocale(QLocale::French)); + KDesktopFile df2(fileName); + QCOMPARE(df2.readName(), QString::fromLatin1("My Application")); +} + void KDesktopFileTest::testSuccessfulTryExec() { QTemporaryFile file; -- cgit v1.2.1