网站深度测评
LocalePack是什么网站?
LocalePack 是一个面向 Chrome 扩展开发者的 AI 本地化工具,核心用途是把扩展的 messages.json 翻译成多种语言,并生成可直接放入扩展的 _locales 目录结构 ZIP 包。
它解决什么问题
Chrome 扩展的 i18n 依赖 _locales/{locale}/messages.json,手动翻译容易破坏 $PLACEHOLDER$ 变量或格式。LocalePack 专为这套格式设计,上传源文件后选择目标语言,付款后生成 52 种语言(页面选项显示 55 种)的完整文件包。
主要功能
- 支持 Chrome 的
message、description、placeholders字段 - 占位符保护:
$USER$这类变量在所有语言中保持不变 - 把
description当作上下文提示,提高翻译准确度 - 输出正确的
_locales/{lang}/messages.json文件夹结构,打包成一个 ZIP - 多语言并行处理,多数任务 5 分钟内完成
- 一次性付费,无订阅
适合谁、什么时候用
- 独立开发者或小团队准备把 Chrome 扩展上架到多语言市场,但不想逐语言手工翻译
- 已有英文
messages.json,需要快速补齐德语、日语、简体中文等目标语言 - 对占位符和格式合规敏感、担心通用翻译工具破坏变量的项目
使用流程
- 上传源
messages.json(最大 500KB,仅支持 Chrome 扩展格式) - 从语言列表中选择目标语言,付款前可看到按文件大小估算的价格
- 通过 Stripe 一次性付款,任务进入队列,几分钟后下载 ZIP
和其他方案的区别
通用翻译工具(如直接粘贴文本的 AI 翻译)不识别 Chrome 的 messages.json 结构和占位符规则,容易产出需要手动修复的文件。LocalePack 的侧重点就是这套格式的原生支持与合规导出,而不是泛用翻译。如果你需要的是文档、网页等通用内容翻译,它并不合适。
下一步
如果你有现成的 Chrome 扩展 messages.json,可以先用它的定价估算器上传文件、勾选语言,确认价格后再决定是否结账。
用LocalePack翻译Chrome扩展的messages.json时,占位符和变量会被破坏吗?
不会。LocalePack 明确以“占位符保护”作为核心功能:它按 Chrome 扩展的 messages.json 结构解析内容,$PLACEHOLDER$ 这类语法会原样保留,变量在所有目标语言中都不被改写。
具体来说,它处理的是这三类字段:
message:被翻译的正文description:作为翻译上下文提示,帮助 AI 判断语气和含义placeholders:连同content(如$1)一起保留,不参与翻译
资料里的德语示例可以直接说明这一点:源文件 "Hello, $USER$!" 输出为 "Hallo, $USER$!",$USER$ 和 placeholders 里的 "user": { "content": "$1" } 都保持原样。
适合用它的场景是:你维护一个 Chrome 扩展,messages.json 里用了 $USER$、$COUNT$ 之类的动态变量,需要一次性生成多语言的 _locales/{lang}/messages.json,又不想事后手动逐个检查占位符是否被 AI 改坏。
如果你的文件里除了标准 $PLACEHOLDER$,还有自己约定的特殊标记(例如 {name}、%s 这类非 Chrome 原生写法),建议先上传一个含这些标记的小文件试跑,核对输出后再批量处理。
LocalePack支持哪些语言,一次最多能翻译多少种?
LocalePack 一次可勾选最多 55 种语言,页面语言列表覆盖 52 个 Chrome 语言环境(含英语、中文、西班牙语等变体)。
具体语言数量
- 官方页面标题写的是“52 locales”。
- 定价估算器界面写的是“已选择 55 种语言中的 3 种”。
- 实际可选列表包含 Arabic、German、Japanese、Chinese (Simplified)、Chinese (Traditional) 等,并区分 en、en_AU、en_GB、en_US、es、es_419、pt_BR、pt_PT 等区域变体。
一次能翻译多少
- 没有“单次上限”说明,选择器支持全选或清除,可以一次勾选全部 55 种,生成一个包含所有
_locales/{lang}/messages.json的 ZIP。 - 文件大小上限为 500KB,超过这个体积的
messages.json不能上传。 - 所有语言并行处理,资料称大多数任务 5 分钟内完成。
对你意味着什么
如果你只做中英日三语,勾 3 种即可;如果要做全量上架,可以一次全选,付费一次拿到完整 _locales 目录。价格按字符串长度和所选语言数量在结账页计算,上传前只能看到估算。
LocalePack的定价是怎么计算的,需要订阅吗?
LocalePack 是一次性付费,不需要订阅。按资料里的说法,是“一次付费”“无订阅、无月费”,每个任务付一次,之后可以永久下载生成的 ZIP。
价格怎么算
- 付款前可以用页面上的“透明定价估算器”先看预估:上传
messages.json、勾选目标语言,就能看到大致金额。 - 最终报价在结账页上传文件后计算,依据是字符串长度 + 所选语言数量。
- 源文件限制为 Chrome 扩展格式,最大 500KB;支持从 52/55 种语言中挑选(页面不同位置分别写了 52 和 55,实际以下单时列表为准)。
什么时候适合用它
如果你是要给 Chrome 扩展做多语言、手头有 messages.json,又不想按月付翻译平台的钱,这种按次付费更合适:翻译在付款后进入队列,多数任务 5 分钟内出 ZIP。
下一步 先上传源文件、选语言,看估算器给出的价格,再决定是否结账。如果只是偶尔发版、语言数量不多,一次性付费通常比订阅划算;如果长期频繁更新大量文案,则需要自己衡量每次任务成本。
LocalePack生成的_locales ZIP可以直接放进Chrome扩展使用吗?
可以直接使用。LocalePack 输出的就是符合 Chrome 扩展规范的 _locales/{lang}/messages.json 目录结构,下载后解压放进扩展根目录即可。
具体用法
- 上传源
messages.json,选择目标语言,付费后下载 ZIP。 - ZIP 内按
_locales/de/messages.json、_locales/fr/messages.json等语言文件夹组织,直接对应 Chrome 运行时读取的路径。 - 前提是你的源文件本身是 Chrome 扩展格式:每个键有
message字段,可选description用于上下文,placeholders用于动态值。LocalePack 原生支持这三项。
它特别处理的两点
- 占位符保护:
$USER$这类语法原样保留,翻译后变量不会被改坏。 - 描述上下文:读取
description字段作为翻译提示,提升准确度。
落地前建议做的检查
- 确认
manifest.json里已声明default_locale,且对应语言文件夹存在。 - 抽查几门语言的
messages.json,重点看带placeholders的键是否完整。 - 用
chrome.i18n.getMessage()实际跑一遍,验证运行时取到的字符串正确。
什么情况下适合用它
- 你已经有可用的源
messages.json,想一次性生成多语言版本,不想逐语言手工翻译。 - 需要覆盖较多语言(它支持 52 种以上),且在意占位符不被破坏。
如果只是想验证流程,可以先上传一个小文件、选一两门语言看输出结构,确认无误再批量处理。
Chrome扩展的i18n本地化中,description字段和default_locale起什么作用?
description 字段是给翻译者看的上下文,default_locale 是 Chrome 找不到匹配语言时的兜底语言。两者都不影响扩展运行时的取词逻辑,但一个决定翻译质量,一个决定缺省行为。
description 字段:翻译的上下文提示
在 messages.json 里,每个键可以带一个 description:
"welcomeMsg": {
"message": "Hello, $USER$!",
"description": "主页顶部向用户问好"
}
它的用途是向翻译者(人或 AI)说明这条文案出现的场景、语气或含义,帮助避免歧义。例如同一个 "Open" 在按钮上和在文件菜单里译法可能不同,description 就是消除这种歧义的地方。Chrome 本身不会把 description 展示给最终用户。
LocalePack 明确把这一点当作卖点:它会读取你的 description 字段,把它作为上下文提示喂给翻译模型,从而得到更贴合语境的译文。也就是说,你写得越清楚,输出质量越可控。
default_locale:缺省语言与文件夹约定
Chrome 扩展在 manifest.json 里声明:
"default_locale": "en"
它有两个作用:
- 指定
_locales/下哪个子文件夹是默认语言,通常也是源语言。 - 当用户浏览器语言在
_locales/中没有对应翻译时,Chrome 回退到default_locale对应的字符串。
配套的目录结构是固定的,每个语言一个文件夹:
_locales/
├── en/messages.json ← default_locale
├── de/messages.json
└── ja/messages.json
对本地化流程的影响
- 如果你用了 i18n 却没声明
default_locale,或声明的语言文件夹不存在,构建或加载就可能出问题——LocalePack 页面里专门提到 “Chrome-specific rules that break builds” 这一类坑。 - 用 LocalePack 这类工具时,你上传源
messages.json、勾选目标语言,它按_locales/{lang}/messages.json结构打包成 ZIP,default_locale对应的源文件需要你自己在manifest.json里保持正确。
写 description 的实用建议
- 一句话说明这条文案在界面中的位置和用途,比只写“按钮”有用得多。
- 涉及变量(如
$USER$)时,可以说明变量代表什么,避免译文语序错乱。 - 不需要每条都写,但名称、易歧义的短词、带占位符的句子最值得写。
用户评价(0)