Android kotlin library for change ui language in android application on runtime.
On your module app build.gradle
add
dependencies {
implementation 'com.ninenox.kotlinlocalemanager:kotlin-locale-manager:1.0.0'
}
- Create class and extend
ApplicationLocale
.
class App : ApplicationLocale() {
}
- In
AndroidManifest.xml
<application
android:name=".App"
...
/>
- In folder
res
add new locale.
values-th
- strings.xml
values-en
- strings.xml
- In any
Activity
extendAppCompatActivityBase
on it.
class MainActivity : AppCompatActivityBase() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
...
}
}
- Call funtion
setNewLocale("...")
for set current language and refresh UI.
setNewLocale(LocaleManager.LANGUAGE_ENGLISH) // ตัวอย่าง LocaleManager.LANGUAGE_ENGLISH, LocaleManager.LANGUAGE_THAI, ...
- Get current language code string. The value of language will be a lowercase language code such as "en" or "th", and it is recommended to access it via ApplicationLocale.localeManager?.language to use the locale manager that is shared throughout the app.
ApplicationLocale.localeManager?.language // "en"
- Get current
Locale
instance.
LocaleManager.getLocale(resources)
will return the current Locale
and can be used for country checks or locale-aware formatting.
val locale = LocaleManager.getLocale(resources)
if (locale.country == "TH") {
// ประเทศไทย
}
val dateFormat = java.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT, locale)
val formattedDate = dateFormat.format(java.util.Date())