Neatbo.

预览 MF1 并定位复制的不可见语法字符

保留原始 ICU 消息和参数 JSON,预览有限 locale 合同,并依据原文位置明确修正复制语法。

准备两份原始输入

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

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

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

阅读渲染结果与定位诊断

选择 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 分支均检查必需参数和类型,未选中的分支也检查;合法但未使用的标量参数列入报告。

嵌套 select、offset 和 #
{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}
=> Alex and 2 guests arrived.

保存完整交接证据

允许 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。

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

完整下载
文件用途
rendered-message.txt完整选中文本,上限 8 MiB
message-original.icu实际使用的原始消息字节,含传输 BOM
parameters-original.json完整原始参数 JSON
message-preview-report.json每个参数名/类型/用途;来源、运行时及明确的位置预览

参考资料

  • ICU 语法中的复制不可见空白

    作者定位语法 NBSP 后撤回最初解析器缺陷说法,仍希望得到可见警告。已阅读三个原例和全部六条评论;网页偏好与需求规模未知。

  • FormatJS 解释式 MessageFormat AST

    本工具只支持明确的纯文本 MF1 合同和运行时 Intl,不承诺完整 ICU4J 兼容、富文本标签或 MF2。

  • ICU MessageFormat1 语法

    select/plural other、offset、# 与可选单引号引用;样式及日期/时间不在本合同内。

本分类工具使用说明

展开工具,查看操作步骤、可调选项和支持范围,再直接进入工作区。

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

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

操作步骤

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

可调选项

Locale
en-US · en-GB · zh-CN · fr-FR · ru-RU · ar-EG

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

能力与限制

  • 粘贴消息,或选择至多一个严格 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。
打开预览 ICU MessageFormat1 →