Thymeleaf - 填充 ang 获取语言 属性 值
Thymeleaf - Populate ang get language property values
情况
我正在使用 Spring Boot with Thymeleaf 来填充我的 HTML 模板文件并以字符串形式返回结果。为此,我使用了 SpringTemplateEngine
.
代码如下所示
Context context = new Context();
context.setVariables(myProperties);
return templateEngine.process(htmlTemplateName, context);
问题
我想实现类似的东西,但是有 language.property 个文件
我有两个语言 属性 文件:language.properties 和 language_en.properties 看起来像这样
my.value = This a string containing a dummy name = {name}
我想达到什么目的?
- 我想使用 thymeleaf 来达到正确的语言 属性 文件
- 用定义的变量填充
{name}
变量。模板应基于 HTMLs 中的变量名称,例如:hashmap: <"name", "FooName">
- 以字符串形式返回填充的文本。我没有 HTML 文件,我只想使用 thymeleaf 的模板机制。
问题
这可能吗?我该怎么做?
如果可能,language.properties 中的正确格式是什么?
是的,你可以!
您需要为资源目录中的消息文件配置一个具有正确基名的 MessageSource
bean,例如:
spring.messages.basename=path/to/language
,假设您的属性文件位于 path/to/language(_en).properties
给定这个 bean,在任何需要翻译字符串的地方,您都可以注入 MessageSource
的实例并使用它来获取给定消息 key
:
的翻译字符串
public class I18NHelper {
private final MessageSource messageSource;
public I18NHelper(final MessageSource messageSource) {
this.messageSource = messageSource;
}
public String translate(String key, String name) {
return messageSource.getMessage(key, new Object[] {name}, Locale.ENGLISH);
}
}
编辑:修复了要注入的 class 和对 getMessage 的调用。
此外,有多种方法可以获取当前会话或系统的区域设置。我以英语语言环境为例。根据您的需要进行调整。
情况
我正在使用 Spring Boot with Thymeleaf 来填充我的 HTML 模板文件并以字符串形式返回结果。为此,我使用了 SpringTemplateEngine
.
代码如下所示
Context context = new Context();
context.setVariables(myProperties);
return templateEngine.process(htmlTemplateName, context);
问题 我想实现类似的东西,但是有 language.property 个文件
我有两个语言 属性 文件:language.properties 和 language_en.properties 看起来像这样
my.value = This a string containing a dummy name = {name}
我想达到什么目的?
- 我想使用 thymeleaf 来达到正确的语言 属性 文件
- 用定义的变量填充
{name}
变量。模板应基于 HTMLs 中的变量名称,例如:hashmap: <"name", "FooName"> - 以字符串形式返回填充的文本。我没有 HTML 文件,我只想使用 thymeleaf 的模板机制。
问题
这可能吗?我该怎么做? 如果可能,language.properties 中的正确格式是什么?
是的,你可以!
您需要为资源目录中的消息文件配置一个具有正确基名的 MessageSource
bean,例如:
spring.messages.basename=path/to/language
,假设您的属性文件位于 path/to/language(_en).properties
给定这个 bean,在任何需要翻译字符串的地方,您都可以注入 MessageSource
的实例并使用它来获取给定消息 key
:
public class I18NHelper {
private final MessageSource messageSource;
public I18NHelper(final MessageSource messageSource) {
this.messageSource = messageSource;
}
public String translate(String key, String name) {
return messageSource.getMessage(key, new Object[] {name}, Locale.ENGLISH);
}
}
编辑:修复了要注入的 class 和对 getMessage 的调用。 此外,有多种方法可以获取当前会话或系统的区域设置。我以英语语言环境为例。根据您的需要进行调整。