From 2a742807e3b135a82bd99ca931d5455bea59c39b Mon Sep 17 00:00:00 2001 From: stom79 Date: Sat, 15 Dec 2018 10:59:43 +0100 Subject: [PATCH] Languages in their original names --- .../mastodon/activities/BaseMainActivity.java | 5 +- .../mastodon/activities/MainApplication.java | 4 +- .../mastodon/fragments/SettingsFragment.java | 41 +++-- .../gouv/etalab/mastodon/helper/Helper.java | 161 ++++++++++++++---- app/src/main/res/values/strings.xml | 7 + 5 files changed, 163 insertions(+), 55 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java index bc20d67d2..18e6b91e6 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java @@ -25,6 +25,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.PackageManager; +import android.content.res.Configuration; import android.database.sqlite.SQLiteDatabase; import android.graphics.PorterDuff; import android.net.Uri; @@ -725,7 +726,9 @@ public abstract class BaseMainActivity extends BaseActivity tabPosition.put("art",i); } - if( i > 3 && !Helper.isTablet(getApplicationContext())){ + if( (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) + tabLayout.setTabMode(TabLayout.MODE_FIXED); + else if( i > 3 && !Helper.isTablet(getApplicationContext())){ tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); }else{ tabLayout.setTabMode(TabLayout.MODE_FIXED); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainApplication.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainApplication.java index 7822ef101..9dd957996 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainApplication.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainApplication.java @@ -53,8 +53,8 @@ public class MainApplication extends MultiDexApplication { try { List SUPPORTED_LOCALES = new ArrayList<>(); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - String defaultLocaleString = sharedpreferences.getString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(Locale.getDefault())); - Locale defaultLocale = Helper.restoreLocaleFromString(defaultLocaleString); + String defaultLocaleString = sharedpreferences.getString(Helper.SET_DEFAULT_LOCALE_NEW, Helper.getDefaultLocale()); + Locale defaultLocale = new Locale(defaultLocaleString); SUPPORTED_LOCALES.add(defaultLocale); LocaleChanger.initialize(getApplicationContext(), SUPPORTED_LOCALES); }catch (Exception ignored){ignored.printStackTrace();} diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java index 861d93955..2d06196de 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java @@ -636,6 +636,8 @@ public class SettingsFragment extends Fragment { }); + String currentLanguage = sharedpreferences.getString(Helper.SET_DEFAULT_LOCALE_NEW, Helper.localeToStringStorage(Locale.getDefault())); + Locale currentLocale = Helper.restoreLocaleFromString(currentLanguage); final Spinner set_change_locale = rootView.findViewById(R.id.set_change_locale); ArrayAdapter adapterLocale = new ArrayAdapter<>(context, android.R.layout.simple_spinner_dropdown_item, Helper.getLocales(context)); @@ -651,75 +653,78 @@ public class SettingsFragment extends Fragment { SharedPreferences.Editor editor = sharedpreferences.edit(); switch (position) { case 0: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(Locale.getDefault())); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, Helper.getDefaultLocale()); editor.commit(); break; case 1: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(Locale.ENGLISH)); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "en"); editor.commit(); break; case 2: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(Locale.FRANCE)); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "fr"); editor.commit(); break; case 3: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(Locale.GERMAN)); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "de"); editor.commit(); break; case 4: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(Locale.ITALIAN)); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "it"); editor.commit(); break; case 5: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(Locale.JAPAN)); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "ja"); editor.commit(); break; case 6: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(Locale.SIMPLIFIED_CHINESE)); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW,"zh-TW"); editor.commit(); break; case 7: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(Locale.TRADITIONAL_CHINESE)); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "zh-CN"); editor.commit(); break; case 8: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(new Locale("eu"))); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "eu"); editor.commit(); break; case 9: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(new Locale("ar"))); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "ar"); editor.commit(); break; case 10: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(new Locale("nl"))); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "nl"); editor.commit(); break; case 11: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(new Locale("gl"))); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "gl"); editor.commit(); break; case 12: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(new Locale("el"))); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "el"); editor.commit(); break; case 13: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(new Locale("pt"))); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "pt"); editor.commit(); break; case 14: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(new Locale("es"))); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "es"); editor.commit(); break; case 15: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(new Locale("pl"))); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "pl"); editor.commit(); break; case 16: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(new Locale("sr"))); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "sr"); editor.commit(); break; case 17: - editor.putString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(new Locale("uk"))); + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "uk"); + editor.commit(); + case 18: + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "ru"); editor.commit(); break; } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index 867c20f0e..200da9ea0 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -282,7 +282,7 @@ public class Helper { public static final String SET_DISPLAY_VIDEO_PREVIEWS= "set_display_video_previews"; public static final String SET_OLD_DIRECT_TIMELINE = "sset_old_direct_timeline"; public static final String SET_BATTERY_PROFILE = "set_battery_profile"; - public static final String SET_DEFAULT_LOCALE = "set_default_locale"; + public static final String SET_DEFAULT_LOCALE_NEW = "set_default_locale_new"; public static final int S_512KO = 1; public static final int S_1MO = 2; public static final int S_2MO = 3; @@ -2900,47 +2900,140 @@ public class Helper { } } - public static String[] getLocales(Context context){ - String[] locale = new String[18]; + String[] locale = new String[19]; locale[0] = context.getString(R.string.default_language); - locale[1] = Locale.ENGLISH.getDisplayLanguage(); - locale[2] = Locale.FRANCE.getDisplayLanguage(); - locale[3] = Locale.GERMAN.getDisplayLanguage(); - locale[4] = Locale.ITALIAN.getDisplayLanguage(); - locale[5] = Locale.JAPAN.getDisplayLanguage(); - locale[6] = Locale.SIMPLIFIED_CHINESE.getDisplayLanguage(); - locale[7] = Locale.TRADITIONAL_CHINESE.getDisplayLanguage(); - locale[8] = new Locale("eu").getDisplayLanguage(); - locale[9] = new Locale("ar").getDisplayLanguage(); - locale[10] = new Locale("nl").getDisplayLanguage(); - locale[11] = new Locale("gl").getDisplayLanguage(); - locale[12] = new Locale("el").getDisplayLanguage(); - locale[13] = new Locale("pt").getDisplayLanguage(); - locale[14] = new Locale("es").getDisplayLanguage(); - locale[15] = new Locale("pl").getDisplayLanguage(); - locale[16] = new Locale("sr").getDisplayLanguage(); - locale[17] = new Locale("uk").getDisplayLanguage(); + locale[1] = context.getString(R.string.english); + locale[2] = context.getString(R.string.french); + locale[3] = context.getString(R.string.german); + locale[4] = context.getString(R.string.italian); + locale[5] = context.getString(R.string.japanese); + locale[6] = context.getString(R.string.simplified_chinese); + locale[7] = context.getString(R.string.traditional_chinese); + locale[8] = context.getString(R.string.basque); + locale[9] = context.getString(R.string.arabic); + locale[10] = context.getString(R.string.dutch); + locale[11] = context.getString(R.string.galician); + locale[12] = context.getString(R.string.greek); + locale[13] = context.getString(R.string.portuguese); + locale[14] = context.getString(R.string.spanish); + locale[15] = context.getString(R.string.polish); + locale[16] = context.getString(R.string.serbian); + locale[17] = context.getString(R.string.ukrainian); + locale[18] = context.getString(R.string.russian); + return locale; + } + + + public static String getLocalesTwoChars(int stringLocaleId){ + switch (stringLocaleId){ + case R.string.default_language: + return Locale.getDefault().getLanguage(); + case R.string.english: + return "en"; + case R.string.french: + return "fr"; + case R.string.arabic: + return "ar"; + case R.string.kabyle: + return "kab"; + case R.string.italian: + return "it"; + case R.string.catalan: + return "ca"; + case R.string.german: + return "de"; + case R.string.spanish: + return "es"; + case R.string.welsh: + return "cy"; + case R.string.polish: + return "pl"; + case R.string.traditional_chinese: + return "zh-TW"; + case R.string.simplified_chinese: + return "zh-CN"; + case R.string.basque: + return "eu"; + case R.string.hindi: + return "hi"; + case R.string.japanese: + return "ja"; + case R.string.dutch: + return "nl"; + case R.string.galician: + return "gl"; + case R.string.greek: + return "el"; + case R.string.portuguese: + return "pt"; + case R.string.serbian: + return "sr"; + case R.string.ukrainian: + return "uk"; + case R.string.russian: + return "ru"; + default: + return Locale.getDefault().getLanguage(); + } + } + + public static String getDefaultLocale(){ + String locale = Locale.getDefault().getCountry(); + if( locale.startsWith("zh")){ + if( Locale.getDefault().getLanguage().equals("TW") || Locale.getDefault().getLanguage().equals("CN")) + locale = Locale.getDefault().getCountry() + "-" + Locale.getDefault().getLanguage(); + else + locale = Locale.getDefault().getCountry() + "-TW"; + } return locale; } public static int languageSpinnerPosition(Context context){ SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - String defaultLocaleString = sharedpreferences.getString(Helper.SET_DEFAULT_LOCALE, Helper.localeToStringStorage(Locale.getDefault())); - Locale defaultLocale = Helper.restoreLocaleFromString(defaultLocaleString); - if( defaultLocale == null) - return 0; - String language = defaultLocale.getDisplayLanguage(); - String[] locales = getLocales(context); - int index = 0; - for (int i=0;iEuskara हिंदी 日本語 + Nederlands + Galego + Ελληνικά + Português + Српски + Українська + Русский \ No newline at end of file