Java 胸腺的月定位

Java 胸腺的月定位,java,html,spring-boot,localization,thymeleaf,Java,Html,Spring Boot,Localization,Thymeleaf,我正在使用Thymeleaf作为模板引擎编写一个spring启动应用程序 需要将显示日期的月份翻译本地化为乌克兰语: 预期结果 切换语言后,将显示10-戡戡戡戡戡戡-2021 18:58:53 一般来说,本地化(EN/UA)效果良好 我尝试了以下技巧,但在切换语言后,日期仍以英语显示(即2021年4月10日18:58:53): 如有任何帮助,我们将不胜感激 当您使用#locale.derman时,这对于一种更常用的语言来说只是一种方便 您可以使用相关的语言标记为任何语言构建区域设置。所以,试试#

我正在使用Thymeleaf作为模板引擎编写一个spring启动应用程序

需要将显示日期的月份翻译本地化为乌克兰语:

预期结果 切换语言后,将显示10-戡戡戡戡戡戡-2021 18:58:53

一般来说,本地化(EN/UA)效果良好

我尝试了以下技巧,但在切换语言后,日期仍以英语显示(即2021年4月10日18:58:53):

如有任何帮助,我们将不胜感激

当您使用
#locale.derman
时,这对于一种更常用的语言来说只是一种方便

您可以使用相关的语言标记为任何语言构建区域设置。所以,试试
#locale.forLanguageTag('uk')


警告:

对于BCP 47语言标记(由Java的
Locale
使用),乌克兰(国家)是
UA
,但乌克兰(语言)是
uk

您可以将它们组合成
uk UA
,这也是一个有效的BCP 47语言标记。这意味着“乌克兰使用的乌克兰语”

这可能是多余的,您可能只需要
uk
。法语(
fr
)与加拿大(
CA
)相比,法国(
fr
)与加拿大(
CA
)可能存在显著差异。因此,
frca
的意思是“加拿大法语”。我不知道乌克兰以外的其他国家使用的乌克兰语是否有显著差异

如果您正在使用构造函数:

Locale(String language, String country) 
那么,就您的目的而言,应该是:

Locale('uk', 'UA') // this is correct
因此,警告是这样的:如果您使用以下选项:

Locale('uk', 'UK') // this is INCORRECT!
那么这是不正确的
——它的意思是“在英国所代表的一些未知位置使用的乌克兰语”


有一个在线测试平台,您可以自己测试这些语言标记。

如果您使用
,会发生什么情况?我不使用Spring,所以我不知道这是否有效:当您使用
#locale.derman
时,这对于一种更常用的语言来说只是一种方便。您可以使用相关的语言标记为任何语言构建区域设置。所以,试试
#locale.forLanguageTag('uk')
@WimDeblauwe如果我这样做,我会得到非本地化的日期,比如2021年4月10日18:58:53@andrewjames杰出的您可以使用#locale.forLanguageTag('uk')进行访问!我尝试了这个:并得到了预期的结果:02-жжжжжааа-2021 01:36:35然而,还有另一个问题:这种翻译始终独立于语言转换。你知道如何解决这个问题吗?不是100%确定你的意思-但是如果你想为不同的客户端使用不同的语言,那么你可以在上下文中设置语言环境(而不是硬编码到模板中)。例如,这可以基于用户的配置文件/个人设置。我认为,可能已经有了各种各样的问题和答案。如果你的研究没有找到解决办法,那么你可以问一个新问题。如果我误解了这个问题,也是如此!非常感谢。你的方法很有效。原来是我误用了
new java.util.Locale('ua','ua')
,而不是
new java.util.Locale('uk','uk')
,没想到英国可能代表乌克兰,而不是英国,所以这段代码很好:
我根据你的评论在我的回答中添加了一个警告。(另请注意,英国是英国的
GB
。瑞士是赫尔维蒂亚州的
CH
,或类似的州……语言和国家缩写有些令人惊讶。)
@Column(name = "report_date")
    @Temporal(TemporalType.DATE)
    @DateTimeFormat(pattern = "dd/MM/yyyy")
    @NotNull
    private Date reportDate;
Locale(String language, String country) 
Locale('uk', 'UA') // this is correct
Locale('uk', 'UK') // this is INCORRECT!