>source

다국어 응용 프로그램을 가지고 있으며 응용 프로그램 번역에서 전화로 선택한 언어를 지원하지 않으면 날짜를 영어로 표시하고 싶습니다.

응용 프로그램에서 사용하는 언어를 가져 오는 방법이 있습니까 (기본 영어) 휴대 전화에서 선택한 언어 대신?

전화 언어 만 반환하는 것 같습니다 :

Locale.getDefault()
getContext().getResources().getConfiguration().locale

스크린 샷 :


  • 답변 # 1

    시스템 언어 구하기

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

    응용 프로그램 언어 얻기

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

  • 답변 # 2

    시도 :

    앱의 기본 로케일 또는 영어로 날짜 형식을 지정하기 위해 하나의 확장 기능을 만들었습니다.

    참고 :이 기능은 기기 언어 또는 앱 언어에 상관없이 항상 형식화 된 날짜를 영어로 반환합니다.

    앱 언어별로 날짜를 지정하려면 앱에서 선택한 언어 로캘을이 방법으로 전달하면됩니다.

    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"
                    )
                )
    
    

  • 답변 # 3

    유용한 답변이 없으므로이 문제에 대한 해결책을 게시하겠습니다.

    따라서 로케일 코드가 포함 된 모든 지원되는 언어에 대한 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)
    }
    
    

  • 이전 modelica - openmodelica의 유체 라이브러리 관련 이상한 문제
  • 다음 sql - DB2에서 MERGE 명령 사용시 오류