Передайте переменную локали пружины в application.properties - PullRequest
0 голосов
/ 06 июня 2018

Есть URL-адреса, которые я поместил в файл application.properties.Теперь эти URL-адреса должны иметь язык, чтобы страница загружалась на разных языках.Например, в моем файле application.properties у меня есть свойство для ссылки Связаться с нами, как показано ниже

contact_us_link = https://my -domain.com / {locale} / contact-us

В приведенной выше ссылке мне нужно использовать текущий языковой стандарт приложения, чтобы, если языковой стандарт был "en", указанное выше свойство стало

contact_us_link = https://my -domain.com / ru / contact-us

Как использовать переменную локали в файле свойств?

PS: вышеуказанное свойство будет доступно в Thymeleaf, как показано ниже

<li>
<a th:href="@{${@environment.getProperty('contact_us_link')}}" th:text="#{footer.contactUs.text}">Contact Us</a>
</li>

Ответы [ 3 ]

0 голосов
/ 06 июня 2018

Вместо использования 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>
0 голосов
/ 17 сентября 2018

Для других пользователей stackoverflow, я нашел простое решение для вышеуказанного вопроса из документации Thymeleaf.

В моем файле application.properties я использовал это свойство, как показано ниже

contact_us_link = https://my -domain.com / {locale} / contact-us

В моем html $ndom@environment.getProperty('contact_us_link')} , чтобы получить URL из файла свойств приложения, и дополнительно я передаю значение, соответствующее {locale} в URL, как показано ниже

<li>
<a th:href="@{${@environment.getProperty('contact_us_link')}(locale=${locale.toLowerCase()})}" th:text="#{footer.contactUs.text}">Contact Us</a>
</li>

Я могу получить доступ к текущей локали, используя переменную $ {locale} в шаблонах Thymeleaf.

Ниже приведена ссылка на официальную документацию

https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#link-urls

0 голосов
/ 06 июня 2018

Я не думаю, что spring предоставит / переведет локаль при получении свойства в тимелист.Скорее вы можете создавать разные ключи для каждой локали и извлекать их соответственно.

contact_us_link_en = https://my-domain.com/en/contact-us

Используйте $ {# locale} при извлечении свойства в тимилиф.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...