summaryrefslogtreecommitdiff
path: root/android/source/src/java/org/libreoffice/LocaleHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'android/source/src/java/org/libreoffice/LocaleHelper.java')
-rw-r--r--android/source/src/java/org/libreoffice/LocaleHelper.java56
1 files changed, 56 insertions, 0 deletions
diff --git a/android/source/src/java/org/libreoffice/LocaleHelper.java b/android/source/src/java/org/libreoffice/LocaleHelper.java
new file mode 100644
index 000000000000..26a31e431397
--- /dev/null
+++ b/android/source/src/java/org/libreoffice/LocaleHelper.java
@@ -0,0 +1,56 @@
+package org.libreoffice;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.os.Build;
+import android.preference.PreferenceManager;
+
+import java.util.Locale;
+
+public class LocaleHelper {
+
+ private static final String SELECTED_LANG = "org.libreoffice.selected.lang";
+
+ public static Context onAttach(Context context){
+ String lang = getPersistedData(context, Locale.getDefault().getLanguage());
+ return setLocale(context, lang);
+ }
+
+ public static Context onAttach(Context context, String defLang){
+ String lang = getPersistedData(context, defLang);
+ return setLocale(context, lang);
+ }
+
+ public static Context setLocale(Context context, String lang) {
+ persist(context, lang);
+ return updateResources(context, lang);
+ }
+
+ @SuppressWarnings("deprecation")
+ private static Context updateResources(Context context, String lang) {
+ Locale locale = new Locale(lang);
+ Locale.setDefault(locale);
+
+ Resources res = context.getResources();
+ Configuration cfg = res.getConfiguration();
+ cfg.locale = locale;
+ if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
+ cfg.setLayoutDirection(locale);
+
+ res.updateConfiguration(cfg, res.getDisplayMetrics());
+ return context;
+ }
+
+ private static void persist(Context context, String lang) {
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ preferences.edit().putString(SELECTED_LANG, lang);
+ preferences.edit().apply();
+ }
+
+ private static String getPersistedData(Context context, String lang) {
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ return preferences.getString(SELECTED_LANG, lang);
+ }
+}