LocalePack
ChromeFirefoxEdgeOperaSafariCWS 列表
Vue.jsReact
Next.jsi18nextReact Native
开发指南成功案例
One format, every major browser

面向以下内容的 AI 本地化: browser extensions

上传你的源 messages.json,选择目标语言,一次付费,即可下载可直接发布的 _locales ZIP。

占位符安全的翻译
符合 WebExtension messages.json 规范
价格透明
messages.json
源语言(示例)
{
  "appName": {
    "message": "My Extension",
    "description": "Name"
  },
  "welcomeMsg": {
    "message": "Hello, $USER$!",
    "placeholders": {
      "user": {
        "content": "$1"
      }
    }
  }
}
德语(输出)
{
  "appName": {
    "message": "Meine Erweiterung",
    "description": "Name"
  },
  "welcomeMsg": {
    "message": "Hallo, $USER$!",
    "placeholders": {
      "user": {
        "content": "$1"
      }
    }
  }
}
52 locales

工作原理

三步即可为你的 browser extension 完成本地化。翻译将在付款后开始——我们会将任务加入队列,并在几分钟内生成 ZIP。

01

上传

拖放你的源 messages.json 文件。我们会立即解析并验证 browser extension 格式。

02

选择语言并查看价格

从 52 种语言中选择。付款前即可根据文件大小查看透明定价。

03

下载 ZIP

通过 Stripe 一次付费。我们会生成所有 _locales/{lang}/messages.json 文件,并将它们打包成一个 ZIP。

实时定价演示

透明定价估算器

上传前即可清楚了解你将支付的金额。最终报价会在上传后根据字符串长度和所选语言计算得出。

1. 上传文件

将 messages.json 拖放到这里

或点击浏览

WebExtension messages.json format. Max 500KB.

2. 选择语言

|

已选择 55 种语言中的 3 种

3. 你的预估

已选择的语言3

最终价格将在结账页上传文件后计算

一次性付款 • 无订阅

为开发者打造

专为 browser extension 语言环境格式打造。不是通用翻译工具。

支持 WebExtension 格式

专为 browser extension 的 messages.json 结构打造,支持 message、description 和 placeholders。

占位符保护

原样保留 $PLACEHOLDER$ 语法。你的变量在所有语言中都保持完整。

描述上下文

我们会读取你的 description 字段,并将其作为上下文提示,以获得更准确的 AI 翻译。

可直接导出 ZIP

下载包含正确 _locales/{lang}/messages.json 文件夹结构的 ZIP。直接放入你的扩展即可。

并行处理

所有语言同时翻译。大多数任务在 5 分钟内完成。

一次性付款

无订阅、无月费。每个任务只需支付一次,永久下载。

WebExtension 扩展的 i18n 如何工作

Every major browser reads the same _locales/{locale}/messages.json structure. Chrome, Edge and Opera expose the chrome.i18n namespace; Firefox and Safari expose browser.i18n. The file format, the placeholder syntax and the default_locale requirement are identical across all of them, which is why a single translated folder ships everywhere.

_locales/ 文件夹结构
_locales/
├── en/
│   └── messages.json   ← default_locale
├── de/
│   └── messages.json
├── fr/
│   └── messages.json
└── ja/
    └── messages.json
messages.json
{
  "appName": {
    "message": "My Extension",
    "description": "Extension name"
  },
  "greeting": {
    "message": "Hello, $USER$!",
    "placeholders": {
      "user": { "content": "$1" }
    }
  }
}

运行时 API

chrome.i18n / browser.i18n

示例调用

getMessage("key")

在 manifest 中必需

"default_locale"

In-extension strings come from _locales/. Store listing copy is managed separately in each store's own dashboard — translating one does not translate the other.

messages.json format explained →

What actually differs between browsers

The messages.json format is shared across every major browser. Only four things vary, and none of them require re-translating your strings.

Runtime namespace
Chrome, Edge, and Opera expose chrome.i18n. Firefox and Safari expose browser.i18n. The method names and arguments are otherwise the same.
Folder location
Most browsers read _locales/ from the extension root. Build frameworks move it: WXT emits public/_locales/, and Plasmo reads locales/ rather than _locales/.
Store listing text
In-extension strings come from _locales/. Store listing copy does not — Chrome Web Store, AMO, and App Store Connect each manage listing translations in their own dashboard.
Locale-code lists
Chromium browsers accept a fixed set of underscore-separated codes and silently ignore anything else. Check your codes before shipping rather than after.

One translated _locales/ folder covers Chrome, Firefox, Edge, Opera, and Safari. The porting work is in the build, never in the strings.

为什么不直接用通用工具?

通用翻译工具不理解 browser extension 格式。

LocalePack
人工翻译
通用 TMS
设置时间2 分钟每种语言数小时30+ 分钟
成本透明度
WebExtension 格式安全性
占位符保护
速度(52 种语言)< 5 分钟周小时
最适合Cross-browser extensions小型项目企业级 Web 应用

成功案例

真实项目使用 LocalePack,最多支持 52 种语言,触达全球受众。

AstrologerAI AI astrology app localized into 52 languages

AstrologerAI: an AI astrology app localized into 52 languages

How the AstrologerAI app translated its entire experience into 52 languages with LocalePack — 6.3M tokens for $58.73 — to reach a worldwide audience in their own language.

DevToys.pro developer tools web app localized into 52 languages

DevToys.pro: 400% international traffic growth across 52 languages

How the DevToys.pro web app translated its entire UI into 52 languages with LocalePack — 5.8M tokens for $58.44 — and quadrupled its international organic traffic.

DevToys New Tab Chrome extension localized into 52 languages

DevToys New Tab: a Chrome extension localized UI + store listing in 52 languages

How the DevToys New Tab Chrome extension localized both its in-extension UI and its Chrome Web Store listing into 52 languages to reach a global audience.

The LocalePack site localized into 52 languages with LocalePack

LocalePack localized itself into 52 languages — with LocalePack

We used our own tool to translate the entire LocalePack site into 52 languages — 2.9M tokens for $27.37 — so developers worldwide find us in their own language.

查看所有成功案例

深受扩展开发者信赖

“帮我省下了好几个小时的繁琐工作。上传我的 messages.json,就能拿到完全符合我所需格式的完美翻译。”

Sarah K.

独立开发者,AdBlock 扩展

“We ship the same _locales folder to Chrome, Firefox and Edge. One translation pass covers all three.”

Marcus T.

扩展维护者

“透明定价是我选择它的关键。我在上传任何内容之前就清楚知道自己要付多少钱。”

Dev J.

开源贡献者

52

支持的语言环境

100%

占位符安全输出

ZIP

可直接上线

常见问题

关于 LocalePack,你需要了解的一切。

Related developer guides

Deep dives on the formats, APIs and errors behind this page — written for developers, not translators.

messages.json format explained (with placeholders)

A complete reference for the WebExtension messages.json format: the message, description, and placeholders fields, $PLACEHOLDER$ syntax, $1 positional substitutions, and common mistakes.

WXT i18n: @wxt-dev/i18n and messages.json

How @wxt-dev/i18n compiles YAML, JSON, JSONC, JSON5 and TOML message files into standard _locales/{lang}/messages.json — setup, nested keys, plurals, substitutions, type safety, and how to translate a WXT project.

Plasmo i18n: the locales/ folder gotcha

Plasmo does not read _locales/ at the project root. The three paths it does accept, where default_locale actually lives, the alphabetical-default trap, and how to place a translated _locales ZIP correctly.

Adding i18n to a CRXJS extension

CRXJS ships no i18n helper and its docs have no i18n page. Here is the working pattern: put _locales under public/, declare default_locale in manifest.config.ts, and call chrome.i18n directly.

Browse all guides →

准备好将你的 browser extension 推向全球了吗?

一次付费 - 下载 ZIP - 全球发布

试用 LocalePack
LocalePack
指南隐私条款支持

© 2025 LocalePack。保留所有权利。

本项目使用以下工具翻译: LocalePack logoLocalePack