Grazie della risposta.
Sto provando ma non riesco a farlo funzionare.
Nell'app c'è un BaseFragment in cui viene definito un metodo initResources() che viene richiamato in tutti i Fragment.

La funzione del cambio risorse è questa:

codice:
fun setLocaleLanguage(context: Context, language: String): Configuration? {
    val locale = Locale(language.lowercase())
    Locale.setDefault(locale)

    val res: Resources = context.getResources()
    val dm: DisplayMetrics = res.getDisplayMetrics()
    val conf: Configuration = res.getConfiguration()
    conf.setLocale(locale) // API 17+ only.
res.updateConfiguration(conf, dm)

    return conf
}
Nel BaseFragment ho impostato il seguente codice:

codice:
override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
}


protected open fun initResources() {
    DeviceInfo.userLanguage?.run {
MyLog.d(reqTag, "$reqTag: Aggiorno la lingua con quella settata dall'utente $this")
        val newConfig = LocaleHelper.setLocaleLanguage(requireActivity().applicationContext, this)
        newConfig?.run {
onConfigurationChanged(this)
        }
    }

}
E nel Fragment derivato da BaseFragment

codice:
override fun initResources() {
    reqTag = "UserAccess"
super.initResources()

    //text
binding.title.text = getString(R.string.ua_title)
    binding.description.text = getString(R.string.ua_description)

}
dove title e description sono delle TextView presenti nel layout del Fragment.
Nel blocco di codice del cambio lingua entra (super.initResources()) ma la lingua non viene cambiata