Neatbo.

预览 ICU MessageFormat1

在本地渲染嵌套 ICU select 与 plural 消息,并用原始位置定位语法中的不可见字符。

浏览器本地处理输入MF1 消息 + 参数 JSON输出完整文本 + 两份原件 + 报告单个文件最多 1 MiB · 最多 1 个
  1. 1添加输入
  2. 2调整设置
  3. 3获取结果

工具输入和文件在当前浏览器处理,不会上传。

输入内容

切换工具时在当前标签页临时保留输入。刷新或关闭后清除,较大的结果可能需要重新生成。

⌘ / Ctrl + Enter 运行

或将文件拖到这里

文件留在当前设备,原始文件不会被覆盖。

.icu · .txt

单个文件最多 1 MiB · 最多 1 个

    0 个字符 · 0 字节
    处理选项

    先填写标记为必填的选项,其余可保留默认值。

    使用本浏览器明确的 locale 数据;默认 en-US。

    正在准备处理工具…

    开始之前

    在本地渲染嵌套 ICU select 与 plural 消息,并用原始位置定位语法中的不可见字符。

    如何使用

    1. 粘贴消息或选择一份原始 UTF8 消息文件,再粘贴具名参数 JSON。
    2. 选择明确的 locale,用正确参数类型预览并校验全部分支。
    3. 语法拒绝时核对成熟错误码和可见码点位置,明确修改原文后重试。
    4. 交接前复制或下载完整文本、两份不变原件及参数报告。

    支持范围与限制

    粘贴消息,或选择至多一个严格 UTF8 消息文件,上限 1 MiB。文件仅替代主消息,次输入的参数 JSON 仍需粘贴,上限也是 1 MiB。原始文件名标签允许 512 UTF8 字节。

    每个输入至多移除一个起始 UTF8 BOM,明确作为传输标记记录;下载保留两份原始字节。拒绝损坏 UTF8、原始或 JSON 转义的未配对 Unicode 代理码。解码后重复参数键使整次处理拒绝。

    选择 en-US、en-GB、zh-CN、fr-FR、ru-RU 或 ar-EG,默认 en-US。支持文字、可选单引号引用、普通参数、select、基数 plural、selectordinal、offset、=选择器、# 和无样式 number。每个 select/plural 必须有 other。

    参数仅为标量 Unicode 字符串或数学上精确的安全整数,范围 −9,007,199,254,740,991 至 9,007,199,254,740,991,先检查原始数值 token 再转为 JavaScript Number。小数或科学记数形式只有值确为整数时才可用。计数、offset 和 =选择器须非负。 显式 =选择器仅使用规范十进制写法:=0 或 =[1-9][0-9]*,不带加号、前导零或 −0。

    拒绝分数值、日期/时间、样式、骨架、货币、富文本标签/尖括号、MF2 声明、回调和解析器回调。所有 AST 分支均检查必需参数和类型,未选中的分支也检查;合法但未使用的标量参数列入报告。

    允许 20,000 个 AST 节点、65 层未引用语法花括号、1,000 个参数名;每名 128 UTF8 字节,每字符串值 65,536 UTF8 字节。被单引号引用的文字花括号不计语法深度。

    完整渲染文本允许 8 MiB UTF8。屏幕只预览 4,000 个 Unicode 码点;原生复制和 rendered-message.txt 均保留全文。下载两份原件和完整参数元信息报告;报告中的不可见字符位置明确只预览前 200 项。

    普通数值参数采用 FormatJS String(value) 语义,number 和 # 采用本浏览器 Intl locale 数据。运行时数据变化可改变结果,不承诺与所有 ICU4J 语义兼容。语法错误显示成熟错误码、原文 UTF16 偏移/行/列、UTF8 字节偏移和附近 U+00A0 位置;不会自动修复 NBSP。

    操作示例

    示例输入

    {gender, select, female {{n, plural, offset:1 =1 {Alex arrived alone.} one {Alex and one guest arrived.} other {Alex and # guests arrived.}}} other {{n, plural, offset:1 =1 {Alex arrived alone.} one {Alex and one guest arrived.} other {Alex and # guests arrived.}}}}
    示例参数
    {"gender":"female","n":3}; locale=en-US

    示例输出

    Alex and 2 guests arrived.

    出现问题时

    修正缺参、类型、重复键或不支持的语法后重试。取消后保留同一个已选文件、参数 JSON 和 locale 再运行。内部解析错误不作为语法诊断。

    常见问题

    为什么看起来相同的 other 分支会失败?

    语法区域中复制进来的 NBSP U+00A0 可能像普通空格。工具显示原始错误码与附近位置,不会默默替换。文字区域中的 NBSP 保持原样。

    预览会匹配每一种 ICU 运行时吗?

    有限 FormatJS 合同对普通数值采用 String(value),对 number/plural 使用运行时 Intl;拒绝日期/时间、样式、分数值和 MF2。浏览器 locale 数据变化可影响文本。

    文档与延伸阅读

    相关工具