[krita/krita/3.1] /: BUG:374928 Fix loading the translations that fit the system locale

Boudewijn Rempt null at kde.org
Fri Jan 27 09:44:50 UTC 2017


Git commit 35d2722e3182726340fe4e3aabd112e53d7d1c99 by Boudewijn Rempt.
Committed on 27/01/2017 at 09:44.
Pushed by rempt into branch 'krita/3.1'.

BUG:374928 Fix loading the translations that fit the system locale

It is supremely important NOT to use i18n before the application
is created.  If i18n is called too early, like when creating a static
KoID, the translation system is initialized before we've had a chance
to add the path to the translations to the XDG_DATA_DIRS variable. Then
the translation system only sees the globally available translations,
and Krita stays untranslated.

Always use ki18n when initializing a static object with a translation.

CCMAIL:kimageshop at kde.org

M  +6    -6    krita/main.cc
M  +81   -76   libs/image/brushengine/kis_standard_uniform_properties_factory.cpp
M  +14   -13   libs/image/brushengine/kis_standard_uniform_properties_factory.h
M  +1    -1    libs/ui/kis_composite_ops_model.cc

https://commits.kde.org/krita/35d2722e3182726340fe4e3aabd112e53d7d1c99

diff --git a/krita/main.cc b/krita/main.cc
index 257b0afd2b5..44785e451ed 100644
--- a/krita/main.cc
+++ b/krita/main.cc
@@ -91,9 +91,9 @@ extern "C" int main(int argc, char **argv)
     // The global initialization of the random generator
     qsrand(time(0));
     bool runningInKDE = !qgetenv("KDE_FULL_SESSION").isEmpty();
-    
-#if defined HAVE_X11 
-    qputenv("QT_QPA_PLATFORM", "xcb"); 
+
+#if defined HAVE_X11
+    qputenv("QT_QPA_PLATFORM", "xcb");
 #endif
 
     /**
@@ -142,7 +142,6 @@ extern "C" int main(int argc, char **argv)
 
     // Now that the paths are set, set the language. First check the override from the langage
     // selection dialog.
-    KLocalizedString::clearLanguages();
     const QString configPath = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation);
     QSettings languageoverride(configPath + QStringLiteral("/klanguageoverridesrc"), QSettings::IniFormat);
     languageoverride.beginGroup(QStringLiteral("Language"));
@@ -163,6 +162,7 @@ extern "C" int main(int argc, char **argv)
         // XXX: This doesn't work, for some !@#$% reason.
         QLocale locale = QLocale::system();
         if (locale.bcp47Name() != QStringLiteral("en")) {
+            qputenv("LANG", locale.bcp47Name().toLatin1());
             KLocalizedString::setLanguages(QStringList() << locale.bcp47Name());
         }
     }
@@ -247,7 +247,7 @@ extern "C" int main(int argc, char **argv)
 #if QT_VERSION >= 0x050700
     app.setAttribute(Qt::AA_CompressHighFrequencyEvents, false);
 #endif
-    
+
     // Set up remote arguments.
     QObject::connect(&app, SIGNAL(messageReceived(QByteArray,QObject*)),
                      &app, SLOT(remoteArguments(QByteArray,QObject*)));
@@ -256,7 +256,7 @@ extern "C" int main(int argc, char **argv)
                      &app, SLOT(fileOpenRequested(QString)));
 
     int state = app.exec();
-    
+
     return state;
 }
 
diff --git a/libs/image/brushengine/kis_standard_uniform_properties_factory.cpp b/libs/image/brushengine/kis_standard_uniform_properties_factory.cpp
index 7f87d34879f..5d8b714df60 100644
--- a/libs/image/brushengine/kis_standard_uniform_properties_factory.cpp
+++ b/libs/image/brushengine/kis_standard_uniform_properties_factory.cpp
@@ -22,104 +22,109 @@
 #include "kis_paintop_settings.h"
 #include "kis_paintop_settings_update_proxy.h"
 
+
+
+
 namespace KisStandardUniformPropertiesFactory {
 
-    KisUniformPaintOpPropertySP createProperty(const KoID &id,
-                                               KisPaintOpSettingsRestrictedSP settings,
-                                               KisPaintopSettingsUpdateProxy *updateProxy)
-    {
-        return createProperty(id.id(), settings, updateProxy);
-    }
 
-    KisUniformPaintOpPropertySP createProperty(const QString &id,
-                                               KisPaintOpSettingsRestrictedSP settings,
-                                               KisPaintopSettingsUpdateProxy *updateProxy)
-    {
-        KisUniformPaintOpPropertySP result;
 
+KisUniformPaintOpPropertySP createProperty(const KoID &id,
+                                           KisPaintOpSettingsRestrictedSP settings,
+                                           KisPaintopSettingsUpdateProxy *updateProxy)
+{
+    return createProperty(id.id(), settings, updateProxy);
+}
+
+KisUniformPaintOpPropertySP createProperty(const QString &id,
+                                           KisPaintOpSettingsRestrictedSP settings,
+                                           KisPaintopSettingsUpdateProxy *updateProxy)
+{
+    KisUniformPaintOpPropertySP result;
 
-        if (id == size.id()) {
-            KisDoubleSliderBasedPaintOpPropertyCallback *prop =
+
+    if (id == size.id()) {
+        KisDoubleSliderBasedPaintOpPropertyCallback *prop =
                 new KisDoubleSliderBasedPaintOpPropertyCallback(
                     KisDoubleSliderBasedPaintOpPropertyCallback::Double,
                     "size",
                     i18n("Size"),
                     settings, 0);
 
-            prop->setRange(0, 1000);
-            prop->setDecimals(2);
-            prop->setSingleStep(1);
-            prop->setExponentRatio(3.0);
-            prop->setSuffix(i18n(" px"));
-
-            prop->setReadCallback(
-                [](KisUniformPaintOpProperty *prop) {
-                    prop->setValue(prop->settings()->paintOpSize());
-                });
-            prop->setWriteCallback(
-                [](KisUniformPaintOpProperty *prop) {
-                    prop->settings()->setPaintOpSize(prop->value().toReal());
-                });
-
-            QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
-            prop->requestReadValue();
-            result = toQShared(prop);
-        } else if (id == opacity.id()) {
-            KisDoubleSliderBasedPaintOpPropertyCallback *prop =
+        prop->setRange(0, 1000);
+        prop->setDecimals(2);
+        prop->setSingleStep(1);
+        prop->setExponentRatio(3.0);
+        prop->setSuffix(i18n(" px"));
+
+        prop->setReadCallback(
+                    [](KisUniformPaintOpProperty *prop) {
+            prop->setValue(prop->settings()->paintOpSize());
+        });
+        prop->setWriteCallback(
+                    [](KisUniformPaintOpProperty *prop) {
+            prop->settings()->setPaintOpSize(prop->value().toReal());
+        });
+
+        QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
+        prop->requestReadValue();
+        result = toQShared(prop);
+    } else if (id == opacity.id()) {
+        KisDoubleSliderBasedPaintOpPropertyCallback *prop =
                 new KisDoubleSliderBasedPaintOpPropertyCallback(
                     KisDoubleSliderBasedPaintOpPropertyCallback::Double,
                     opacity.id(),
                     opacity.name(),
                     settings, 0);
 
-            prop->setRange(0.0, 1.0);
-            prop->setSingleStep(0.01);
-
-            prop->setReadCallback(
-                [](KisUniformPaintOpProperty *prop) {
-                    prop->setValue(prop->settings()->paintOpOpacity());
-                });
-            prop->setWriteCallback(
-                [](KisUniformPaintOpProperty *prop) {
-                    prop->settings()->setPaintOpOpacity(prop->value().toReal());
-                });
-
-            QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
-            prop->requestReadValue();
-            result = toQShared(prop);
-        } else if (id == flow.id()) {
-            KisDoubleSliderBasedPaintOpPropertyCallback *prop =
+        prop->setRange(0.0, 1.0);
+        prop->setSingleStep(0.01);
+
+        prop->setReadCallback(
+                    [](KisUniformPaintOpProperty *prop) {
+            prop->setValue(prop->settings()->paintOpOpacity());
+        });
+        prop->setWriteCallback(
+                    [](KisUniformPaintOpProperty *prop) {
+            prop->settings()->setPaintOpOpacity(prop->value().toReal());
+        });
+
+        QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
+        prop->requestReadValue();
+        result = toQShared(prop);
+    } else if (id == flow.id()) {
+        KisDoubleSliderBasedPaintOpPropertyCallback *prop =
                 new KisDoubleSliderBasedPaintOpPropertyCallback(
                     KisDoubleSliderBasedPaintOpPropertyCallback::Double,
                     flow.id(),
                     flow.name(),
                     settings, 0);
 
-            prop->setRange(0.0, 1.0);
-            prop->setSingleStep(0.01);
-
-            prop->setReadCallback(
-                [](KisUniformPaintOpProperty *prop) {
-                    prop->setValue(prop->settings()->paintOpFlow());
-                });
-            prop->setWriteCallback(
-                [](KisUniformPaintOpProperty *prop) {
-                    prop->settings()->setPaintOpFlow(prop->value().toReal());
-                });
-
-            QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
-            prop->requestReadValue();
-            result = toQShared(prop);
-        } else if (id == angle.id()) {
-            qFatal("Not implemented");
-        } else if (id == spacing.id()) {
-            qFatal("Not implemented");
-        }
-
-        if (!result) {
-            KIS_SAFE_ASSERT_RECOVER_NOOP(0 && "Unknown Uniform property id!");
-        }
-
-        return result;
+        prop->setRange(0.0, 1.0);
+        prop->setSingleStep(0.01);
+
+        prop->setReadCallback(
+                    [](KisUniformPaintOpProperty *prop) {
+            prop->setValue(prop->settings()->paintOpFlow());
+        });
+        prop->setWriteCallback(
+                    [](KisUniformPaintOpProperty *prop) {
+            prop->settings()->setPaintOpFlow(prop->value().toReal());
+        });
+
+        QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
+        prop->requestReadValue();
+        result = toQShared(prop);
+    } else if (id == angle.id()) {
+        qFatal("Not implemented");
+    } else if (id == spacing.id()) {
+        qFatal("Not implemented");
+    }
+
+    if (!result) {
+        KIS_SAFE_ASSERT_RECOVER_NOOP(0 && "Unknown Uniform property id!");
     }
+
+    return result;
+}
 }
diff --git a/libs/image/brushengine/kis_standard_uniform_properties_factory.h b/libs/image/brushengine/kis_standard_uniform_properties_factory.h
index 44ed4d5113b..517a6dea857 100644
--- a/libs/image/brushengine/kis_standard_uniform_properties_factory.h
+++ b/libs/image/brushengine/kis_standard_uniform_properties_factory.h
@@ -27,26 +27,27 @@ class KisPaintopSettingsUpdateProxy;
 
 namespace KisStandardUniformPropertiesFactory
 {
-    static const KoID size("size", i18n("Size"));
-    static const KoID opacity("opacity", i18n("Opacity"));
-    static const KoID flow("flow", i18n("Flow"));
-    static const KoID angle("angle", i18n("Angle"));
-    static const KoID spacing("spacing", i18n("Spacing"));
+static const KoID size("size", ki18n("Size"));
+static const KoID opacity("opacity", ki18n("Opacity"));
+static const KoID flow("flow", ki18n("Flow"));
+static const KoID angle("angle", ki18n("Angle"));
+static const KoID spacing("spacing", ki18n("Spacing"));
 
-    /**
+
+/**
      * Overload of createProperty(const QString &id, ...)
      */
-    KisUniformPaintOpPropertySP createProperty(const KoID &id,
-                                               KisPaintOpSettingsRestrictedSP settings,
-                                               KisPaintopSettingsUpdateProxy *updateProxy);
+KisUniformPaintOpPropertySP createProperty(const KoID &id,
+                                           KisPaintOpSettingsRestrictedSP settings,
+                                           KisPaintopSettingsUpdateProxy *updateProxy);
 
-    /**
+/**
      * Factory for creating standard uniform properties. Right now
      * it supports only size, opacity and flow.
      */
-    KisUniformPaintOpPropertySP createProperty(const QString &id,
-                                               KisPaintOpSettingsRestrictedSP settings,
-                                               KisPaintopSettingsUpdateProxy *updateProxy);
+KisUniformPaintOpPropertySP createProperty(const QString &id,
+                                           KisPaintOpSettingsRestrictedSP settings,
+                                           KisPaintopSettingsUpdateProxy *updateProxy);
 }
 
 #endif /* __KIS_STANDARD_UNIFORM_PROPERTIES_FACTORY_H */
diff --git a/libs/ui/kis_composite_ops_model.cc b/libs/ui/kis_composite_ops_model.cc
index bd67b69c199..f26c7e5af80 100644
--- a/libs/ui/kis_composite_ops_model.cc
+++ b/libs/ui/kis_composite_ops_model.cc
@@ -27,7 +27,7 @@
 #include "kis_config.h"
 
 KoID KisCompositeOpListModel::favoriteCategory() {
-    static KoID category("favorites", i18n("Favorites"));
+    static KoID category("favorites", ki18n("Favorites"));
     return category;
 }
 


More information about the kimageshop mailing list