前提・実現したいこと
Android4.1.2(API16)のみ「DateUtils.formatDateTime」に対する言語変更が適用されない。
なお、Android4.4.4、7、8の実機テストでは問題なく機能する。
該当のソースコード
java
1 //英語で英語以外の言語の国はイギリスに言語変更 2 boolean localeChangeFlg = false; 3 if((Globals.getAppContext().getString(R.string.language_str).equals("english")) && Locale.getDefault().getLanguage().equals(Locale.ENGLISH.getLanguage()) == false){ 4 defLocale = Locale.getDefault(); 5 6 Locale locale = Locale.UK; 7 Locale.setDefault(locale); 8 Configuration config = new Configuration(); 9 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 10 config.setLocale(locale); 11 config.setLayoutDirection(locale); 12 } else { 13 config.locale = locale; 14 } 15 Globals.getAppContext().getResources().updateConfiguration(config, null); 16 localeChangeFlg = true; 17 } 18 19 //年月日(曜日)を表示 20 cl_now = Calendar.getInstance(); 21 String wkDate; 22 if (Build.VERSION.SDK_INT > 16) { 23 wkDate = DateUtils.formatDateTime(this, cl_now.getTimeInMillis(), FORMAT_SHOW_YEAR | FORMAT_SHOW_DATE | FORMAT_SHOW_WEEKDAY | FORMAT_ABBREV_ALL); 24 }else{ 25 if(getString(R.string.language_str).equals("japanese")){ 26 wkDate = DateUtils.formatDateTime(this, cl_now.getTimeInMillis(), FORMAT_SHOW_YEAR | FORMAT_SHOW_DATE); 27 wkDate = wkDate + getString(R.string.stParenthesis) + DateUtils.formatDateTime(this, cl_now.getTimeInMillis(), FORMAT_SHOW_WEEKDAY | FORMAT_ABBREV_ALL) + getString(R.string.edParenthesis); 28 }else{ 29 wkDate = DateUtils.formatDateTime(this, cl_now.getTimeInMillis(), FORMAT_SHOW_YEAR | FORMAT_SHOW_DATE | FORMAT_SHOW_WEEKDAY); 30 } 31 } 32 TextView t_dateAndWeek = findViewById(R.id.t_dateAndWeek); 33 t_dateAndWeek.setText(wkDate); 34 35 //言語を変更した場合、元に戻す 36 if(localeChangeFlg){ 37 Locale locale = defLocale; 38 Locale.setDefault(locale); 39 Configuration config = new Configuration(); 40 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 41 config.setLocale(locale); 42 config.setLayoutDirection(locale); 43 } else { 44 config.locale = locale; 45 } 46 Globals.getAppContext().getResources().updateConfiguration(config, null); 47 }
試したこと
「Locale.UK」ではなく、「Locale.ENGLISH」としてもダメ
補足情報(FW/ツールのバージョンなど)
Android Studio3.4
APIレベル14から28まで対象
回答1件
あなたの回答
tips
プレビュー