diff --git a/Habitica/res/values/values.xml b/Habitica/res/values/values.xml index 031e924dd..d2354bad0 100644 --- a/Habitica/res/values/values.xml +++ b/Habitica/res/values/values.xml @@ -59,7 +59,7 @@ en bg de - en-rGB + en_GB es fr iw @@ -70,10 +70,10 @@ nl pl pt - pt-rBR + pt_BR ru zh - zh-rTW + zh_TW diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/LanguageHelper.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/LanguageHelper.java index 890b75679..722e8733f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/LanguageHelper.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/LanguageHelper.java @@ -11,38 +11,10 @@ public class LanguageHelper { private String languageCode = null; private boolean languageAvailable = false; - public LanguageHelper (String languagePreference) { - switch (languagePreference){ - case "en": - locale = new Locale("en"); - languageCode = "en"; - languageAvailable = true; - break; - case "bg": - locale = new Locale("bg"); - languageCode = "bg"; - languageAvailable = true; - break; - case "de": - locale = new Locale("de"); - languageCode = "de"; - languageAvailable = true; - break; - case "en-rGB": - locale = new Locale("en", "GB"); - languageCode = "en_GB"; - languageAvailable = true; - break; - case "es": - locale = new Locale("es"); - languageCode = "es"; - languageAvailable = true; - break; - case "fr": - locale = new Locale("fr"); - languageCode = "fr"; - languageAvailable = true; - break; + + public LanguageHelper (String languageSharedPref) { + + switch (languageSharedPref){ case "iw": locale = new Locale("iw"); languageCode = "he"; @@ -58,49 +30,19 @@ public class LanguageHelper { languageCode = "id"; languageAvailable = true; break; - case "it": - locale = new Locale("it"); - languageCode = "it"; - languageAvailable = true; - break; - case "ja": - locale = new Locale("ja"); - languageCode = "ja"; - languageAvailable = true; - break; - case "nl": - locale = new Locale("nl"); - languageCode = "nl"; - languageAvailable = true; - break; - case "pl": - locale = new Locale("pl"); - languageCode = "pl"; - languageAvailable = true; - break; case "pt": locale = new Locale("pt","PT"); languageCode = "pt"; languageAvailable = true; break; - case "pt-rBR": - locale = new Locale("pt","BR"); - languageCode = "pt_BR"; - languageAvailable = true; - break; - case "ru": - locale = new Locale("ru"); - languageCode = "ru"; - languageAvailable = true; - break; - case "zh": - locale = new Locale("zh"); - languageCode = "zh"; - languageAvailable = true; - break; - case "zh-rTW": - locale = new Locale("zh","TW"); - languageCode = "zh_TW"; + default: + if (languageSharedPref.contains("_")) { + String[] languageCodeParts = languageSharedPref.split("_"); + locale = new Locale(languageCodeParts[0],languageCodeParts[1]); + } else { + locale = new Locale(languageSharedPref); + } + languageCode = languageSharedPref; languageAvailable = true; break; } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java index 649aacefd..2bee55590 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java @@ -16,6 +16,7 @@ import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; import com.habitrpg.android.habitica.callbacks.MergeUserCallback; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.events.commands.UpdateUserCommand; +import com.habitrpg.android.habitica.helpers.LanguageHelper; import com.habitrpg.android.habitica.ui.fragments.setup.AvatarSetupFragment; import com.habitrpg.android.habitica.ui.fragments.setup.TaskSetupFragment; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; @@ -151,10 +152,13 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener, public void onClick(View v) { if (v == this.nextButton) { String currentDeviceLanguage = Locale.getDefault().getLanguage(); - apiHelper.apiService.registrationLanguage(currentDeviceLanguage) - .compose(apiHelper.configureApiCallObserver()) - .subscribe(new MergeUserCallback(this, user), throwable -> { - }); + LanguageHelper languageHelper = new LanguageHelper(currentDeviceLanguage); + if (languageHelper.isLanguageAvailable()){ + apiHelper.apiService.registrationLanguage(currentDeviceLanguage) + .compose(apiHelper.configureApiCallObserver()) + .subscribe(new MergeUserCallback(this, user), throwable -> { + }); + } if (this.pager.getCurrentItem() == 1) { List newTasks = this.taskSetupFragment.createSampleTasks(); this.completedSetup = true; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java index e60ad8a10..21596e51f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java @@ -224,6 +224,16 @@ public class PreferencesFragment extends BasePreferencesFragment implements .compose(apiHelper.configureApiCallObserver()) .subscribe(new MergeUserCallback(activity, user), throwable -> { }); + + if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1){ + Intent intent = new Intent(getActivity(), MainActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(intent); + } else { + Intent intent = new Intent(getActivity(), MainActivity.class); + this.startActivity(intent); + getActivity().finishAffinity(); + } } }