Android使用SimpleDateFormat配置爱沙尼亚Locale实现日期翻译不生效咨询
解决方案
核心错误点
你使用的Locale构造参数不符合ISO标准编码规则:
- 爱沙尼亚语的ISO 639-1语言代码为
et,你填写的ee是埃维语的语言代码 - 爱沙尼亚的ISO 3166-1国家代码为大写的
EE,不是字符串Estonia
正确配置方式
Java 8及更早版本写法:Locale estonianLocale = new Locale("et", "EE");
Java 19及更高版本推荐写法:Locale estonianLocale = Locale.of("et", "EE");
支持性验证
主流OpenJDK、Oracle JDK版本默认都内置了爱沙尼亚语Locale支持,你可以运行以下代码确认当前运行环境的支持情况:
import java.util.Arrays; import java.util.Locale; public class LocaleTest { public static void main(String[] args) { boolean isSupported = Arrays.stream(Locale.getAvailableLocales()) .anyMatch(locale -> "et".equals(locale.getLanguage()) && "EE".equals(locale.getCountry())); System.out.println("爱沙尼亚语Locale是否支持:" + isSupported); } }
备用方案
如果确认运行环境没有内置爱沙尼亚语资源,可以手动自定义月份翻译规则:
import java.text.DateFormatSymbols; import java.text.SimpleDateFormat; public class DateTest { public static void main(String[] args) { // 爱沙尼亚语1-12月全称 String[] estonianMonths = {"jaanuar", "veebruar", "märts", "aprill", "mai", "juuni", "juuli", "august", "september", "oktoober", "november", "detsember"}; DateFormatSymbols customSymbols = new DateFormatSymbols(); customSymbols.setMonths(estonianMonths); // 自定义规则的SimpleDateFormat,可正常格式化/解析爱沙尼亚语月份 SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMMM dd", customSymbols); } }
内容的提问来源于stack exchange,提问作者MaaAn13
相关产品推荐
相关产品推荐

