提前准备以下可直接使用的资源,无需额外查找:
提前统一翻译key命名规则:模块名.页面名.功能点.提示类型,比如archive.upload.success=档案上传成功,避免后续key命名冲突。
这一步要100%覆盖所有硬编码文本,避免遗漏导致改造不彻底:
/[\u4e00-\u9fa5]+/g,覆盖.vue/.jsx/.tsx所有文件,包括路由标题、按钮文本、提示框内容、静态配置文案首先执行安装命令:
```bash npm install i18next vue-i18next i18next-http-backend i18next-browser-languagedetector ```新建src/i18n/index.js,完整可复制配置如下:
```javascript import i18n from 'i18next' import { initReactI18next } from 'vue-i18next' import Backend from 'i18next-http-backend' import LanguageDetector from 'i18next-browser-languagedetector' import zhCN from './locales/zh-CN.json' import enUS from './locales/en-US.json' i18n .use(Backend) .use(LanguageDetector) .use(initReactI18next) .init({ fallbackLng: 'zh-CN', debug: process.env.NODE_ENV === 'development', resources: { 'zh-CN': { translation: zhCN }, 'en-US': { translation: enUS } }, interpolation: { escapeValue: false } }) export default i18n ```在main.js中引入配置:import './i18n'即可完成前端框架接入。

在resources目录下新建i18n文件夹,放入messages_zh_CN.properties、messages_en_US.properties文件,内容和前端json一一对应即可。
application.yml新增完整配置:
```yaml spring: messages: basename: i18n/messages encoding: UTF-8 fallback-to-system-locale: false default-locale: zh_CN ```新增国际化配置类,可直接复制使用:
```java @Configuration public class I18nConfig implements WebMvcConfigurer { @Bean public LocaleResolver localeResolver() { SessionLocaleResolver resolver = new SessionLocaleResolver(); resolver.setDefaultLocale(Locale.SIMPLIFIED_CHINESE); return resolver; } @Bean public LocaleChangeInterceptor localeChangeInterceptor() { LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor(); interceptor.setParamName("lang"); return interceptor; } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(localeChangeInterceptor()); } } ```{{ '档案列表' }}替换为{{ $t('archive.list.title') }}this.$message.success(`档案${file.name}上传成功`)替换为this.$message.success(this.$t('archive.upload.success', {fileName: file.name}))Accept-Language请求头,值为当前语言标识,比如zh-CN、en-US,传递给后端做语言识别注入MessageSource工具类,直接调用获取对应语言文本,示例代码:
```java @Autowired private MessageSource messageSource; // 调用示例,自动根据请求头的locale返回对应文本 public Result upload(String fileName) { try { // 档案上传业务逻辑 String msg = messageSource.getMessage("archive.upload.success", null, LocaleContextHolder.getLocale()); return Result.success(msg); } catch (Exception e) { Object[] params = {fileName}; String errorMsg = messageSource.getMessage("archive.upload.fail", params, LocaleContextHolder.getLocale()); return Result.error(errorMsg); } } ```direction: rtl属性即可自动适配按以下checklist逐项验证,确保无遗漏:
npx eslint-plugin-i18n check ./src快速扫描前端遗漏中文所有项验证通过后即可上线,后续新增功能直接按规则添加对应翻译即可,无需再调整框架。