LibreOffice Module android (master) 1
LocaleHelper.java
Go to the documentation of this file.
1package org.libreoffice;
2
3import android.content.Context;
4import android.content.SharedPreferences;
5import android.content.res.Configuration;
6import android.content.res.Resources;
7import android.os.Build;
8import android.preference.PreferenceManager;
9
10import java.util.Locale;
11
12public class LocaleHelper {
13
14 private static final String SELECTED_LANG = "org.libreoffice.selected.lang";
15 // value for language that indicates that system's default language should be used
16 public static final String SYSTEM_DEFAULT_LANGUAGE = "SYSTEM_DEFAULT_LANGUAGE";
17
18 public static Context onAttach(Context context){
19 String lang = getPersistedData(context, Locale.getDefault().getLanguage());
20 return setLocale(context, lang);
21 }
22
23 public static Context setLocale(Context context, String lang) {
24 persist(context, lang);
25 return updateResources(context, lang);
26 }
27
28 @SuppressWarnings("deprecation")
29 private static Context updateResources(Context context, String lang) {
30 Locale locale;
31 if (lang.equals(SYSTEM_DEFAULT_LANGUAGE)) {
32 locale = Locale.getDefault();
33 } else {
34 locale = new Locale(lang);
35 }
36 Locale.setDefault(locale);
37
38 Resources res = context.getResources();
39 Configuration cfg = res.getConfiguration();
40 cfg.locale = locale;
41 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
42 cfg.setLayoutDirection(locale);
43
44 res.updateConfiguration(cfg, res.getDisplayMetrics());
45 return context;
46 }
47
48 private static void persist(Context context, String lang) {
49 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
50 preferences.edit().putString(SELECTED_LANG, lang);
51 preferences.edit().apply();
52 }
53
54 private static String getPersistedData(Context context, String lang) {
55 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
56 return preferences.getString(SELECTED_LANG, lang);
57 }
58}
static final String SELECTED_LANG
static Context onAttach(Context context)
static Context updateResources(Context context, String lang)
static String getPersistedData(Context context, String lang)
static Context setLocale(Context context, String lang)
static void persist(Context context, String lang)
static final String SYSTEM_DEFAULT_LANGUAGE