跳到主要内容

6.7 区域解析

Micronaut 支持几种策略来解析给定请求的区域设置。getLocale-- 方法可用于请求,但它只支持解析 Accept-Language 头。对于区域设置可以在 cookie、用户会话中,或者应该设置为固定值的其他用例,可以使用 HttpLocaleResolver 来确定当前区域设置。

LocaleResolver API 不需要直接使用。只需为 java.util.Locale 类型的控制器方法定义一个参数,就会自动解析和注入区域设置。

有几个配置选项可以控制如何解析区域设置:

表 1. HttpLocaleResolutionConfigurationProperties 的配置属性

属性类型描述
micronaut.server.locale-resolutionHttpServerConfiguration$HttpLocaleResolutionConfigurationProperties区域解析配置
micronaut.server.locale-resolution.fixedjava.util.Locale设置区域设置的语言标记。支持 BCP 47 语言标签(例如“en-US”)和 ISO 标准(例如“en_US”)。
micronaut.server.locale-resolution.session-attributejava.lang.String设置会话中的键以查找区域设置。
micronaut.server.locale-resolution.cookie-namejava.lang.String设置用于存储区域的 cookie 的名称。
micronaut.server.locale-resolution.headerboolean如果应该从 Accept-Language 头解析区域设置,请设置为 true。默认值(true)。
micronaut.server.locale-resolution.default-localejava.util.Locale设置在无法通过任何方式解析区域设置时将使用的区域设置。默认为系统默认值。

区域设置可以配置为“en_GB”格式,也可以配置为 BCP 47(语言标记)格式。如果配置了多个方法,则固定区域设置优先,然后是 session/cookie,然后是头。

如果任何内置方法都不符合你的用例,请创建 HttpLocaleResolver 类型的 bean,并设置其相对于现有解析器的顺序(通过 getOrder 方法)。

英文链接