From 6a5e9c49320081ee1aa9761f924d99abeea6aedf Mon Sep 17 00:00:00 2001 From: John Niang Date: Thu, 12 Sep 2024 17:12:22 +0800 Subject: [PATCH] Fix the problem of resolving locale context by language parameter (#6647) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### What type of PR is this? /kind bug /area theme /milestone 2.20.x #### What this PR does / why we need it: If we pass a query `language` while requesting index page, we will get the wrong header `Content-Language`. Please see the result below: ```bash http https://www.halo.run/\?language\=zh-CN -p h HTTP/1.1 200 OK Content-Language: und ... ``` After fixing, we will get the right header `Content-Language`. ```bash http http://localhost:8090/\?language\=zh-CN -p h HTTP/1.1 200 OK Content-Language: zh-CN ... ``` #### Does this PR introduce a user-facing change? ```release-note 修复主题端区域和语言解析错误的问题 ``` --- .../java/run/halo/app/theme/ThemeLocaleContextResolver.java | 2 +- .../run/halo/app/theme/ThemeLocaleContextResolverTest.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/run/halo/app/theme/ThemeLocaleContextResolver.java b/application/src/main/java/run/halo/app/theme/ThemeLocaleContextResolver.java index cf82601a5..65d7e2289 100644 --- a/application/src/main/java/run/halo/app/theme/ThemeLocaleContextResolver.java +++ b/application/src/main/java/run/halo/app/theme/ThemeLocaleContextResolver.java @@ -51,7 +51,7 @@ public class ThemeLocaleContextResolver extends AcceptHeaderLocaleContextResolve Locale locale; if (StringUtils.isNotBlank(language)) { - locale = new Locale(language); + locale = Locale.forLanguageTag(language); } else if (exchange.getAttribute(LOCALE_REQUEST_ATTRIBUTE_NAME) != null) { locale = exchange.getAttribute(LOCALE_REQUEST_ATTRIBUTE_NAME); } else { diff --git a/application/src/test/java/run/halo/app/theme/ThemeLocaleContextResolverTest.java b/application/src/test/java/run/halo/app/theme/ThemeLocaleContextResolverTest.java index 8ab62e89e..8662382e4 100644 --- a/application/src/test/java/run/halo/app/theme/ThemeLocaleContextResolverTest.java +++ b/application/src/test/java/run/halo/app/theme/ThemeLocaleContextResolverTest.java @@ -62,6 +62,10 @@ class ThemeLocaleContextResolverTest { .isEqualTo(ENGLISH); assertThat(this.resolver.resolveLocaleContext(exchangeForParam("zh")).getLocale()) .isEqualTo(CHINESE); + assertThat(this.resolver.resolveLocaleContext(exchangeForParam("zh-CN")).getLocale()) + .isEqualTo(CHINA); + assertThat(this.resolver.resolveLocaleContext(exchangeForParam("zh-cn")).getLocale()) + .isEqualTo(CHINA); } @Test