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();
+ }
}
}