前端国际化(i18n)最佳实践与架构设计指南
引言
在前端开发中,硬编码多语言字符串是常见但不可取的做法。随着业务全球化,支持多种语言和地区成为刚需。本文介绍如何构建健壮的国际化(i18n)系统。
国际化概念
i18n (Internationalization) 指让软件有能力支持多种语言和地区的技术架构;L10n (Localization) 指针对特定地区的翻译、格式和文化适配。核心思路是将文字抽离成资源文件,运行时根据当前语言动态替换。
主流框架支持:Vue (vue-i18n)、React (react-i18next)、Angular ($locale)。
主流方案对比
i18next
老牌稳定,生态丰富,支持 Node.js、React Native 等。插件系统完善,自带复数处理。
// i18next 基础配置示例
import i18next from 'i18next';
i18next.init({
lng: 'zh',
fallbackLng: 'en',
resources: {
zh: { translation: { welcome: '欢迎回来,{{name}}!' } },
en: { translation: { welcome: 'Welcome back, {{name}}!' } }
},
interpolation: { escapeValue: false }
});
console.log(i18next.t('welcome', { name: '张三' }));
vue-i18n
Vue 官方推荐,支持 Composition API 和 <i18n> 单文件组件块。
<template>
<div>
<h1>{{ $t('user.greeting', { name: user.name }) }}</h1>
<button @click="toggleLocale">切换语言</button>
</div>
</template>
<script setup>
import { useI18n } from 'vue-i18n';
const { t, locale } = useI18n();
const toggleLocale = () => {
locale.value = locale.value === 'zh' ? 'en' : 'zh';
};
</script>
注意:v9 版本有 Breaking Change, 方法已合并至 。


