Working on set language

feature/top10
Aurelien Hubert 7 years ago
parent 6fd1d67719
commit b2d64e08de
  1. 5
      app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt
  2. 1
      app/src/main/java/net/pokeranalytics/android/ui/activity/components/PokerAnalyticsActivity.kt
  3. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
  4. 2
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt
  5. 71
      app/src/main/java/net/pokeranalytics/android/util/LocaleUtils.kt

@ -1,7 +1,6 @@
package net.pokeranalytics.android package net.pokeranalytics.android
import android.app.Application import android.app.Application
import android.content.Context
import com.crashlytics.android.Crashlytics import com.crashlytics.android.Crashlytics
import io.fabric.sdk.android.Fabric import io.fabric.sdk.android.Fabric
import io.realm.Realm import io.realm.Realm
@ -70,10 +69,6 @@ class PokerAnalyticsApplication : Application() {
} }
} }
override fun attachBaseContext(base: Context?) {
super.attachBaseContext(base)
}
/** /**
* Create fake sessions if we have less than 10 sessions * Create fake sessions if we have less than 10 sessions
*/ */

@ -12,6 +12,7 @@ import com.google.android.libraries.places.api.model.PlaceLikelihood
import io.realm.Realm import io.realm.Realm
import net.pokeranalytics.android.model.realm.Location import net.pokeranalytics.android.model.realm.Location
import net.pokeranalytics.android.util.LocationManager import net.pokeranalytics.android.util.LocationManager
import java.util.*
open class PokerAnalyticsActivity : AppCompatActivity() { open class PokerAnalyticsActivity : AppCompatActivity() {

@ -95,7 +95,7 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta
SettingRow.CONTACT_US -> parentActivity.openContactMail(R.string.contact) SettingRow.CONTACT_US -> parentActivity.openContactMail(R.string.contact)
SettingRow.BUG_REPORT -> parentActivity.openContactMail(R.string.bug_report_subject) SettingRow.BUG_REPORT -> parentActivity.openContactMail(R.string.bug_report_subject)
SettingRow.LANGUAGE -> { SettingRow.LANGUAGE -> {
LocaleUtils.setLocale(requireContext(), "fr") LocaleUtils.setCurrentLocale(requireContext(), "fr")
activity?.recreate() activity?.recreate()
} }
SettingRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@SettingsFragment, SettingsFragment.REQUEST_CODE_CURRENCY) SettingRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@SettingsFragment, SettingsFragment.REQUEST_CODE_CURRENCY)

@ -50,7 +50,7 @@ enum class SettingRow : RowRepresentable {
rows.addAll(arrayListOf(FOLLOW_US)) rows.addAll(arrayListOf(FOLLOW_US))
rows.add(CustomizableRowRepresentable(customViewType = RowViewType.HEADER_TITLE, resId = R.string.preferences)) rows.add(CustomizableRowRepresentable(customViewType = RowViewType.HEADER_TITLE, resId = R.string.preferences))
rows.addAll(arrayListOf(CURRENCY)) rows.addAll(arrayListOf(LANGUAGE, CURRENCY))
rows.add( rows.add(
CustomizableRowRepresentable( CustomizableRowRepresentable(

@ -1,9 +1,6 @@
package net.pokeranalytics.android.util package net.pokeranalytics.android.util
import android.annotation.TargetApi
import android.content.Context import android.content.Context
import android.os.Build
import android.preference.PreferenceManager
import java.util.* import java.util.*
@ -26,69 +23,11 @@ class LocaleUtils {
} }
private val SELECTED_LANGUAGE = "Locale.Helper.Selected.Language" /**
*
fun onAttach(context: Context): Context { */
val lang = getPersistedData(context, Locale.getDefault().language) fun setCurrentLocale(context: Context, language: String) {
return setLocale(context, lang) Preferences.setString(Preferences.Keys.LOCALE_CODE, language, context)
}
fun onAttach(context: Context, defaultLanguage: String): Context {
val lang = getPersistedData(context, defaultLanguage)
return setLocale(context, lang)
}
fun getLanguage(context: Context): String? {
return getPersistedData(context, Locale.getDefault().language)
}
fun setLocale(context: Context, language: String?): Context {
persist(context, language)
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
updateResources(context, language)
} else updateResourcesLegacy(context, language)
}
private fun getPersistedData(context: Context, defaultLanguage: String): String? {
val preferences = PreferenceManager.getDefaultSharedPreferences(context)
return preferences.getString(SELECTED_LANGUAGE, defaultLanguage)
}
private fun persist(context: Context, language: String?) {
val preferences = PreferenceManager.getDefaultSharedPreferences(context)
val editor = preferences.edit()
editor.putString(SELECTED_LANGUAGE, language)
editor.apply()
}
@TargetApi(Build.VERSION_CODES.N)
private fun updateResources(context: Context, language: String?): Context {
val locale = Locale(language)
Locale.setDefault(locale)
val configuration = context.resources.configuration
configuration.setLocale(locale)
configuration.setLayoutDirection(locale)
return context.createConfigurationContext(configuration)
}
private fun updateResourcesLegacy(context: Context, language: String?): Context {
val locale = Locale(language)
Locale.setDefault(locale)
val resources = context.resources
val configuration = resources.configuration
configuration.locale = locale
configuration.setLayoutDirection(locale)
resources.updateConfiguration(configuration, resources.displayMetrics)
return context
} }

Loading…
Cancel
Save