为了账号安全,请及时绑定邮箱和手机立即绑定

检测应用程序语言而不是电话语言

检测应用程序语言而不是电话语言

RISEBY 2022-11-30 13:28:17
我有多语言应用程序,如果应用程序翻译不支持手机上所选的语言,我想用英语显示日期。有什么方法可以获取应用程序使用的语言(默认英语)而不是手机中选择的语言?看起来这只返回电话语言:Locale.getDefault()getContext().getResources().getConfiguration().locale截屏:
查看完整描述

3 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

尝试这个:


我已经制作了一个扩展功能,可以使用应用程序的默认语言环境或仅使用英语来格式化日期。


注意:此函数将始终以英语返回格式化日期,无论您的设备语言是什么或您的应用程序语言是什么。


如果您想根据您的应用程序语言进行约会,只需将您应用程序选择的语言区域设置传递给此方法即可。


在展示之前DatePickerDialog设置Locale成en这样。


Locale.setDefault(Locale("en"))

startDatePickerDialog.show()

然后使用此方法格式化日期。


 fun Context.getFormattedDate(

    inputFormat: String = "dd/MM/yyyy",

    outputFormat: String,

    inputDate: String,

    locale: Locale = Locale("en")

): String {


    val inputFormat = inputFormat

    var outputFormat = outputFormat


    var parsed: Date? = null

    var outputDate = ""


    val dfInput = SimpleDateFormat(inputFormat, locale)

    val dfOutput = SimpleDateFormat(outputFormat, locale)


    try {

        parsed = dfInput.parse(inputDate)

        outputDate = dfOutput.format(parsed)

    } catch (e: Exception) {

        Log.e("formattedDateFromString", "Exception in formate Date From string(): " + e.message)

        e.printStackTrace()

    }

    return outputDate


}

如何使用此功能


 Log.e("Formated date", getFormattedDate(

                    inputFormat = "dd/MM/yyyy",

                    outputFormat = "dd-MMM-yyyy",

                    inputDate = "17/05/2019"

                )

            )


查看完整回答
反对 回复 2022-11-30
?
富国沪深

TA贡献1790条经验 获得超9个赞

由于没有有用的答案,我将针对此问题发布我的解决方案。


所以我决定为每种支持的语言创建 xml 文件,其中包含语言环境代码:


<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="language_locale">en</string>

</resources>

用法示例:


fun Date.formatWithShortMonthAndDay(context: Context, date: Date): String {

    val locale = context.resources.getString(R.string.language_locale)

    return SimpleDateFormat(DATE_WITH_SHORT_MONTH_AND_DAY_PATTERN, Locale(locale)).format(date)

}


查看完整回答
反对 回复 2022-11-30
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

获取系统语言

Resources.getSystem().getConfiguration().locale.getLanguage();

获取应用程序语言

String appLang = Locale.getDefault().getLanguage();


查看完整回答
反对 回复 2022-11-30
  • 3 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信