parent
b5ab558f8b
commit
7b93bf6e25
@ -0,0 +1,51 @@ |
|||||||
|
package io.legado.app.utils |
||||||
|
|
||||||
|
import android.content.Context |
||||||
|
import android.content.res.Configuration |
||||||
|
import android.content.res.Resources |
||||||
|
import android.os.Build |
||||||
|
import io.legado.app.constant.PreferKey |
||||||
|
import java.util.* |
||||||
|
|
||||||
|
|
||||||
|
object LanguageUtils { |
||||||
|
|
||||||
|
/** |
||||||
|
* 设置语言 |
||||||
|
*/ |
||||||
|
fun setConfiguration(context: Context): Context { |
||||||
|
val resources: Resources = context.resources |
||||||
|
val targetLocale: Locale = when (context.getPrefString(PreferKey.language)) { |
||||||
|
"zh" -> Locale.CHINESE |
||||||
|
"tw" -> Locale.TRADITIONAL_CHINESE |
||||||
|
"en" -> Locale.ENGLISH |
||||||
|
else -> getSystemLocale() |
||||||
|
} |
||||||
|
val configuration: Configuration = resources.configuration |
||||||
|
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { |
||||||
|
configuration.setLocale(targetLocale) |
||||||
|
context.createConfigurationContext(configuration) |
||||||
|
} else { |
||||||
|
@Suppress("DEPRECATION") |
||||||
|
configuration.locale = targetLocale |
||||||
|
@Suppress("DEPRECATION") |
||||||
|
resources.updateConfiguration(configuration, resources.displayMetrics) |
||||||
|
context |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 当前系统语言 |
||||||
|
*/ |
||||||
|
private fun getSystemLocale(): Locale { |
||||||
|
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //7.0有多语言设置获取顶部的语言 |
||||||
|
Resources.getSystem().configuration.locales.get(0) |
||||||
|
} else { |
||||||
|
@Suppress("DEPRECATION") |
||||||
|
Resources.getSystem().configuration.locale |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue