文件概览
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 开头,并返回静态的 [...] 或 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] 键,而写回会在尽可能保留键顺序/注释的同时重写现有字符串叶子节点。映射键不能包含 .、[ 或 ],因为这些字符保留用于展平后的路径。为避免静默损坏元数据,会拒绝非字符串标量叶子节点,例如数字、布尔值、空值、时间戳、锚点和别名。
key、id 或 name 为键,或者是嵌套的路径形叶子。Android <resources> 文件、混合内容 XML,以及保留 CDATA 的回写,通用 XML 解析器都不处理。
CSV 文件映射模式
使用存储桶文件映射来建模 CSV 工作流。 按语言区域的文件:run 就可以保持一致地更新。
Fluent 文件映射模式
用于 Mozilla Fluent 语言环境文件的.ftl 映射:
brand.title。不支持 Fluent 术语,并且会在解析期间失败。
JS/TS 区域设置模块模式
当你的应用直接导入 locale 对象时,请使用 JavaScript 或 TypeScript 的 locale 模块映射:Apple 字符串目录映射模式
用于 Xcode 字符串目录的.xcstrings映射:
localizations[targetLocale] 并保留目录元数据。status 和 check 从目录中读取请求的目标区域设置。变体和替换源条目必须包含源语言本地化,这样 Hyperlocalise 才能安全地提取源形式。
Android XML 字符串资源映射
Android XML 支持有意限定于位于strings.xml 下、名为字符串资源文件的文件,并且这些文件位于 res/values* 目录中。请在目标路径中使用 Android 语言环境限定符名称:
<string name="..."> 和 <plurals name="..."><item quantity="...">。标记为 translatable="false" 的资源会被保留并跳过。诸如 <string-array> 之类不受支持的可翻译资源形状会默认失败关闭,因此不会被静默丢弃。
Java 属性文件映射模式
将.properties 映射用于 Java 资源包,每个区域设置一个文件:
.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键对齐。 - 在
profiles和rules之间保持配置文件名称一致。
llm.profiles.<name> 字段:
生成一个入门模板
groups 对于初学者配置是可选的。当你想按语言环境或文件集拆分执行时,再添加它。
- 将
hyperlocalise用于sync push和sync pull任务。 - 保留
storage用于特定提供商的 TMS 适配器配置。 profile:个人资料名称prompt(已弃用,可选):作为系统回退使用的旧版提示模板
验证提示
LLM 配置文件
groups.<name> 定义了要一起处理的内容。
分组
user_prompt(可选):显式用户消息模板system_prompt(可选):显式系统消息模板model:提供者模型 IDprovider:openai、azure_openai、anthropic、gemini、bedrock、lmstudio、groq、mistral,或ollamabuckets:存储桶名称列表targets:locales.targets的子集