diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index 51cb77f7f..bfe237483 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -1,5 +1,42 @@ package com.habitrpg.android.habitica.ui.activities; +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.content.res.Configuration; +import android.database.sqlite.SQLiteDoneException; +import android.databinding.DataBindingUtil; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.drawable.BitmapDrawable; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.preference.PreferenceManager; +import android.support.design.widget.TabLayout; +import android.support.v4.app.FragmentTransaction; +import android.support.v4.content.FileProvider; +import android.support.v4.view.GravityCompat; +import android.support.v4.widget.DrawerLayout; +import android.support.v7.app.AlertDialog; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.Gravity; +import android.view.KeyEvent; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.TextView; + import com.amplitude.api.Amplitude; import com.habitrpg.android.habitica.APIHelper; import com.habitrpg.android.habitica.HabiticaApplication; @@ -33,6 +70,7 @@ import com.habitrpg.android.habitica.events.commands.OpenMenuItemCommand; import com.habitrpg.android.habitica.events.commands.SellItemCommand; import com.habitrpg.android.habitica.events.commands.UnlockPathCommand; import com.habitrpg.android.habitica.events.commands.UpdateUserCommand; +import com.habitrpg.android.habitica.helpers.LanguageHelper; import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager; import com.habitrpg.android.habitica.ui.AvatarView; import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel; @@ -92,41 +130,6 @@ import org.json.JSONObject; import org.solovyev.android.checkout.ActivityCheckout; import org.solovyev.android.checkout.Checkout; -import android.app.AlarmManager; -import android.app.PendingIntent; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.database.sqlite.SQLiteDoneException; -import android.databinding.DataBindingUtil; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.Rect; -import android.graphics.drawable.BitmapDrawable; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; -import android.preference.PreferenceManager; -import android.support.design.widget.TabLayout; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.content.FileProvider; -import android.support.v4.view.GravityCompat; -import android.support.v4.widget.DrawerLayout; -import android.support.v7.app.AlertDialog; -import android.support.v7.widget.Toolbar; -import android.util.Log; -import android.view.Gravity; -import android.view.KeyEvent; -import android.view.View; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.TextView; - import java.io.File; import java.util.ArrayList; import java.util.Calendar; @@ -134,6 +137,7 @@ import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.TimeZone; import java.util.concurrent.TimeUnit; @@ -220,6 +224,18 @@ public class MainActivity extends BaseActivity implements Action1, Ha public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); + LanguageHelper languageHelper = new LanguageHelper(sharedPreferences.getString("language","en")); + Locale.setDefault(languageHelper.getLocale()); + Configuration configuration = new Configuration(); + if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN){ + configuration.locale = languageHelper.getLocale(); + } else { + configuration.setLocale(languageHelper.getLocale()); + } + getResources().updateConfiguration(configuration, + getResources().getDisplayMetrics()); + if (!HabiticaApplication.checkUserAuthentication(this, hostConfig)) { return; } 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 9cb550120..43ee90568 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 @@ -23,6 +23,7 @@ import com.habitrpg.android.habitica.prefs.TimePreference; import com.habitrpg.android.habitica.ui.activities.ClassSelectionActivity; import com.habitrpg.android.habitica.ui.activities.MainActivity; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; +import com.magicmicky.habitrpgwrapper.lib.models.Preferences; import com.raizlabs.android.dbflow.runtime.transaction.BaseTransaction; import com.raizlabs.android.dbflow.runtime.transaction.TransactionListener; import com.raizlabs.android.dbflow.sql.builder.Condition; @@ -206,15 +207,14 @@ public class PreferencesFragment extends BasePreferencesFragment implements } } else if (key.equals("language")) { LanguageHelper languageHelper = new LanguageHelper(sharedPreferences.getString(key,"en")); + Locale.setDefault(languageHelper.getLocale()); Configuration configuration = new Configuration(); - if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN){ configuration.locale = languageHelper.getLocale(); } else { configuration.setLocale(languageHelper.getLocale()); } - getActivity().getResources().updateConfiguration(configuration, getActivity().getResources().getDisplayMetrics()); @@ -224,7 +224,11 @@ public class PreferencesFragment extends BasePreferencesFragment implements .compose(apiHelper.configureApiCallObserver()) .subscribe(new MergeUserCallback(activity, user), throwable -> { }); - apiHelper.apiService.getContent(languageHelper.getLanguageCode()) + + Preferences preferences = user.getPreferences(); + preferences.setLanguage(languageHelper.getLanguageCode()); + apiHelper.languageCode = preferences.getLanguage(); + apiHelper.apiService.getContent(apiHelper.languageCode) .compose(apiHelper.configureApiCallObserver()) .subscribe(contentResult -> { }, throwable -> {