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.jsonjsonc// 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 库的示例: