PO文件格式是否支持负索引及相关字符串纳入方案咨询
PO文件格式与负索引的处理方案
PO文件的官方规范不支持将负数值作为索引直接用于msgid字段——msgid的作用是标识待翻译的原字符串,仅接受字符串内容(或空字符串用于文件头),无法直接识别负数字索引。
针对这类带负索引的源字符串,有两种合规的处理方式:
1. 用msgctxt字段保留原负索引
将负索引作为上下文标识放在msgctxt中,原字符串作为msgid,这样既能保留原索引的关联信息,又完全符合PO格式要求,示例如下:
msgctxt "@-1002" msgid "What should be done with all components that are NOT YET installed?\n[I]nstall them, [S]kip them, [A]sk about each one?" msgstr "" msgctxt "@-1003" msgid "What should be done with all components that are ALREADY installed?\n[R]e-install them, [U]ninstall them, [S]kip them, [A]sk about each one? " msgstr ""
msgctxt的作用是区分相同字符串的不同语境,这里用来绑定原负索引,翻译工具和本地化流程都能正常识别处理。
2. 将负索引嵌入msgid前缀
如果不需要单独的上下文标识,也可以直接把负索引作为msgid的前缀部分,比如:
msgid "@-1002: What should be done with all components that are NOT YET installed?\n[I]nstall them, [S]kip them, [A]sk about each one?" msgstr ""
这种方式更直接,但会增加msgid的长度,且如果原索引仅用于内部关联,不如第一种方式灵活。
内容的提问来源于stack exchange,提问作者ALIENQuake
相关产品推荐
相关产品推荐

