Swift Markdown Kit · DOCS
多语言
多语言
哪些文案会被翻译
SDK 自身显示的文案内置英文与简体中文——代码块的复制按钮、推理折叠区的标题、 消息操作的辅助功能标签。渲染出的 Markdown 是作者的正文,不会被翻译。
无需任何开关。只要不传对应的文案参数,每位读者看到的就是自己设备语言对应的 文案,找不到时回退英文:
let options = MarkdownRenderOptions()
指定语言
如果 App 自带语言切换,让 SDK 跟随 App 而不是跟随 iOS:
MarkdownRenderLocalization.language = .simplifiedChinese
默认是 .automatic,跟随设备。.custom(_:) 可以指向 SDK 提供的任一语言,并且
按 Foundation 的规则解析文字与地区变体,因此 "zh-CN" 和 "zh-Hans-CN" 都会
落到简体中文:
MarkdownRenderLocalization.language = .custom("zh-CN")
SDK 未提供的语言会回退到英文,而不是显示原始的查找 key。
请在启动时设置,在构建交给渲染器的 options 之前。文案是在 options 被构造时读取的,之后再改不会影响已经存在的 options。
跟随的是设备语言,不是 App 语言
这一点值得注意,因为它和 iOS 对待 framework 的默认行为相反。iOS 会把进程内所有
framework 限制在 App 自身声明的语言范围内。如果 App 只是把中文文案写死、并没有
提供 zh-Hans.lproj,那它声明的就只有英文,它加载的每个 framework 都会被限制在
英文——哪怕设备设置的是中文。
SDK 改为按设备的首选语言解析,所以无论 App 有没有声明多语言,SDK 都能正确翻译。
如果你希望它跟随 App 的语言,显式指定 language 即可。
自己传入的文案始终优先
这些本地化文案是对应参数的默认值。一旦你传入自己的文案,任何语言下都以你传 入的为准:
var options = MarkdownRenderOptions(copyText: "拷贝")
options.markdown.reasoning = MarkdownChatReasoningConfiguration(
thinkingLabel: "Working…"
)
已经做过翻译的 App 可以继续用自己的措辞,没做过的直接拿到 SDK 的。
提供了哪些语言
let available = MarkdownRenderLocalization.availableLanguages // ["en", "zh-Hans"]
解析后的文案也可以直接读取。如果你在渲染器周围自建了 UI,想让措辞保持一致,用 这个:
let copyLabel = MarkdownRenderLocalization.codeCopy
let thinkingLabel = MarkdownRenderLocalization.reasoningThinking
哪些不会被翻译
授权与渲染器的错误信息是给接入方看的诊断信息——里面会出现文件名、构建设置和脚本 名——所以无论设备语言是什么都保持英文。它们是写给你的,不是写给你的用户的。