我想知道编写ICU资源包的最佳做法是什么。更具体地说,是处理重复字符串的最佳方法。
例如,假设您有以下资源捆绑:
root:table {
remove_page:string { "Remove this page" }
remove_widget:sring { "Remove this widget" }
}
当然这是最小的,但我暗示一个包含大量类似字符串和“子表”的大项目。最好保持这样,即。为代码中的每个动作使用特定的字符串,或者更好的做法是组合字符串,例如:
root:table {
remove_this:string { "Remove this " }
page:string { "page" }
widget:string { "widget" }
}
作为一名业余爱好者我到目前为止对ICU资源捆绑没有多少经验,但如果它们构建得当,它们应该非常方便i18n和维护,因此问题。
非常感谢你的时间。
编辑:ICU info on Recourse Bundle Format - 在构造资源包时,这些格式也可能很好记住,例如,数组占用的内存少于表。当然,这些都是“无名的”,这可能是阅读代码的巨大痛苦。
答案 0 :(得分:1)
见Formatting Messages。和MessageFormat::format() with named arguments。你不想成为“连接”字符串。相反,你可能会这样做:
root {
remove_this { "Remove this {thing}." }
page { "page" }
widget { "widget" }
}
请注意,由于各种语言的规则,翻译“删除:{thing}”可能更容易,因为“this”这个词可能需要因性别,案例,数字等而变化。见SelectFormat。