Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

cat-x/SwitchLanguage

Repository files navigation

一个使用kotlin编写的APP语言切换库

特性

  1. 切换应用语言
  2. 包括Application,Activity的Context的所选语言资源
  3. 语言选项会自动使用内存进行缓存,减少直接对文件的读写

原理

  1. 重启Activity
  2. 在Application创建时,置换成所选语言

引入架包

In your root path build.gradle:

allprojects {
 repositories {
 maven { url "https://jitpack.io" }
 }
 }

In your Application Dir build.gradle:

dependencies {
 implementation 'com.github.cat-x:SwitchLanguage:0.23'
 implementation 'com.github.cat-x:LStorage:0.10'
}

使用方法

  1. 在使用前你应该进行初始化

你需要在Application 中初始化,只需要调用1次即可

open class App : Application() {
 override fun onCreate() {
 super.onCreate()
 LanguageInject.onAppCreate(this)
 }
}
  1. 函数调用

切换语言

目前支持简体中文,繁体中文,日语,韩语,英语的切换

  • 你只要在布局中引入LanguageView即可
 <xyz.a1api.language.LanguageView
 android:paddingLeft="16dp"
 android:paddingRight="16dp"
 android:layout_below="@id/titleTextView"
 android:layout_width="match_parent"
 android:layout_height="wrap_content">
 </xyz.a1api.language.LanguageView>
  • 通过函数api切换
BaseLanguageActivity.getSelectLanguageForWeb()//获取当前App语言,用于网络api调用
BaseLanguageActivity.getSelectLanguage()//获取当前App语言的Locale
BaseLanguageActivity.setSelectLanguage()//设置语言
BaseLanguageActivity.loadLanguage()//载入选中语言的resources

多语言界面

  • 基于继承Activity的方式使用
class MainActivity : BaseLanguageActivity{
//...
}
  • 不继承Activity,使用LanguageInject来切换
open class Main2Activity : AppCompatActivity() {
 @Suppress("LeakingThis")
 open var languageInject: LanguageInject? = object : LanguageInject(this@BaseLanguageActivity) {
 override fun isLanguageActivity(activity: Activity): Boolean {
 return this@BaseLanguageActivity.isLanguageActivity(activity)
 }
 }
 //本方法主要是判断当前Activity是不是语言切换的页面,如果是的,你需要返回true
 open fun isLanguageActivity(activity: Activity): Boolean {
 return false
 }
 override fun attachBaseContext(newBase: Context?) {
 super.attachBaseContext(languageInject?.attachBaseContext(newBase))
 }
 override fun onResume() {
 super.onResume()
 languageInject?.onResume()
 }
}

演示图片

图片

About

一个使用kotlin编写的APP语言切换库

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /