diff --git a/locales.cpp b/locales.cpp
index 133515f..7d64c1c 100644
--- a/locales.cpp
+++ b/locales.cpp
@@ -11,22 +11,39 @@
 #include <QCoreApplication>
 #include <QTranslator>
 #include <QLocale>
+#include "params.h"
 
 using namespace QuasarAppUtils;
 
 
-bool Locales::initLocale(const QString& prefix, const QString &locale, QCoreApplication *app, QTranslator *translator){
+bool Locales::initLocale(QTranslator* translator) {
+    return QCoreApplication::installTranslator(translator);
+}
+
+bool Locales::setLocale(const QString &prefix, const QString &locale) {
+    auto translator = getTranslator();
+
+    if (translator->isEmpty() && !initLocale(translator)) {
+        Params::log("init translations fail! ", VerboseLvl::Error);
+    }
 
     QString defaultLocale = QLocale::system().name();
     defaultLocale.truncate(defaultLocale.lastIndexOf('_'));
 
-    if(!locale.isEmpty() && translator->load(QString("%0/%1").arg(prefix, locale))) {
-        return app->installTranslator(translator);
+    if(translator->load(QString("%0/%1").arg(prefix, locale))) {
+        return true;
     }
 
-    if(!translator->load(QString("%0/%1").arg(prefix, defaultLocale))) {
-        return false;
+    if(translator->load(QString("%0/%1").arg(prefix, defaultLocale))) {
+        return true;
     }
 
-    return app->installTranslator(translator);
+    Params::log("set translations fail!", VerboseLvl::Warning);
+
+    return false;
+}
+
+QTranslator *Locales::getTranslator() {
+    static QTranslator *translator = new QTranslator();
+    return translator;
 }
diff --git a/locales.h b/locales.h
index 3352ce4..1826617 100644
--- a/locales.h
+++ b/locales.h
@@ -11,6 +11,8 @@
 
 #include "quasarapp_global.h"
 
+#include <QString>
+
 class QCoreApplication;
 class QTranslator;
 
@@ -27,12 +29,23 @@ public:
     /**
      * @brief initLocale init translation of applictaion
      * @param prefix - path to folder with qm files. example (/home)
-     * @param locale - string value of locale. example (en)
-     * @param app - app core of qt
-     * @param translator - translator core of qt
-     * @return return true if locale funded
+     * @param locale - string value of locale. example (en) by default empty. @note If use by default this function set sstem language.
+     * @return return true if locale set for application
      */
-    static bool initLocale(const QString& prefix ,const QString &locale, QCoreApplication* app, QTranslator *translator);
+    static bool setLocale(const QString& prefix , const QString &locale = {});
+
+private:
+    /**
+     * @brief initLocale
+     * @return true if function finished seccusseful
+     */
+    static bool initLocale(QTranslator*);
+
+    /**
+     * @brief getTranslator
+     * @return instance of Translation
+     */
+    static QTranslator* getTranslator();
 
 };
 }