首页 > 解决方案 > Spring:i18n MessageSource 不适用于某些语言环境

问题描述

我有这三个文件:

messages/exceptions/document
├── document_ca_ES.properties
├── document_en.properties
└── document_es.properties

Spring配置很简单:

@Bean
public MessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasenames("messages/exceptions/document");
    messageSource.setDefaultEncoding(StandardCharsets.UTF_8.name());
    return messageSource;
}

我正在使用curl命令进行测试:

curl -X POST \
  http://localhost:8081/fitxers/raw/b64 \
  -H 'Accept-Language: es' \
  ...

使用Accept-Language: es或不使用标题都可以正常工作:

Accept-Language: es语言环境:

{
    "code": 500,
    "message": "Contenido ya existente"
}

没有Accept-Language

{
    "code": 500,
    "message": "Content already exists"
}

但是,当Accept-Language: ca_ES结果是英文时:

{
    "code": 500,
    "message": "Content already exists"
}

有任何想法吗?

标签: javaspring-boot

解决方案


推荐阅读