在Spring Boot项目中实现国际化,同时使用纯HTML前端,以下是一个完整的案例:
**1. Spring Boot 后端:**
**1.1. 项目依赖:**
确保在`pom.xml`文件中包含以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
```
**1.2. 国际化配置类:**
创建一个配置类来配置 `MessageSource` 和 `LocaleResolver`:
```java
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
import java.util.Locale;
@Configuration
public class InternationalizationConfig {
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver();
resolver.setDefaultLocale(Locale.US);
return resolver;
}
}
```
**1.3. 控制器类:**
创建一个控制器类,提供获取国际化消息的接口:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.LocaleResolver;
import java.util.Locale;
@RestController
public class InternationalizationController {
@Autowired
private MessageSource messageSource;
@Autowired
private LocaleResolver localeResolver;
@GetMapping("/greeting")
public String greeting(@RequestHeader(name = "Accept-Language", required = false) String language) {
Locale currentLocale = localeResolver.resolveLocale(language);
return messageSource.getMessage("greeting", null, currentLocale);
}
}
```
**1.4. 国际化消息文件:**
在`src/main/resources`目录下创建 `messages.properties` 和 `messages_zh_CN.properties` 文件,包含对应语言的消息。
`messages.properties`:
```properties
greeting=Hello!
```
`messages_zh_CN.properties`:
```properties
greeting=你好!
```
**1.5. 启动应用:**
启动Spring Boot应用程序。
**2. HTML 前端:**
**2.1. 创建 HTML 文件:**
创建一个HTML文件,比如 `index.html`:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Internationalization Example</title>
</head>
<body>
<div id="greeting"></div>
<script>
fetch('http://localhost:8080/greeting', {
headers: {
'Accept-Language': 'en' // Set the desired language
}
})
.then(response => response.text())
.then(data => {
document.getElementById('greeting').innerText = data;
});
</script>
</body>
</html>
```
在此示例中,通过使用JavaScript的`fetch` API来请求后端的 `/greeting` 接口,同时设置了 `Accept-Language` 头来指定语言。
确保前端和后端的国际化资源保持一致,以正确地展示国际化内容。这是一个简单的案例,你可以根据实际需求进行调整和扩展。