Brasil language, better working Locale setting
This commit is contained in:
parent
776e1361df
commit
f399f8bb1f
11 changed files with 60 additions and 102 deletions
|
@ -78,7 +78,7 @@ public class MainActivity extends NoSplashAppCompatActivity {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
Iconify.with(new FontAwesomeModule());
|
Iconify.with(new FontAwesomeModule());
|
||||||
LocaleHelper.onCreate(this, "en");
|
LocaleHelper.INSTANCE.update(getApplicationContext());
|
||||||
|
|
||||||
setContentView(R.layout.activity_main);
|
setContentView(R.layout.activity_main);
|
||||||
setSupportActionBar(findViewById(R.id.toolbar));
|
setSupportActionBar(findViewById(R.id.toolbar));
|
||||||
|
@ -117,24 +117,6 @@ public class MainActivity extends NoSplashAppCompatActivity {
|
||||||
VersionCheckerUtilsKt.triggerCheckVersion();
|
VersionCheckerUtilsKt.triggerCheckVersion();
|
||||||
|
|
||||||
FabricPrivacy.setUserStats();
|
FabricPrivacy.setUserStats();
|
||||||
}
|
|
||||||
|
|
||||||
private void checkPluginPreferences(ViewPager viewPager) {
|
|
||||||
if (pluginPreferencesMenuItem == null) return;
|
|
||||||
if (((TabPageAdapter) viewPager.getAdapter()).getPluginAt(viewPager.getCurrentItem()).getPreferencesId() != -1)
|
|
||||||
pluginPreferencesMenuItem.setEnabled(true);
|
|
||||||
else pluginPreferencesMenuItem.setEnabled(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPostCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
|
|
||||||
super.onPostCreate(savedInstanceState, persistentState);
|
|
||||||
actionBarDrawerToggle.syncState();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onResume() {
|
|
||||||
super.onResume();
|
|
||||||
|
|
||||||
setupTabs();
|
setupTabs();
|
||||||
setupViews();
|
setupViews();
|
||||||
|
@ -143,8 +125,7 @@ public class MainActivity extends NoSplashAppCompatActivity {
|
||||||
.toObservable(EventRebuildTabs.class)
|
.toObservable(EventRebuildTabs.class)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(event -> {
|
.subscribe(event -> {
|
||||||
String lang = SP.getString(R.string.key_language, "en");
|
LocaleHelper.INSTANCE.update(getApplicationContext());
|
||||||
LocaleHelper.setLocale(getApplicationContext(), lang);
|
|
||||||
if (event.getRecreate()) {
|
if (event.getRecreate()) {
|
||||||
recreate();
|
recreate();
|
||||||
} else {
|
} else {
|
||||||
|
@ -175,9 +156,22 @@ public class MainActivity extends NoSplashAppCompatActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void checkPluginPreferences(ViewPager viewPager) {
|
||||||
|
if (pluginPreferencesMenuItem == null) return;
|
||||||
|
if (((TabPageAdapter) viewPager.getAdapter()).getPluginAt(viewPager.getCurrentItem()).getPreferencesId() != -1)
|
||||||
|
pluginPreferencesMenuItem.setEnabled(true);
|
||||||
|
else pluginPreferencesMenuItem.setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPostCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
|
||||||
super.onPause();
|
super.onPostCreate(savedInstanceState, persistentState);
|
||||||
|
actionBarDrawerToggle.syncState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
disposable.clear();
|
disposable.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,9 @@ import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
||||||
import info.nightscout.androidaps.plugins.constraints.dstHelper.DstHelperPlugin;
|
import info.nightscout.androidaps.plugins.constraints.dstHelper.DstHelperPlugin;
|
||||||
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
|
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
|
||||||
import info.nightscout.androidaps.plugins.constraints.safety.SafetyPlugin;
|
import info.nightscout.androidaps.plugins.constraints.safety.SafetyPlugin;
|
||||||
|
import info.nightscout.androidaps.plugins.constraints.signatureVerifier.SignatureVerifierPlugin;
|
||||||
import info.nightscout.androidaps.plugins.constraints.storage.StorageConstraintPlugin;
|
import info.nightscout.androidaps.plugins.constraints.storage.StorageConstraintPlugin;
|
||||||
|
import info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerPlugin;
|
||||||
import info.nightscout.androidaps.plugins.general.actions.ActionsPlugin;
|
import info.nightscout.androidaps.plugins.general.actions.ActionsPlugin;
|
||||||
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin;
|
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin;
|
||||||
import info.nightscout.androidaps.plugins.general.careportal.CareportalPlugin;
|
import info.nightscout.androidaps.plugins.general.careportal.CareportalPlugin;
|
||||||
|
@ -48,9 +50,7 @@ import info.nightscout.androidaps.plugins.general.nsclient.receivers.AckAlarmRec
|
||||||
import info.nightscout.androidaps.plugins.general.nsclient.receivers.DBAccessReceiver;
|
import info.nightscout.androidaps.plugins.general.nsclient.receivers.DBAccessReceiver;
|
||||||
import info.nightscout.androidaps.plugins.general.overview.OverviewPlugin;
|
import info.nightscout.androidaps.plugins.general.overview.OverviewPlugin;
|
||||||
import info.nightscout.androidaps.plugins.general.persistentNotification.PersistentNotificationPlugin;
|
import info.nightscout.androidaps.plugins.general.persistentNotification.PersistentNotificationPlugin;
|
||||||
import info.nightscout.androidaps.plugins.constraints.signatureVerifier.SignatureVerifierPlugin;
|
|
||||||
import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin;
|
import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin;
|
||||||
import info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerPlugin;
|
|
||||||
import info.nightscout.androidaps.plugins.general.wear.WearPlugin;
|
import info.nightscout.androidaps.plugins.general.wear.WearPlugin;
|
||||||
import info.nightscout.androidaps.plugins.general.xdripStatusline.StatuslinePlugin;
|
import info.nightscout.androidaps.plugins.general.xdripStatusline.StatuslinePlugin;
|
||||||
import info.nightscout.androidaps.plugins.insulin.InsulinOrefFreePeakPlugin;
|
import info.nightscout.androidaps.plugins.insulin.InsulinOrefFreePeakPlugin;
|
||||||
|
@ -88,6 +88,7 @@ import info.nightscout.androidaps.receivers.NSAlarmReceiver;
|
||||||
import info.nightscout.androidaps.receivers.TimeDateOrTZChangeReceiver;
|
import info.nightscout.androidaps.receivers.TimeDateOrTZChangeReceiver;
|
||||||
import info.nightscout.androidaps.services.Intents;
|
import info.nightscout.androidaps.services.Intents;
|
||||||
import info.nightscout.androidaps.utils.FabricPrivacy;
|
import info.nightscout.androidaps.utils.FabricPrivacy;
|
||||||
|
import info.nightscout.androidaps.utils.LocaleHelper;
|
||||||
import io.fabric.sdk.android.Fabric;
|
import io.fabric.sdk.android.Fabric;
|
||||||
|
|
||||||
import static info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerUtilsKt.triggerCheckVersion;
|
import static info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerUtilsKt.triggerCheckVersion;
|
||||||
|
@ -124,6 +125,7 @@ public class MainApp extends Application {
|
||||||
log.debug("onCreate");
|
log.debug("onCreate");
|
||||||
sInstance = this;
|
sInstance = this;
|
||||||
sResources = getResources();
|
sResources = getResources();
|
||||||
|
LocaleHelper.INSTANCE.update(this);
|
||||||
sConstraintsChecker = new ConstraintChecker();
|
sConstraintsChecker = new ConstraintChecker();
|
||||||
sDatabaseHelper = OpenHelperManager.getHelper(sInstance, DatabaseHelper.class);
|
sDatabaseHelper = OpenHelperManager.getHelper(sInstance, DatabaseHelper.class);
|
||||||
|
|
||||||
|
|
|
@ -70,8 +70,6 @@ public class PreferencesActivity extends PreferenceActivity implements SharedPre
|
||||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||||
RxBus.INSTANCE.send(new EventPreferenceChange(key));
|
RxBus.INSTANCE.send(new EventPreferenceChange(key));
|
||||||
if (key.equals("language")) {
|
if (key.equals("language")) {
|
||||||
String lang = sharedPreferences.getString("language", "en");
|
|
||||||
LocaleHelper.setLocale(getApplicationContext(), lang);
|
|
||||||
RxBus.INSTANCE.send(new EventRebuildTabs(true));
|
RxBus.INSTANCE.send(new EventRebuildTabs(true));
|
||||||
//recreate() does not update language so better close settings
|
//recreate() does not update language so better close settings
|
||||||
finish();
|
finish();
|
||||||
|
|
|
@ -17,7 +17,7 @@ class EventTidepoolStatus(val status: String) : Event() {
|
||||||
log.debug("New status: $status")
|
log.debug("New status: $status")
|
||||||
}
|
}
|
||||||
|
|
||||||
private var timeFormat = SimpleDateFormat("HH:mm:ss", LocaleHelper.getLocale())
|
private var timeFormat = SimpleDateFormat("HH:mm:ss", LocaleHelper.currentLocale())
|
||||||
|
|
||||||
fun toPreparedHtml(): StringBuilder {
|
fun toPreparedHtml(): StringBuilder {
|
||||||
val stringBuilder = StringBuilder()
|
val stringBuilder = StringBuilder()
|
||||||
|
|
|
@ -91,8 +91,7 @@ public class SWDefinition {
|
||||||
.preferenceId(R.string.key_language).label(R.string.language)
|
.preferenceId(R.string.key_language).label(R.string.language)
|
||||||
.comment(R.string.setupwizard_language_prompt))
|
.comment(R.string.setupwizard_language_prompt))
|
||||||
.validator(() -> {
|
.validator(() -> {
|
||||||
String lang = SP.getString("language", "en");
|
LocaleHelper.INSTANCE.update(MainApp.instance().getApplicationContext());
|
||||||
LocaleHelper.setLocale(MainApp.instance().getApplicationContext(), lang);
|
|
||||||
return SP.contains(R.string.key_language);
|
return SP.contains(R.string.key_language);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ public class SetupWizardActivity extends NoSplashAppCompatActivity {
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
LocaleHelper.onCreate(this, "en");
|
LocaleHelper.INSTANCE.update(getApplicationContext());
|
||||||
setContentView(R.layout.activity_setupwizard);
|
setContentView(R.layout.activity_setupwizard);
|
||||||
|
|
||||||
scrollView = (ScrollView) findViewById(R.id.sw_scrollview);
|
scrollView = (ScrollView) findViewById(R.id.sw_scrollview);
|
||||||
|
|
|
@ -124,7 +124,7 @@ public class FabricPrivacy {
|
||||||
.replace(".net/", ":");
|
.replace(".net/", ":");
|
||||||
|
|
||||||
MainApp.getFirebaseAnalytics().setUserProperty("Mode", BuildConfig.APPLICATION_ID + "-" + closedLoopEnabled);
|
MainApp.getFirebaseAnalytics().setUserProperty("Mode", BuildConfig.APPLICATION_ID + "-" + closedLoopEnabled);
|
||||||
MainApp.getFirebaseAnalytics().setUserProperty("Language", LocaleHelper.getLanguage());
|
MainApp.getFirebaseAnalytics().setUserProperty("Language", LocaleHelper.INSTANCE.currentLanguage());
|
||||||
MainApp.getFirebaseAnalytics().setUserProperty("Version", BuildConfig.VERSION);
|
MainApp.getFirebaseAnalytics().setUserProperty("Version", BuildConfig.VERSION);
|
||||||
MainApp.getFirebaseAnalytics().setUserProperty("HEAD", BuildConfig.HEAD);
|
MainApp.getFirebaseAnalytics().setUserProperty("HEAD", BuildConfig.HEAD);
|
||||||
MainApp.getFirebaseAnalytics().setUserProperty("Remote", remote);
|
MainApp.getFirebaseAnalytics().setUserProperty("Remote", remote);
|
||||||
|
|
|
@ -1,69 +0,0 @@
|
||||||
package info.nightscout.androidaps.utils;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.content.res.Configuration;
|
|
||||||
import android.content.res.Resources;
|
|
||||||
import android.preference.PreferenceManager;
|
|
||||||
|
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class is used to change your application locale and persist this change for the next time
|
|
||||||
* that your app is going to be used.
|
|
||||||
* <p/>
|
|
||||||
* You can also change the locale of your application on the fly by using the setLocale method.
|
|
||||||
* <p/>
|
|
||||||
* Created by gunhansancar on 07/10/15.
|
|
||||||
*/
|
|
||||||
public class LocaleHelper {
|
|
||||||
|
|
||||||
private static final String SELECTED_LANGUAGE = "Locale.Helper.Selected.Language";
|
|
||||||
|
|
||||||
public static void onCreate(Context context) {
|
|
||||||
String lang = getPersistedData(Locale.getDefault().getLanguage());
|
|
||||||
setLocale(context, lang);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void onCreate(Context context, String defaultLanguage) {
|
|
||||||
String lang = getPersistedData(defaultLanguage);
|
|
||||||
setLocale(context, lang);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getLanguage() {
|
|
||||||
return getPersistedData(Locale.getDefault().getLanguage());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setLocale(Context context, String language) {
|
|
||||||
persist(context, language);
|
|
||||||
updateResources(context, language);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getPersistedData(String defaultLanguage) {
|
|
||||||
return SP.getString(SELECTED_LANGUAGE, defaultLanguage);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void persist(Context context, String language) {
|
|
||||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
|
|
||||||
SharedPreferences.Editor editor = preferences.edit();
|
|
||||||
|
|
||||||
editor.putString(SELECTED_LANGUAGE, language);
|
|
||||||
editor.apply();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void updateResources(Context context, String language) {
|
|
||||||
Locale locale = new Locale(language);
|
|
||||||
Locale.setDefault(locale);
|
|
||||||
|
|
||||||
Resources resources = context.getResources();
|
|
||||||
|
|
||||||
Configuration configuration = resources.getConfiguration();
|
|
||||||
configuration.locale = locale;
|
|
||||||
|
|
||||||
resources.updateConfiguration(configuration, resources.getDisplayMetrics());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Locale getLocale() {
|
|
||||||
return new Locale(getPersistedData("en"));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
package info.nightscout.androidaps.utils
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import info.nightscout.androidaps.R
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
|
object LocaleHelper {
|
||||||
|
fun update(context: Context) =
|
||||||
|
updateResources(context, currentLanguage())
|
||||||
|
|
||||||
|
fun currentLanguage(): String =
|
||||||
|
SP.getString(R.string.key_language, Locale.getDefault().language)
|
||||||
|
|
||||||
|
fun currentLocale(): Locale =
|
||||||
|
Locale(SP.getString(R.string.key_language, Locale.getDefault().language))
|
||||||
|
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
private fun updateResources(context: Context, language: String) {
|
||||||
|
var locale = Locale(language)
|
||||||
|
if (language.contains("_")) {
|
||||||
|
// language with country like pt_BR defined in arrays.xml
|
||||||
|
val lang = language.substring(0, 2)
|
||||||
|
val country = language.substring(3, 5)
|
||||||
|
locale = Locale(lang, country)
|
||||||
|
}
|
||||||
|
|
||||||
|
Locale.setDefault(locale)
|
||||||
|
val resources = context.resources
|
||||||
|
resources.configuration.setLocale(locale)
|
||||||
|
resources.updateConfiguration(resources.configuration, resources.displayMetrics)
|
||||||
|
}
|
||||||
|
}
|
|
@ -24,6 +24,7 @@
|
||||||
<item>@string/ko_lang</item>
|
<item>@string/ko_lang</item>
|
||||||
<item>@string/lt_lang</item>
|
<item>@string/lt_lang</item>
|
||||||
<item>@string/pt_lang</item>
|
<item>@string/pt_lang</item>
|
||||||
|
<item>@string/pt_BR_lang</item>
|
||||||
<item>@string/ro_lang</item>
|
<item>@string/ro_lang</item>
|
||||||
<item>@string/ru_lang</item>
|
<item>@string/ru_lang</item>
|
||||||
<item>@string/sk_lang</item>
|
<item>@string/sk_lang</item>
|
||||||
|
@ -46,6 +47,7 @@
|
||||||
<item>ko</item>
|
<item>ko</item>
|
||||||
<item>lt</item>
|
<item>lt</item>
|
||||||
<item>pt</item>
|
<item>pt</item>
|
||||||
|
<item>pt_BR</item>
|
||||||
<item>ro</item>
|
<item>ro</item>
|
||||||
<item>ru</item>
|
<item>ru</item>
|
||||||
<item>sk</item>
|
<item>sk</item>
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
<string name="lt_lang" translatable="false">Lithuanian</string>
|
<string name="lt_lang" translatable="false">Lithuanian</string>
|
||||||
<string name="pl_lang" translatable="false">Polish</string>
|
<string name="pl_lang" translatable="false">Polish</string>
|
||||||
<string name="pt_lang" translatable="false">Portuguese</string>
|
<string name="pt_lang" translatable="false">Portuguese</string>
|
||||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
<string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string>
|
||||||
<string name="ro_lang" translatable="false">Romanian</string>
|
<string name="ro_lang" translatable="false">Romanian</string>
|
||||||
<string name="ru_lang" translatable="false">Russian</string>
|
<string name="ru_lang" translatable="false">Russian</string>
|
||||||
<string name="sk_lang" translatable="false">Slovak</string>
|
<string name="sk_lang" translatable="false">Slovak</string>
|
||||||
|
|
Loading…
Reference in a new issue