반응형
I18n in Spring 부츠 + Thymeleaf
저는 스프링 부트와 타임리프를 이용하여 다국어 애플리케이션을 만들려고 합니다.
다른 메시지를 저장하기 위해 속성 파일을 몇 개 만들었지만 브라우저 언어로만 표시할 수 있습니다(브라우저 로케일을 변경하기 위해 확장자를 시도했지만 작동하지 않는 것 같습니다). 어쨌든 이 작업(언어 변경)을 수행하기 위해 웹 사이트에 버튼을 넣고 싶었지만, 이를 어떻게 관리해야 할지 또는 어디서 찾아야 할지 모르겠습니다.
내 구성을 보여줄 것입니다.
프로젝트 구조
I18n 구성 클래스
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@EnableWebMvc
public class I18nConfiguration extends WebMvcConfigurerAdapter {
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
}
심리프 HTML 페이지
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
th:with="lang=${#locale.language}" th:lang="${lang}">
<head>
<title>Spring Boot and Thymeleaf example</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h3>Spring Boot and Thymeleaf</h3>
<p>Hello World!</p>
<p th:text="${nombre}"></p>
<h1 th:text="#{hello.world}">FooBar</h1>
</body>
</html>
메시지(속성 파일)
메시지_en_미국 부동산
hello.world = Hello people
messages_es.properties
hello.world = Hola gente
사실 이 메시지는 스페인어로 표시됩니다. 어떻게 변경해야 할지 잘 모르겠습니다. 그러니 당신이 저를 도와주시면 감사하겠습니다.
또 다른 의문이 떠오릅니다속성 파일 대신 데이터베이스에서 메시지를 가져오려면 어떻게 해야 합니까?
응용 프로그램이 WebMvcConfigurerAdapter를 확장해야 합니다.
@SpringBootApplication
public class NerveNetApplication extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(NerveNetApplication.class, args);
}
@Bean
public LocaleResolver localeResolver() {
return new CookieLocaleResolver();
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
}
그런 다음 브라우저에서 param lang을 사용하여 언어를 전환할 수 있습니다. 예: http://localhost:1111/?http=kh.properties에 크메르 언어의 내용이 저장됩니다.
언급URL : https://stackoverflow.com/questions/36531131/i18n-in-spring-boot-thymeleaf
반응형
'source' 카테고리의 다른 글
oracle pl/sql 내부에서 CLOB를 VARCHAR2로 변환하는 방법 (0) | 2023.07.03 |
---|---|
갈라지는 낙타 케이스 (0) | 2023.07.03 |
Flooth의 Firestore에서 단일 문서 쿼리(cloud_firestore Plugin) (0) | 2023.07.03 |
소스 제어에 저장 프로시저/DB 스키마 (0) | 2023.07.03 |
Oracle(ORA-02270): 이 열 목록 오류에 대해 일치하는 고유 또는 기본 키가 없습니다. (0) | 2023.07.03 |