From aa6c5764c412f7e05aa4bf4b72efb0f827bc0394 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Mon, 27 Jun 2016 20:14:31 +0200 Subject: [PATCH] language selector in menu --- .../nightscout/androidaps/MainActivity.java | 9 +++ .../info/nightscout/utils/LocaleHelper.java | 66 +++++++++++++++++++ app/src/main/res/menu/menu_main.xml | 6 ++ app/src/main/res/values/strings.xml | 2 + 4 files changed, 83 insertions(+) create mode 100644 app/src/main/java/info/nightscout/utils/LocaleHelper.java diff --git a/app/src/main/java/info/nightscout/androidaps/MainActivity.java b/app/src/main/java/info/nightscout/androidaps/MainActivity.java index 2ec26946db..9ac69e3cfe 100644 --- a/app/src/main/java/info/nightscout/androidaps/MainActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/MainActivity.java @@ -34,6 +34,7 @@ import info.nightscout.androidaps.plugins.Treatments.TreatmentsFragment; import info.nightscout.androidaps.plugins.VirtualPump.VirtualPumpFragment; import info.nightscout.androidaps.tabs.*; import info.nightscout.androidaps.plugins.Objectives.ObjectivesFragment; +import info.nightscout.utils.LocaleHelper; public class MainActivity extends AppCompatActivity { private static Logger log = LoggerFactory.getLogger(MainActivity.class); @@ -118,6 +119,14 @@ public class MainActivity extends AppCompatActivity { case R.id.nav_resetdb: MainApp.getDbHelper().resetDatabases(); break; + case R.id.en_lang: { + LocaleHelper.setLocale(this, "en"); + break; + } + case R.id.cs_lang: { + LocaleHelper.setLocale(this, "cs"); + break; + } case R.id.nav_exit: log.debug("Exiting"); //chancelAlarmManager(); diff --git a/app/src/main/java/info/nightscout/utils/LocaleHelper.java b/app/src/main/java/info/nightscout/utils/LocaleHelper.java new file mode 100644 index 0000000000..1d89c7d689 --- /dev/null +++ b/app/src/main/java/info/nightscout/utils/LocaleHelper.java @@ -0,0 +1,66 @@ +package info.nightscout.utils; + +import android.content.Context; +import android.content.SharedPreferences; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.preference.PreferenceManager; + +import java.util.Locale; + +/** + * This class is used to change your application locale and persist this change for the next time + * that your app is going to be used. + *

+ * You can also change the locale of your application on the fly by using the setLocale method. + *

+ * Created by gunhansancar on 07/10/15. + */ +public class LocaleHelper { + + private static final String SELECTED_LANGUAGE = "Locale.Helper.Selected.Language"; + + public static void onCreate(Context context) { + String lang = getPersistedData(context, Locale.getDefault().getLanguage()); + setLocale(context, lang); + } + + public static void onCreate(Context context, String defaultLanguage) { + String lang = getPersistedData(context, defaultLanguage); + setLocale(context, lang); + } + + public static String getLanguage(Context context) { + return getPersistedData(context, Locale.getDefault().getLanguage()); + } + + public static void setLocale(Context context, String language) { + persist(context, language); + updateResources(context, language); + } + + private static String getPersistedData(Context context, String defaultLanguage) { + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); + return preferences.getString(SELECTED_LANGUAGE, defaultLanguage); + } + + private static void persist(Context context, String language) { + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); + SharedPreferences.Editor editor = preferences.edit(); + + editor.putString(SELECTED_LANGUAGE, language); + editor.apply(); + } + + private static void updateResources(Context context, String language) { + Locale locale = new Locale(language); + Locale.setDefault(locale); + + Resources resources = context.getResources(); + + Configuration configuration = resources.getConfiguration(); + configuration.locale = locale; + + resources.updateConfiguration(configuration, resources.getDisplayMetrics()); + } +} \ No newline at end of file diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index 2d26f7f214..dff9c3cfdc 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -13,6 +13,12 @@ + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 39610848f5..47f1ac7f19 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -154,5 +154,7 @@ Pump status available in NS Manual enacts LOOP DISABLED BY CONSTRAINTS + Czech language + English language