【问题标题】:When I change my local english to bengali this time calendar date picker show english format in android当我这次将本地英语更改为孟加拉语时,日历日期选择器在 android 中显示英语格式
【发布时间】:2021-08-16 07:45:27
【问题描述】:

我必须制作多语言应用程序。当我将语言从英语转换为孟莱语时,应用程序的整体视图发生了变化。但是我的日期选择器无法更改。当我选择孟加拉语时它显示英语格式,当我选择英语时,日期选择器再次显示孟加拉语格式。我该如何解决这个问题。在这里我显示我的代码:

LocaleCode.kt

fun setLocale() {
    var sm: SessionManager = SessionManager()
    val lang = sm.languageCode

    if (lang != "") {
        lang?.let {
            val locale = Locale(it)
            Locale.setDefault(locale)
            val config = Configuration()
            config.locale = locale
            baseContext.resources.updateConfiguration(config, baseContext.resources.displayMetrics)
            AppController.setLocale(it)
        }
     } else {

        sm.language = "Bangla"
        sm.languageCode = "en"

        val locale = Locale("en")
        Locale.setDefault(locale)
        val config = Configuration()
        config.locale = locale
        baseContext.resources.updateConfiguration(config, baseContext.resources.displayMetrics)

        AppController.setLocale("en")

    }

}

Activity.kt

@OnClick(R.id.expire_date)
fun OnExpiryDate() {

    val c = Calendar.getInstance(Locale.ENGLISH)
    val dialog = Dialog(requireActivity())
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
    dialog.setContentView(R.layout.dialog_datepicker)

    val cancel = dialog.findViewById<View>(R.id.datepicker_cancel) as TextView
    val picker = dialog.findViewById<View>(R.id.datePicker) as DatePicker
    val ok = dialog.findViewById<View>(R.id.datepicker_ok) as TextView

    cancel.setOnClickListener { dialog.dismiss() }

    picker.minDate = c.timeInMillis

    ok.setOnClickListener {

        c.set(picker.year, picker.month, picker.dayOfMonth)
        val format = SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH)
        val dateString = format.format(c.time)

        tvExpiryDate.text = dateString
        isExpiryDateChanged = true

        dialog.dismiss()
    }

    dialog.show()

}

acitivty_main.xml

<TextView
      android:background="@drawable/a_border"
      android:gravity="center_vertical"
      android:hint="@string/yyyymmdd"
      android:id="@+id/tv_expiredate_text"
      android:layout_below="@+id/tv_expiredate"
      android:layout_height="30dp"
      android:layout_marginEnd="10dp"
      android:layout_width="match_parent"
      android:paddingStart="8dp"
      android:text="expiredDate"
      android:textAlignment="viewStart"
      android:textColor="@color/colorblack"
      android:textSize="17sp"
      tools:ignore="RtlCompat" />

这是输出:

See this picture, when I select Bengali it shows English format

See this picture, when I select English it shows Benglai format

【问题讨论】:

    标签: android kotlin localization android-datepicker


    【解决方案1】:

    您已在此处将语言环境设置为英语。

    @OnClick(R.id.expire_date) 
    fun OnExpiryDate() 
    { 
    val c = Calendar.getInstance(Locale.ENGLISH) 
    

    相反,您可以在本地保存选定的语言环境并在此处传递选定的语言环境

    【讨论】:

    • 我做到了,但没有用。当我在显示时区“asia/dhaka”的日志日历实例上打印时,我设置了时区“UTC”但没有变化
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多