使用您最喜欢的AI助手总结文档,并引用此页面和AI提供商
版本历史
- "初始历史"v9.7.12026/11/3
此页面的内容已使用 AI 翻译。
查看英文原文的最新版本如果您有改善此文档的想法,请随时通过在GitHub上提交拉取请求来贡献。
文档的 GitHub 链接复制文档 Markdown 到剪贴板
Prettier 插件
每次 Prettier 格式化文件时,prettier-plugin-intlayer 都会将翻译键按固定顺序排列。代码变更(diff)保持精简,合并冲突显著减少,缺失的语言环境也一目了然。
复制代码到剪贴板
安装
复制代码到剪贴板
需要 Prettier 3 或更高版本。
如果你的项目已在使用 Prettier,运行 intlayer init prettier 将自动安装该插件并将其添加到你的配置中。
用法
将插件添加到你的 Prettier 配置中:
复制代码到剪贴板
如果只想应用于内容声明文件,可以使用覆盖配置(override):
复制代码到剪贴板
排序规则
t(): 语言环境
固定(pinned)的语言环境排在最前(默认为 en)。其他语言环境按字母顺序排列。
复制代码到剪贴板
plural(): CLDR 顺序
类别从小数量到回退(fallback)排列:zero、one、two、few、many、other。
复制代码到剪贴板
enu(): 升序阈值
条件首先按数字大小排序,然后按操作符排序(<1、<=1、1、>=1、>1)。fallback 排在最后。
复制代码到剪贴板
在运行时,首个匹配的条件生效。仅当每个数量仍能解析为相同的内容时,插件才会应用新顺序。如果排序会改变匹配结果,则对象保持原样。例如在 { '<1': …, '<=-2.3': … } 中,'<1' 键会捕获所有负数。
select(): 字母顺序
分支按字母顺序排序,fallback 放在最后。
复制代码到剪贴板
如果没有 fallback 或 other 键,最后一个分支将作为回退项。该分支保留在末尾,仅对其前面的分支进行排序。
.content.json 文件
序列化后的形式以相同方式排序:{ "nodeType": "translation", "translation": { … } },以及 plural、enumeration 和 select 节点。
内容键排序(可选)
开启 intlayerSortContentKeys: true 后,插件还会对字典 content 中的键在所有嵌套层级上按字母顺序排序。此项仅适用于 *.content.* 文件。
复制代码到剪贴板
排序会深入遍历每个辅助函数(t、plural、enu、select、cond、gender、md、insert、nest、file…)以处理其内部对象。每个辅助函数本身的键映射保留其内部顺序。传递给 cond() 和 gender() 的键永远不会被重新排序,因为它们的最后一个键是回退项。与 content 平级的字段(key、title、locale…)保持不变。
配置选项
在弹窗中打开表格以清晰地查看所有数据
| 选项 | 默认值 | 描述 |
|---|---|---|
intlayerPinnedLocales | ["en"] | 在 t() 中优先置顶的语言环境列表及其顺序。传入 [] 对所有语言环境进行排序。 |
intlayerSortContentKeys | false | 在 *.content.* 文件中,同时对字典内容键及嵌套对象进行排序。 |
保持原样的情形
- 包含解构扩展(
...base)、计算属性键([key])、方法或重复键的对象。 - 包含非 CLDR 类别的
plural()映射。 - 重新排序会改变解析内容的
enu()映射。 - 调用名称与辅助函数相同但接收了非对象参数的函数。
注释会随其所属的键一同移动。
支持的解析器
babel、babel-flow、babel-ts、typescript、flow、acorn、espree、meriyah、json、json5 以及 jsonc。Vue、Svelte 和 Astro 文件的 <script> 块均使用这些解析器进行格式化。
已知限制。 Prettier 每个解析器仅运行一个插件。如果其他插件也替换了 JavaScript/TypeScript 解析器(例如prettier-plugin-tailwindcss),则仅列表中最后一个插件生效。建议使用 override 将prettier-plugin-intlayer限制在*.content.*文件中以避免冲突。
