波斯语 · Claude Code / 从右到左

Claude Code 说波斯语:language 设置、CLAUDE.md 与从右到左显示

能。官方 settings 参考写明:Claude Code 把 language 的值原样当作「一直用这种语言回答」的指令交给模型。回答语言没有固定列表,写 persian 或 farsi 都可以,Claude Code 不校验拼写(截至 2026-11-12 的官方原文)。波斯语的难点不在设置,而在显示:文字从右到左,半空格是 U+200C,ی 与 ي、ک 与 ك 是不同码位。

更新于 2026-11-13

一把 key 覆盖 Claude、GPT 与国产模型,按 token 计费。

#language 设置#CLAUDE.md#半空格 U+200C#RTL 与搜索

四个决定波斯语输出的事实

无固定列表

回答语言怎么设

官方 settings 参考原文:回答语言没有固定列表,值原样传给模型当「一直用这种语言回答」的指令,Claude Code 不校验,拼错的语言名会原样送到模型手里。

听写另算

语音听写为什么退回英语

同一个值也决定语音听写的语言,而听写有一份固定支持列表,里面没有波斯语;官方写明:language 不在这个列表里时,/voice 会提示并退回英语听写,文字回答不受影响。

半空格

U+200C 是什么

半空格就是 U+200C ZERO WIDTH NON-JOINER:它挡住两个字母之间的连写。Unicode 第 9 章举的例子正是波斯语复数后缀,并写明忽略或删掉它会得到意思不同、甚至无意义的文本。

两套字母、两套数字

为什么搜索搜不到

波斯语的 ی 是 U+06CC FARSI YEH、ک 是 U+06A9 KEHEH;阿拉伯语的 ي 是 U+064A YEH、ك 是 U+0643 KAF,四个都是不同码位。数字也一样:波斯数字是 U+06F0 到 U+06F9,阿拉伯-印度数字是 U+0660 到 U+0669。所以按字符搜索时一种写法匹配不到另一种;数字混排时顺序还受双向类别影响(波斯数字记为 EN,阿拉伯-印度数字记为 AN)。做法是先把写法统一,再比对或入库。

回答语言与仓库约定是两件事

官方文档把两件事分得很清楚。回答用哪种语言,是 settings 里的一项:language 的值原样交给模型,没有固定列表,也不校验;同一个值还决定语音听写和自动生成的会话标题。仓库里的书写约定——注释、标识符、commit message 用哪种语言——写在 CLAUDE.md 里:纯文本 Markdown,每次会话开始时读取,官方建议 200 行以内,更长会降低遵守度。两处都写,才既有波斯语解释、又有稳定的代码风格。

波斯语项目常见的三个坑

① 从右到左:阿拉伯字母体系从右往左写,官方要求实现用 Unicode 双向算法重排显示,所以终端里光标位置和字符顺序与屏上位置不是一回事。② 半空格被删:复制粘贴或脚本清洗常把 U+200C 去掉,词连在一起,意思也跟着变。③ 字母混用:从阿拉伯语资料里复制来的 ي 和 ك 与波斯语的 ی 和 ک 不是一个码位,搜索和替换都匹配不到。

三份来源的版本与日期

2026-11-12

Claude Code 的 settings 参考与 memory 页现状:language 没有固定列表、不校验;CLAUDE.md 是纯文本、每次会话开始时读取、建议 200 行以内。

2026-10-23

Claude 帮助中心「用你偏好的语言」那一页的最后更新时间;该页写 Claude 在网页与桌面应用支持多语言,并列出应用界面语言的清单。

2026-10-25

Vim 帮助文档 options.txt 的版本日期;其中 rightleft 让窗口的显示方向变成从右到左,而且按窗口生效。

官方写明 vs 你自己的仓库

官方写明

① Claude Code:回答语言没有固定列表,值原样传给模型、不校验,拼错不报错;听写有固定列表,不在列表里会退回英语听写,文字回答不受影响。② CLAUDE.md:纯文本、每次会话开始时读取、可用 @path 引入其他文件、建议 200 行以内、块级 HTML 注释在注入前被剥掉、它是上下文而不是强制配置。③ Unicode 第 9 章:阿拉伯字母体系从右往左写,实现必须用双向算法重排显示;半空格的例子写明是波斯语复数后缀;FARSI YEH 与 YEH 是不同的码位。④ W3C:控制字符不可见,纯文本里只能用它们,隔离类控制码比 RLE、LRE、PDF 更被推荐。⑤ GNU Emacs 手册:双向编辑支持阿拉伯语、波斯语(Farsi)与希伯来语,并实现 UBA。

官方没写死的部分

官方没有承诺「模型每次都一定用波斯语回答」:language 只是把值当指令传过去,遵守程度取决于模型和提示。长会话里会不会漂回英文、标识符里的波斯字母会不会被改写、你的终端给 U+200C 多少显示宽度,这些只能在你自己的仓库里验证。另有一条官方提示值得记住:双向文字用在标识符里有安全考量。

两个地方,两种职责

settings.json —— 回答语言

language 一项决定回答用哪种语言:值原样传给模型、不校验、没有固定列表;它同时决定语音听写语言(听写有固定列表)和自动生成的会话标题。

CLAUDE.md —— 书写约定

注释、标识符、commit message 用哪种语言,要不要把波斯字母写进变量名,示例代码用哪种语言——这类约定写进 CLAUDE.md:纯文本 Markdown,每次会话开始时读取,建议 200 行以内。

先设语言,再写规则

第一步,在 ~/.claude/settings.json 写一行 { "language": "persian" }(官方示例用的是 japanese,值不校验,写 farsi 也可以)。第二步,把仓库约定写进 ./CLAUDE.md,可以直接照抄这段:پاسخ‌ها را فارسی بنویس؛ کد، نام متغیرها و پیام کامیت را انگلیسی نگه دار.(回答用波斯语;代码、变量名与 commit message 保持英语。)第三步,在会话里用 /context all 确认这份文件已加载,然后给它一个真实任务,看波斯语在工具调用之后还在不在。

在 QCode 上

语言设置和 CLAUDE.md 都在你自己的机器上:CLI 先读它们,再把请求发出去,所以换模型不改变这两件事。QCode 的 Claude 型号走 Anthropic 协议,把 ANTHROPIC_BASE_URL 设为 https://api.qcode.cc/api,Key 用控制台里 cr_ 开头的那把即可;各模型单价见 /models,按 token 计费。按量包 ¥26 起买一笔额度,7 天内用完为止;已有个人套餐的用户额度不够时买加油包。

常见问题

Claude Code 支持波斯语吗?

可以。官方 settings 参考写明回答语言没有固定列表,值原样传给模型,Claude Code 不校验,所以写 persian 或 farsi 都行。但两处要分开看:应用界面语言是另一份固定清单,语音听写也是固定清单,听写那份里没有波斯语,选它会退回英语听写;文字回答不受影响。

怎么让它默认用波斯语回答?

在 ~/.claude/settings.json 写 { "language": "persian" },也可以写 farsi。官方示例用的是 japanese,说明类型就是任意语言名;值不校验,拼错也不报错,所以拼写要自己确认。项目级的 .claude/settings.json 同样能写这一项,想让整个仓库一致,就把约定再写进 ./CLAUDE.md。

终端里波斯文显示顺序不对怎么办?

先分清两种错觉。阿拉伯字母体系从右往左写,官方要求实现用 Unicode 双向算法重排显示,所以屏幕上是自右向左、文件里仍是从左往右存的;含数字或英文的混排行,数字与英文片段仍从左往右排。双向算法需要额外提示时,W3C 建议用隔离类控制码 RLI、LRI、PDI,而不是 RLE、LRE、PDF。编辑器层面有官方开关:Vim 的 rightleft 把窗口显示方向变成从右到左,GNU Emacs 有 bidi-display-reordering。

半空格显示成乱码或者干脆不见了怎么办?

半空格是 U+200C ZERO WIDTH NON-JOINER,宽度为零,所以「不见了」往往只是没有字形,字符还在。真正的风险是它被删掉:Unicode 第 9 章写明,忽略或删除这类非连接符会得到意思不同甚至无意义的文本,波斯语复数后缀就是官方举的例子。排查时打开编辑器的不可见字符显示;W3C 也提醒控制字符不可见、容易造成范围错配,而纯文本里又只能用它们。

CLAUDE.md 能用波斯语写吗?

可以。CLAUDE.md 是纯文本文件,Claude 每次会话开始时读取,规则用团队读得懂的语言写即可。比语言更要紧的是长度与位置:建议 200 行以内,更长会降低遵守度;块级 HTML 注释会在注入前被剥掉,别把规则藏在注释里;文件太长时用 @path 引入其他文件。

代码注释和 commit message 用哪种语言?

这是团队约定,不是厂商事实,但一定要写下来。常见做法是解释用波斯语、代码与 commit message 用英语:标识符里放波斯字母有两个具体麻烦,一是双向文字用在标识符里有官方提到的安全考量,二是波斯语与阿拉伯语的 ی 与 ي、ک 与 ك 是不同码位,搜索和代码审查都容易漏。把它写进 CLAUDE.md,它就成了一条每次会话都会读到的规则。

来源

Claude Code:settings 参考的 language 一节、memory 页(CLAUDE.md 的读取方式、长度建议、导入、HTML 注释)、voice-dictation 页(听写支持列表与退回英语的规则),均读自 2026-11-12。Anthropic 帮助中心:「用你偏好的语言」(页面最后更新 2026-10-23)。Unicode:第 9 章 Middle East-I(书写方向、半空格、FARSI YEH、数字)与 UAX #9 双向算法,另有 ArabicShaping.txt 与 UnicodeData.txt 的码位与属性。W3C:双向文本里的控制码与标记。编辑器:GNU Emacs 手册的 Bidirectional Editing 一节、Vim 帮助 options.txt(2026-10-25 版)。QCode 侧:docs.qcode.cc 的 Claude Code 教程与 qcode.cc 的定价页、按量包页。

准备好让 Claude Code 说波斯语了吗?

在 QCode 建一把 Key,设置 ANTHROPIC_BASE_URL,按 token 计费;按量包不需要订阅。

不确定从哪开始?

先试一周

小包 ¥26($30 额度,7 天)

每天都用

体验版 ¥63/月,每天 $5 额度;每 $1 额度只要 ¥0.42,中包约 ¥0.79