mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-13 20:48:56 +01:00
Implement language switcher (#563)
* Implement language switching using BaseActivity * Add requested changes * Cleanup App.kt Imports and add pref_language_key * Acutally use @string for key * Use string resource for language preference title
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
package eu.kanade.tachiyomi.ui.base.activity
|
||||
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import eu.kanade.tachiyomi.util.LocaleHelper
|
||||
|
||||
abstract class BaseActivity : AppCompatActivity(), ActivityMixin {
|
||||
|
||||
override fun getActivity() = this
|
||||
init {
|
||||
LocaleHelper.updateCfg(this)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -110,6 +110,8 @@ class MainActivity : BaseActivity() {
|
||||
} else if (resultCode and SettingsActivity.FLAG_THEME_CHANGED != 0) {
|
||||
// Delay activity recreation to avoid fragment leaks.
|
||||
nav_view.post { recreate() }
|
||||
} else if (resultCode and SettingsActivity.FLAG_LANG_CHANGED != 0) {
|
||||
nav_view.post { recreate() }
|
||||
}
|
||||
} else {
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
|
||||
@@ -78,6 +78,7 @@ class SettingsActivity : BaseActivity(),
|
||||
companion object {
|
||||
const val FLAG_THEME_CHANGED = 0x1
|
||||
const val FLAG_DATABASE_CLEARED = 0x2
|
||||
const val FLAG_LANG_CHANGED = 0x4
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.util.LocaleHelper
|
||||
import eu.kanade.tachiyomi.util.plusAssign
|
||||
import eu.kanade.tachiyomi.widget.preference.IntListPreference
|
||||
import eu.kanade.tachiyomi.widget.preference.LibraryColumnsDialog
|
||||
@@ -17,6 +18,7 @@ import net.xpece.android.support.preference.MultiSelectListPreference
|
||||
import rx.Observable
|
||||
import rx.android.schedulers.AndroidSchedulers
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.util.*
|
||||
|
||||
class SettingsGeneralFragment : SettingsFragment(),
|
||||
PreferenceFragmentCompat.OnPreferenceDisplayDialogCallback {
|
||||
@@ -44,6 +46,8 @@ class SettingsGeneralFragment : SettingsFragment(),
|
||||
|
||||
val categoryUpdate: MultiSelectListPreference by bindPref(R.string.pref_library_update_categories_key)
|
||||
|
||||
val langPreference: IntListPreference by bindPref(R.string.pref_language_key)
|
||||
|
||||
override fun onViewCreated(view: View, savedState: Bundle?) {
|
||||
super.onViewCreated(view, savedState)
|
||||
|
||||
@@ -101,6 +105,15 @@ class SettingsGeneralFragment : SettingsFragment(),
|
||||
activity.recreate()
|
||||
true
|
||||
}
|
||||
|
||||
langPreference.setOnPreferenceChangeListener { preference, newValue ->
|
||||
(activity as SettingsActivity).parentFlags = SettingsActivity.FLAG_LANG_CHANGED
|
||||
LocaleHelper.setLocale(Locale(LocaleHelper.intToLangCode(newValue.toString().toInt())))
|
||||
LocaleHelper.updateCfg(activity.application, activity.baseContext.resources.configuration)
|
||||
activity.recreate()
|
||||
true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun onPreferenceDisplayDialog(p0: PreferenceFragmentCompat?, p: Preference): Boolean {
|
||||
|
||||
Reference in New Issue
Block a user