Вместо использования application.properties
для этого вам, вероятно, следует использовать интернационализацию (i18n) с использованием пакетов сообщений (messages.properties
).
Если у вас ограниченное количество языков, вы можете создать отдельные свойствафайл для каждого языка, например:
messages.properties
: по умолчанию / отступление messages_en.properties
: свойства, переведенные на английский язык messages_de.properties
: свойства, переведенные на немецкий язык
Если каждый из этих файлов содержит свойство contact_us_link
, Spring автоматически разрешит их.В вашем шаблоне Thymeleaf вы должны использовать следующее:
<small th:text="#{contact_us_link}"></small>
В качестве альтернативы, если вам нужен более динамичный подход, вы можете удалить свойство из всех ваших локализованных файлов message_*.properties
и использовать заполнитель внутри messages.properties
file, например:
contact_us_link=https://my-domain.com/{0}/contact-us
Теперь вы можете передать языковой стандарт в качестве замены в вашем шаблоне:
<a th:href="#{contact_us_link(locale)}">Contact us</a>
Если вам действительно нужно использовать application.properties
,Вы должны будете сделать замену самостоятельно.К счастью, вы можете использовать все, что SpEL может предложить в своем шаблоне, чтобы вы могли создать свой собственный компонент:
@Component
public class Formatter {
public String format(String message, Object... variables) {
return MessageFormat.format(message, variables);
}
}
И теперь вы можете заменить его с помощью этого компонента:
<a th:href="${@formatter.format(@environment.getProperty('contact_us_link'), #locale)}">Contact us</a>