Skip to content

Instantly share code, notes, and snippets.

@SpringBootApplication
public class I18NWebMVCApplication {
public static void main(String[] args) {
SpringApplication.run(I18NWebMVCApplication.class, args);
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>I18N Spring Boot</title>
</head>
<body>
<h2 data-th-text="#{home.welcome}"></h2>
<p data-th-text="#{home.info}"></p>
<p data-th-text="#{home.changelanguage}"></p>
@Controller
public class HomeController {
@RequestMapping("/")
public String welcome(Map<String, Object> model) {
return "index";
}
}
@Component("messageSource")
public class DBMessageSource extends AbstractMessageSource {
@Autowired
private LanguageRepository languageRepository;
private static final String DEFAULT_LOCALE_CODE = "en";
@Override
protected MessageFormat resolveCode(String key, Locale locale) {
@Service
public class LanguageService implements LanguageServiceInf {
@Autowired
private LanguageRepository languageRepository;
@Override
public Map<String, String> getAllMessageByLocale(String locale) {
List<LanguageEntity> langList = languageRepository.findAllByLocale(locale);
return langList
@Repository
public interface LanguageRepository extends JpaRepository<LanguageEntity, Integer> {
LanguageEntity findByKeyAndLocale(String key, String locale);
}
@Entity
@Table(name = "languages")
public class LanguageEntity {
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
@Column
private Integer id;
@Column
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Bean
public LocaleResolver localeResolver() {
return new CookieLocaleResolver();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driverClassName=org.h2.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.h2.console.path=/myconsole
spring.h2.console.enabled=true
spring.datasource.initialize=true
INSERT INTO languages (locale, messagekey,messagecontent) VALUES
('en', 'home.welcome','Welcome'),
('en', 'home.info','This page is displayed in English.'),
('en', 'home.changelanguage','Supported languages : '),
('en', 'home.lang.en','English'),
('en', 'home.lang.de','German'),
('en', 'home.lang.zh','Chinese'),
('de', 'home.welcome','Welcome'),
('de', 'home.info','Diese Seite wird in deutscher Sprache angezeigt.'),