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
import android.app.Application
import android.content.Context
import com.crashlytics.android.Crashlytics
import io.fabric.sdk.android.Fabric
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
*/

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

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

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

@ -1,9 +1,6 @@
package net.pokeranalytics.android.util
import android.annotation.TargetApi
import android.content.Context
import android.os.Build
import android.preference.PreferenceManager
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)
return setLocale(context, lang)
}
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
/**
*
*/
fun setCurrentLocale(context: Context, language: String) {
Preferences.setString(Preferences.Keys.LOCALE_CODE, language, context)
}

Loading…
Cancel
Save