diff options
author | Mert Tumer <merttumer@outlook.com> | 2018-09-18 23:29:57 +0300 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2018-10-18 12:32:15 +0200 |
commit | f2e35a695671028b32139df1824ff536e7610d35 (patch) | |
tree | 0f9e7f4858943b11ab34451f9d9075422b293234 /android/source/src/java/org/libreoffice/LocaleHelper.java | |
parent | 81974604d859da8365146ce126f3584d902224b8 (diff) |
Added language support on Android Viewer
Change-Id: I05a189dcee9cf4415ce59771da03c08cf0fef6c4
Signed-off-by: Mert Tumer <merttumer@outlook.com>
Reviewed-on: https://gerrit.libreoffice.org/60727
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'android/source/src/java/org/libreoffice/LocaleHelper.java')
-rw-r--r-- | android/source/src/java/org/libreoffice/LocaleHelper.java | 56 |
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); + } +} |