[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[vidalia-svn] r2998: Try to load a translation for the current language from Qt's (vidalia/trunk/src/vidalia)



Author: edmanm
Date: 2008-08-20 01:27:11 -0400 (Wed, 20 Aug 2008)
New Revision: 2998

Modified:
   vidalia/trunk/src/vidalia/languagesupport.cpp
Log:
Try to load a translation for the current language from Qt's translations
directory, so we can get Qt's internal widgets (e.g. QDialogButtonBox)
translated.


Modified: vidalia/trunk/src/vidalia/languagesupport.cpp
===================================================================
--- vidalia/trunk/src/vidalia/languagesupport.cpp	2008-08-19 04:42:55 UTC (rev 2997)
+++ vidalia/trunk/src/vidalia/languagesupport.cpp	2008-08-20 05:27:11 UTC (rev 2998)
@@ -16,6 +16,7 @@
 
 #include <QTranslator>
 #include <QLocale>
+#include <QLibraryInfo>
 #include <vidalia.h>
 
 #include "languagesupport.h"
@@ -138,14 +139,25 @@
   if (languageCode == "en")
     return true;
 
-  QTranslator *translator = new QTranslator(vApp);
-  if (translator->load(QString(":/lang/vidalia_%1.qm").arg(languageCode))) {
-    QApplication::installTranslator(translator);
-    if (isRightToLeft(languageCode))
-      vApp->setLayoutDirection(Qt::RightToLeft);
+  /* Attempt to load the translations for Qt's internal widgets from their
+   * installed Qt directory. */
+  QTranslator *systemQtTranslator = new QTranslator(vApp);
+  Q_CHECK_PTR(systemQtTranslator);
+
+  QString qtDir = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
+  if (systemQtTranslator->load(qtDir + "/qt_" + languageCode + ".qm"))
+    QApplication::installTranslator(systemQtTranslator);
+  else
+    delete systemQtTranslator;
+
+  /* Install a translator for Vidalia's UI widgets */
+  QTranslator *vidaliaTranslator = new QTranslator(vApp);
+  Q_CHECK_PTR(vidaliaTranslator);
+
+  if (vidaliaTranslator->load(":/lang/vidalia_" + languageCode + ".qm")) {
+    QApplication::installTranslator(vidaliaTranslator);
     return true;
   }
-  delete translator;
+  delete vidaliaTranslator;
   return false;
 }
-