Appearance
国际化与时区
语言和时区不会改变 workflow 的主线,却会直接影响交互文本、日志内容和保存时间
支持的内置语言
当前内置两套 locale
- en-US
- zh-CN
也可以通过 locales 追加或覆盖资源
默认语言如何解析
createWorkflowI18n 会按下面顺序推断语言
- options.locale
- options.resolveLocale()
- 环境变量
环境变量的读取顺序如下
- CLACK_KIT_LOCALE
- APP_PROMPT_LOCALE
- MISE_TASK_LOCALE
- LC_ALL
- LC_MESSAGES
- LANG
- 最终回落到 en-US
当前内置规则会把以 zh 开头的环境值归到 zh-CN,其余默认归到 en-US
如何追加 locale 资源
ts
import { createWorkflowKit, createI18nLocales } from 'clack-kit';
const kit = createWorkflowKit({
locale: 'zh-CN',
locales: createI18nLocales({
'zh-CN': {
custom: {
done: '处理完成',
},
},
}),
});追加资源时,内置和自定义资源会合并,不必整份重写
时区如何解析
默认时区解析顺序是
- options.timeZone
- options.resolveTimeZone()
- timedatectl
- /etc/timezone 或 /etc/localtime
- Intl.DateTimeFormat().resolvedOptions().timeZone
- TZ 环境变量
- 最终回落到 UTC
这意味着在容器、服务器和本地环境里,时区大多能自动命中当前系统设置
语言与时区会影响哪些地方
- context.locale 和 context.timeZone
- 结构化文案翻译
- 日志文件里的时间显示
- 快照中的 locale 与 timeZone 字段
单次运行覆盖语言和时区
ts
await kit.run(workflow, {
locale: 'en-US',
timeZone: 'Asia/Shanghai',
});这种覆盖只影响当前这一次运行,不会反写到 kit 的默认配置中