BiometricPrompt提示未本地化

时间:2019-05-08 18:17:18

标签: android translation android-biometric-prompt

问题

我们正在更改应用程序内的区域设置,除指纹对话框中的提示外,其他所有功能均可用。无论我们设置哪种语言,我们总会有英文提示:

  • 触摸指纹传感器
  • 无法识别
  • 等...

enter image description here

环境

  • 使用的组件:androidx.biometric.BiometricPrompt
  • 使用的版本:1.0.0.0-alpha04
  • 设备/ Android版本复制于:模拟器API 28

如何设置语言环境:

    private fun setNewLocaleAndRestart(language: String) {
        LocaleManager(this).setNewLocale(language)

        //restarting app
        val i = Intent(this, SplashScreenActivity::class.java)
        startActivity(i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK))
        finish()
        System.exit(0)
    }

class LocaleManager(val context: Context) {

    val sharedPreferenceManager = createSharedPreferenceManager(context)

    fun setLocale(): Context = updateResources()

    fun setNewLocale(language: String): Context {
        return updateResources(language)
    }


    private fun updateResources(l: String? = null): Context {

        val language = l ?: sharedPreferenceManager.language

        if (language.isBlank()) return context

        val locale = Locale(language)

        Locale.setDefault(locale)

        val res = context.resources
        val config = Configuration(res.configuration)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            config.setLocale(locale)
            return context.createConfigurationContext(config)
        } else @Suppress("DEPRECATION") {
            config.locale = locale
            res.updateConfiguration(config, res.displayMetrics)
            return context
        }

    }
}

4 个答案:

答案 0 :(得分:1)

我刚刚实现了BiometricManager androidx.biometric:biometric:1.0.1,并且能够更改和定位提示的文本以及使用错误指纹的时间。

您只需要在strings.xml中定义这些字符串即可覆盖API上的字符串:

fingerprint_not_recognized用于在使用错误的指纹时更改错误消息。这是在FingerprintHelperFragment.java

中定义的

fingerprint_dialog_touch_sensor更改提示。这是在FingerprintDialogFragment.java

中定义的

BiometricManager_TouchSensor_Message BiometricManager_WrongFingerprintUsed_Message

答案 1 :(得分:0)

  

除指纹对话框中的提示外,所有其他功能均正常工作

所有系统对话框将使用用户为设备设置的语言。这包括用于生物识别的系统对话框。

答案 2 :(得分:0)

它已在BiometricPrompt版本androidx.biometric:biometric:1.0.0-alpha04中修复。 您只需更改手机的区域设置,以反映更改。

如果您有兴趣,这里是commit

答案 3 :(得分:0)

我也在implementation 'androidx.biometric:biometric:1.0.1@aar'上经历过。我将系统语言更改为英语以外的其他语言,但仍然显示“触摸指纹传感器”。有人对此有解决方案或解释吗?

looks好像Android生物识别库已经支持所有语言,但似乎不起作用。我什至可以在Android build文件夹中看到生成的merger.xml中的翻译。

在装有Android 9 /氧气9.0.10的OnePlus 5T上进行了测试。