| name | translate-pseudocn |
| description | 为文档撰写技能提供伪中国语(pcn)语言支持。以日语汉字词汇为基础、剥离平假名与片假名、保留日语语序的伪本地化。可被 write-project-docs 自动发现调用。 |
| language_code | pcn |
| display_name | 偽中国語 |
| base_language | ja |
伪中国语翻译
为 NixKits 文档体系提供 pcn(伪中国语)语言。
自动发现契约
write-project-docs / write-maintenance-log 通过扫描 skills/translate-*/SKILL.md frontmatter 自动发现:
| 字段 | 值 | 用途 |
|---|
language_code | pcn | 目录名、文件扩展名 |
display_name | 偽中国語 | 语言切换器标签 |
base_language | ja | 源语言 |
设计原则
伪中国语是日语文本剥离假名后的视觉结果,不是中文翻译。
- 基于智能体自然语言理解进行转换,不使用自动化脚本/正则替换。理解句子结构后再做转换。
- 语序转换为中文语序(SOV → SVO)
- 日文汉字名词保持原样
- 片假名外来语优先查词典映射为日本汉字,未命中则剥离
- 禁止使用简体中文或繁体中文汉字(如「软件」「安装」「模块」)
替换规则
1. 剥离假名
去除所有平假名(あ-ん)。片假名(ア-ン)按以下优先级处理:
- 查
dictionary.md 映射为日本汉字
- 未命中 → 剥离(仅保留上下文中的日文汉字)
2. 保留日文汉字
日文汉字名词原样保留,包括:
| 示例 | 保留形式 | 说明 |
|---|
| 開発 | 開発 | 日文汉字,非「开发」 |
| 環境 | 環境 | 日文汉字 |
| 管理 | 管理 | 日文汉字 |
| 提供 | 提供 | 日文汉字 |
| 設定 | 設定 | 日文汉字 |
| 情報 | 情報 | 日文汉字 |
3. 保留日语语序
日语 SOV 语序转换为中文 SVO 语序(主-动-宾)。
4. 助词转换(最小化)
助词适当保留以增加文本丰富性,仅剥离无实义的语法标记:
| 日文 | 変換 | 条件 |
|---|
| の | 之 | 所有/所属 |
| と | 與 | 并列连接 |
| に | 於 | 方向/目标 |
| で | 以 | 手段/场所 |
| から | 自 | 起点 |
| まで | 至 | 终点 |
| は | (剥离) | 主题标记,无实义 |
| が | (剥离) | 主语标记,无实义 |
| を | (剥离) | 宾语标记,无实义 |
5. 标点
日文标点保持原样(、 。 不转换)。
6. 代码块保护
- Nix 代码块:仅翻译
# 注释行
- Bash 代码块:全部不动
- 先按
``` 边界提取代码块,仅对非代码区域应用规则
验证
翻译完成后,使用以下脚本检查输出文件是否残留假名:
import re
def check_kana(path):
with open(path) as f:
text = f.read()
blocks = re.split(r'```', text)
outside = ''.join(blocks[i] for i in range(0, len(blocks), 2))
kata = re.findall(r'[\u30A0-\u30FF]{2,}', outside)
hira = re.findall(r'[\u3040-\u309F]{2,}', outside)
if kata: print(f'残片假名: {kata}')
if hira: print(f'残平假名: {hira}')
词典
片假名→日本汉字映射见 dictionary.md。仅包含有对应日本汉字词的片假名外来语。
注意事项
- 伪中国语是视觉伪本地化,外观是「汉字+符号」的日文文本
- 禁止使用简体中文汉字(如「软件」「安装」「模块」「设置」)
- 语言切换器生成:从日文源提取路径逐个精确构造
日本語→[日本語](加链接),自身标签 偽中国語(纯文本)
- 验证发现的残留片假名应立即翻译并加入
dictionary.md,然后重新生成所有 pcn 文档
常见陷阱与修复(实战经验)
1. 片假名词典映射必须优先于剥离
所有片假名在剥离前必须先查词典。常见遗漏项及对应日文汉字:
| 片假名 | 日文汉字 | 常见出现问题 |
|---|
| タイプ | 種別 | 基本信息表格的类型行变为空列 |
| アイコン | 図標 | 图标行显示空值 |
| タイル | 磁貼 | 标题行丢失 |
| サービス | 服務 | 服务模块描述缺失主体 |
验证方法:翻译完成后,对所有 pcn 文件运行残留假名检查脚本(见上方「验证」节)。
同时额外检查表格中是否存在空列(grep '^| |' docs/pcn/*.md)。
2. 语言切换器必须双向更新
新增 pcn 文件后,所有现有语言版本的同一文档都需要追加 [偽中国語] 链接。
仅更新 pcn 文件自身的切换器是不够的——zh/en/ja 的切换器行同样需要新增条目。
3. 禁止使用简体中文汉字
日文汉字「開発」「環境」「設定」「情報」必须原样保留,绝不能替换为简体中文的「开发」「环境」「设置」「信息」。
4. 标点保持日文
日文标点 、 。 不转换为中文 , 。。
5. 子代理生成文件的切换器必须包含全部语言
子代理生成新语言文件时,容易只输出 3 条目切换器(如 [中文] | [English] | [偽中国語]),缺少其他已安装的扩展语言链接(如 [日本語])。父代理在接收子代理输出后,必须验证并补全切换器至所有已发现语言。
验证命令:
for f in docs/pcn/*.md; do
line=$(grep '^\[中文\]' "$f")
echo "$line" | grep -q "$expected" || echo "MISSING $expected in $f"
done
done
6. 本地化文档内链必须指向同语言版本
模块文档表格中的链接指向源语言文档。转换为 pcn 后必须改为指向 pcn 版。例如 ](ja/nginx.md) → ](./nginx.md)。同时注意顶层文档的跨深度链接调整(../LICENSE → ../../LICENSE)。