跳转到主要内容

文件概览

i18n.yml 控制区域设置、文件映射、模型配置文件以及可选的高级路由。i18n.jsonc 仍然受支持,以保持兼容性。

入门配置

这是由hyperlocalise init写下的形状。 当省略 groups 时,Hyperlocalise 会自动使用一个隐式的 default 组,包含:
  • 所有区域设置,来自locales.targets
  • 所有来自 buckets 的桶名称

语言环境

  • locales.source:源语言环境。
  • locales.targets:目标语言环境列表。
  • 可选 locales.fallbacks:每个区域设置的回退顺序。

存储桶

buckets 将源文件映射到目标输出模板。 每个文件映射使用:
  • from:源路径模板
  • to:目标路径模板
在模板中使用 {{source}}{{target}}{{localeDir}}。当目标等于源时,{{localeDir}} 会解析为空片段;否则会解析为目标区域设置。

PHP 数组区域设置映射模式

当每个文件返回一个静态的 PHP 数组时,Laravel 风格的区域设置数组可以直接映射。
受支持的 PHP 区域设置文件必须以 <?php 开头,并返回静态的 [...]array(...) 字面量。Hyperlocalise 会翻译字符串叶子节点,将嵌套键展平成带点路径,并在写入时保留注释、顺序和数组语法。像变量、函数调用、常量、declare(...) 或插值的双引号字符串等动态 PHP 会被有意拒绝。 支持的区域设置文件扩展名包括.json.jsonc.yaml.yml.php.xml.resx.arb.xlf.xlif.xliff.po.html.liquid.md.mdx.strings.stringsdict.csv YAML/YML 区域设置文件应为映射结构的文件,且叶子节点为字符串。嵌套映射会变成点分键,序列会变成 [index] 键,而写回会在尽可能保留键顺序/注释的同时重写现有字符串叶子节点。映射键不能包含 .[],因为这些字符保留用于展平后的路径。为避免静默损坏元数据,会拒绝非字符串标量叶子节点,例如数字、布尔值、空值、时间戳、锚点和别名。
通用 XML 映射可以指向非 Android 的 XML 区域设置文件:
XML 条目必须是仅文本的叶子元素,并以 keyidname 为键,或者是嵌套的路径形叶子。Android <resources> 文件、混合内容 XML,以及保留 CDATA 的回写,通用 XML 解析器都不处理。

CSV 文件映射模式

使用存储桶文件映射来建模 CSV 工作流。 按语言区域的文件:
共享多语言文件:
对于共享的多语言 CSV 文件,请保留一个键列和一个目标语言列,这样 run 就可以保持一致地更新。

Fluent 文件映射模式

用于 Mozilla Fluent 语言环境文件的 .ftl 映射:
Hyperlocalise 支持 Fluent 消息、属性、多行值以及 select/plural 值作为完整的翻译单元。属性使用带点的键,例如 brand.title。不支持 Fluent 术语,并且会在解析期间失败。

JS/TS 区域设置模块模式

当你的应用直接导入 locale 对象时,请使用 JavaScript 或 TypeScript 的 locale 模块映射:
受支持的模块必须导出一个静态对象,例如:
Hyperlocalise 会保留注释、导入、导出语法以及非消息模块文本。它会拒绝动态值、计算属性键、展开属性、多个导出的区域设置对象以及插值模板字面量。

Apple 字符串目录映射模式

用于 Xcode 字符串目录的.xcstrings映射:
Hyperlocalise 将目标值写入 localizations[targetLocale] 并保留目录元数据。statuscheck 从目录中读取请求的目标区域设置。变体和替换源条目必须包含源语言本地化,这样 Hyperlocalise 才能安全地提取源形式。

Android XML 字符串资源映射

Android XML 支持有意限定于位于 strings.xml 下、名为字符串资源文件的文件,并且这些文件位于 res/values* 目录中。请在目标路径中使用 Android 语言环境限定符名称:
支持的资源条目是 <string name="..."><plurals name="..."><item quantity="...">。标记为 translatable="false" 的资源会被保留并跳过。诸如 <string-array> 之类不受支持的可翻译资源形状会默认失败关闭,因此不会被静默丢弃。

Java 属性文件映射模式

.properties 映射用于 Java 资源包,每个区域设置一个文件:
支持的条目是具有字符串值的扁平 Java 属性键。Hyperlocalise 在写入时会保留注释、分隔符和键的顺序;翻译后的值会以转义的单行.properties值写入。

规则

llm.rules 按组选择配置文件。
  • priority:更高者获胜
  • group:组名
llm.rules 是可选的。当没有规则匹配某个组时,Hyperlocalise 会回退到 llm.profiles.default

缓存

cache 配置远程缓存客户端。
  • enabled(可选):为run启用远程缓存。
  • endpoint(除非 enabled=true,否则为可选):远程缓存服务端点。
  • project_key_env(可选,除非enabled=true):包含项目缓存键的环境变量。
  • timeout_seconds(可选):远程缓存请求超时时间(秒)。
  • 如果你省略groups,每个存储桶都会针对每个目标区域设置运行。
提示变量:
  • {{source}}
  • {{target}}
  • {{input}}

高级示例

然后为你的项目编辑生成的i18n.yml
  • 将组目标保留在 locales.targets 中。
  • 保持组桶与 buckets 键对齐。
  • profilesrules 之间保持配置文件名称一致。
llm.profiles.<name> 字段:

生成一个入门模板

groups 对于初学者配置是可选的。当你想按语言环境或文件集拆分执行时,再添加它。
  • hyperlocalise用于sync pushsync pull任务。
  • 保留 storage 用于特定提供商的 TMS 适配器配置。
  • profile:个人资料名称
  • prompt(已弃用,可选):作为系统回退使用的旧版提示模板

验证提示

LLM 配置文件

groups.<name> 定义了要一起处理的内容。

分组

  • user_prompt(可选):显式用户消息模板
  • system_prompt(可选):显式系统消息模板
  • model:提供者模型 ID
  • provider: openaiazure_openaianthropicgeminibedrocklmstudiogroqmistral,或ollama
  • buckets:存储桶名称列表
  • targetslocales.targets的子集