I18n
本页介绍如何使用原生 browser.i18n
API 设置国际化,并提及如果你想使用其它方案时的替代选择。
用法
在 manifest 中添加
default_locale
:tsexport default defineConfig({ manifest: { default_locale: 'en', }, });
在
public/
目录下创建messages.json
文件:html📂 {rootDir}/ 📂 public/ 📂 _locales/ 📂 en/ 📄 messages.json 📂 de/ 📄 messages.json 📂 ko/ 📄 messages.json
jsonc// public/_locales/en/messages.json { "helloWorld": { "message": "Hello world!", }, }
获取翻译内容:
tsbrowser.i18n.getMessage('helloWorld');
可选:为扩展名称和描述添加翻译:
json
{
"extName": {
"message": "..."
},
"extDescription": {
"message": "..."
},
"helloWorld": {
"message": "Hello world!"
}
}
ts
export default defineConfig({
manifest: {
name: '__MSG_extName__',
description: '__MSG_extDescription__',
default_locale: 'en',
},
});
替代方案
原生 API 功能较少,因此你可能会考虑使用第三方 NPM 包,如 i18next
、react-i18n
、vue-i18n
等。
不过,推荐你坚持使用原生 API(或基于原生 API 的包,如 @wxt-dev/i18n
),因为:
- 可以本地化 manifest 和 CSS 文件中的文本
- 翻译内容同步加载
- 翻译内容不会被多次打包,保持扩展体积小
- 零配置
但原生 API 及其衍生包有一个主要缺点:
- 语言无法在不更改浏览器/系统语言的情况下切换
以下是如何设置第三方 i18n 库的示例: