WXT浏览器插件开发中文教程(20)----I18n国际化

前言

大家好,我是倔强青铜三 。是一名热情的软件工程师,我热衷于分享和传播IT技术,致力于通过我的知识和技能推动技术交流与创新,欢迎关注我,微信公众号:倔强青铜三。欢迎点赞、收藏、关注,一键三连!!!

I18n

Chrome 文档Firefox 文档

本页面讨论了如何使用原生的 browser.i18n API 设置国际化,并提到了一些替代方案,如果你希望使用其他工具。

使用方法

  1. 在清单文件中添加 default_locale

    ts 复制代码
    export default defineConfig({
      manifest: {
        default_locale: 'en',
      },
    });
  2. public/ 目录下创建 messages.json 文件:

    html 复制代码
    📂 {srcDir}/
       📂 public/
          📂 _locales/
             📂 en/
                📄 messages.json
             📂 de/
                📄 messages.json
             📂 ko/
                📄 messages.json
    json 复制代码
    // public/_locales/en/messages.json
    {
      "helloWorld": {
        "message": "Hello world!",
      },
    }
  3. 获取翻译:

    ts 复制代码
    browser.i18n.getMessage('helloWorld');
  4. 可选:为扩展程序的名称和描述添加翻译:

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 包,例如 i18nextreact-i18nvue-i18n 等。

然而,建议你坚持使用原生 API(或者基于原生 API 的包,例如 @wxt-dev/i18n),因为:

  • 它们可以在清单文件和 CSS 文件中本地化文本
  • 翻译是同步加载的
  • 翻译不会多次打包,保持扩展程序体积小
  • 零配置

然而,原生 API 及其基础上的任何包都有一个主要缺点:

  • 无法在不更改浏览器/系统语言的情况下更改语言

以下是一些设置第三方 i18n 库的示例:

最后感谢阅读!欢迎关注我,微信公众号倔强青铜三。欢迎点赞收藏关注,一键三连!!!

相关推荐
benbenAItalk2 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
2601_962885722 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
西瓜太郎12343 小时前
Claude Code、Codex CLI、Gemini CLI 能否共用一枚 Key?先看协议选择矩阵
前端·api 网关·claude code·gemini cli·codex cli
多加点辣也没关系3 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
陈随易5 小时前
在Finch用了62亿词元,我认为这是新一代Agent工具之神
前端·人工智能·后端
水域安全老周5 小时前
水趣钓鱼救生衣专利拆解:两级锁紧如何解决落水人衣分离
java·前端·网络
计算机魔术师6 小时前
Anthropic CEO突然喊踩刹车,OpenAI罕见力挺:AI这辆车不能只踩油门了
前端
wing986 小时前
从codex转战workbuddy使用一周的感受
前端·人工智能·后端
Highcharts.js6 小时前
常见报错排雷指南2:导出失败的官方解法
javascript·react.js·ecmascript·highcharts·可视化图表·导出模块失败·导出服务
EatFan6 小时前
Java接入支付宝 JSAPI 支付保姆教程(二):流程讲解与前后端代码讲解
前端·spring boot·后端·微信小程序·小程序·uni-app