# 语言包 / Locales

一个文件一种语言：`<语言>-<地区>.json`。插件启动时会按浏览器语言挑一个最接近的，
挑不到就用 `zh-CN.json`。

## 加一种语言

1. 复制 `zh-CN.json` 成 `<你的语言>.json`，比如 `ja-JP.json`、`de-DE.json`、`pt-BR.json`。
   文件名大小写和横线都要照这个形状来，否则不会被认出来。
2. 把值翻译掉，**键名一个都不要改**——键名是插件里 `L.xxx` 的读取路径，改了就读不到。
3. 跑一遍检查：

   ```bash
   node scripts/check-locales.mjs
   ```

   它会告诉你少了哪些键、占位符对不对、JSON 有没有写坏。
4. 提 PR，只改 `locales/` 下的文件。

## 三条硬规则

1. **占位符必须原样保留。** 值里出现 `{n}`、`{path}` 这类花括号占位符，翻译后还得有，名字也不能改。
   插件靠 `replace('{n}', ...)` 把数字塞进去，改掉就变成一句永远读不出数字的话。
2. **允许少翻，不允许错键。** 暂时没想好怎么翻的键可以留着中文不动，运行时会自己回落到中文；
   但键名拼错等于这个位置没文案，界面上会显示 `undefined`。
3. **保持技术语气。** 这些文案出现在保存按钮、冲突弹窗、错误提示里，读者正卡在一个具体问题上。
   把「目标文件已被外部修改」写成「哎呀文件被别人动过了」会让人多花一秒才反应过来发生了什么。

## 长度

按钮和小标签会换行，但不要长到把按钮撑成两行。中文 8 个字以内、英文 24 个字符以内的键
基本都已经在这个范围里；`*Hint` 结尾的是说明文字，可以长一些。

## 没有的语言怎么办

没翻的键自动用中文，所以一份只翻了一半的语言包也是可用的——比只有中文强。
`en-US.json` 是完整翻译，可以拿它对照长句怎么断。

## 现在有哪些

| 文件 | 状态 |
| --- | --- |
| `zh-CN.json` | 源语言（简体中文），新增键先加在这里 |
| `en-US.json` | 完整 |
