Reputation: 153
I implemented some string resources for english and romanian. Switching the locale works fine for text fields, but the titles for the drawer items doesnt change when language is changed.
I have the following configuration:
Setting the locale to "ro" in MainActivity
private fun setDefaultLocale(lang: String) {
val config = android.content.res.Configuration(resources.configuration)
val locale = Locale(lang)
Locale.setDefault(locale)
config.setLocale(locale)
config.setLayoutDirection(locale)
resources.updateConfiguration(config, resources.displayMetrics)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
setDefaultLocale("ro")
.....
}
Menu resources:
<group android:checkableBehavior="single">
<item
android:icon="@drawable/ic_baseline_home_24"
android:id="@+id/home"
android:title="@string/menu_home" />
<item
android:icon="@drawable/ic_baseline_wallpaper_24"
android:id="@+id/news"
android:title="@string/menu_news" />
<item
android:icon="@drawable/ic_jungle"
android:id="@+id/jungleTimer"
android:title="@string/menu_timer" />
<item
android:icon="@drawable/ic_damage"
android:id="@+id/builds"
android:title="@string/menu_builds" />
<item
android:icon="@drawable/ic_baseline_settings_24"
android:id="@+id/settings"
android:title="@string/menu_settings" />
<item
android:icon="@drawable/ic_baseline_info_24"
android:id="@+id/about"
android:title="@string/menu_about" />
<item
android:icon="@drawable/ic_feedback"
android:id="@+id/feedback"
android:title="@string/menu_feedback" />
<item
android:icon="@drawable/ic_favorite"
android:id="@+id/rateapp"
android:title="@string/menu_rate" />
</group>
Default string xml file:
/* Menu translations */
<string name="menu_home">Home</string>
<string name="menu_news">News</string>
<string name="menu_timer">Jungle Timers</string>
<string name="menu_builds">Guides</string>
<string name="menu_settings">Settings</string>
<string name="menu_about">About</string>
<string name="menu_feedback">Feedback</string>
<string name="menu_rate">Rate the app</string>
Romanian strings xml file
/* Menu translations */
<string name="menu_home">Acasă</string>
<string name="menu_news">Noutăți</string>
<string name="menu_timer">Cronometru Junglă</string>
<string name="menu_builds">Ghid Campioni</string>
<string name="menu_settings">Setări</string>
<string name="menu_about">Despre</string>
<string name="menu_feedback">Feedback</string>
<string name="menu_rate">Dă-ne o notă</string>
Upvotes: 0
Views: 379
Reputation: 1929
Updating configuration will not restart your activity, so Drawer
will not know that you changed locale on the device thus not changing the texts.
If you change your language in system settings it should work.
I propose recreating the activity after you change your configuration programmatically, for example with activity?.recreate()
method
Upvotes: 1