【发布时间】:2020-12-02 16:10:50
【问题描述】:
我正在尝试使用 jq 自动将 i18n 字符串文件从一个库采用的格式更改为另一个。
我有一个如下所示的 json 文件:
{
"some_label": {
"message": "a string in English with a $VARIABLE$",
"description": "directions to translators",
"placeholders": {
"VARIABLE": {
"content": "{variable}"
}
}
},
// more of the same...
}
我需要把它转给"some-label": "a string in English with a {variable}"
我已经很接近了。目前,我正在使用
jq '[.
| to_entries
| .[]
| .key |= (gsub("_";"-"))
| .value.placeholders as $p
| .value.message |= (sub("\\$KEY_NAME\\$";$p.KEY_NAME.content))
| .value = .value.message
] | from_entries'
下一步是在sub 调用中使用捕获组,这样我就可以以编程方式获取具有不同名称的变量,但我不确定如何使用捕获组来索引$p。
我尝试了sub("\\$(?<id>VARIABLE)\\$";$p.(.id).content),它给出了一个编译器错误,我几乎不知道下一步该尝试什么。
【问题讨论】:
-
这只是一个示例,用于显示它所属的较大 JSON 值的架构。我将示例更新为更明确