0

I have an app that can be used in either the default Locale (english) or French.

I am using Android's per-app's language feature to allow the user to change the language in the app itself.

Below in my code:

Settings.kt (This is how the language is applied in settings)

AppCompatDelegate.setApplicationLocales(
                if(it.lowercase() == KEYWORD_LOCALE_DEFAULT){
                    Log.i(TAG, "Setting default locale")

                    LocaleListCompat.getEmptyLocaleList()
                }else{
                    Log.i(TAG, "Setting locale: $it")
                    LocaleListCompat.forLanguageTags(it)
                }
            )

I am then adding a log in the MainActivity to check if it's working

MainActivity.kt

    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    Log.i(
        TAG, "Starting app with local system ${
            getSystemService(
                LocaleManager::class.java
            ).applicationLocales
        }"
    )
    Log.i(
        TAG, "Starting app with app compat ${
            AppCompatDelegate.getApplicationLocales()
        }"
    )

As expected, it is logging fine as below:

Starting app with local system []
Starting app with app compat []

// After changing settings
Starting app with local system [fr]
Starting app with app compat [fr]

This issue is the strings are not changing in the app.

I have defined 3 strings file as shown below but the strings are not working

strings.xml (fr)

<string name="headline_home_primary">Change to French Test</string>
<string name="headline_home_secondary">Change to French Test</string>
<string name="headline_home_tertiary">Change to French Test</string>
<string name="headline_home_quaternary">Change to French Test</string>

strings.xml

<string name="headline_home_primary">Change to Engl Test</string>
<string name="headline_home_secondary">Change to English Test</string>
<string name="headline_home_tertiary">Change to English Test</string>
<string name="headline_home_quaternary">Change to English Test</string>

strings_xml

I am using Jetpack Compose for my UI and the below are my settings

minSdk 29
targetSdk 33

Also i ran the app on the following devices:

Emulator

  • Pixel 5 (API 30)
  • Pixel 7 (API 33)

Physical

  • Pixel 7 (Android 13 - API 33)

Nothing works. Can someone please help out?

Mervin Hemaraju
  • 1,921
  • 2
  • 22
  • 71

0 Answers0