You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:15:04