ICU资源包最佳实践
问题描述:
我在想写什么最好的做法,并且主要是维护ICU资源包。更具体地说,处理重复字符串的最佳方式。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把ResourceBundle太多的经验,到目前为止,但如果他们建造得当,他们应该非常方便国际和维护,因此这个问题。
非常感谢您的时间。
编辑:ICU info on Recourse Bundle Format - 这些格式在构建资源包时可能也很好记,例如数组比内存数据表占用的内存少。当然,这些都是“无名的”,这对阅读代码来说可能是一个巨大的痛苦。
答
请参阅Formatting Messages。和MessageFormat::format() with named arguments。你不想“串联”字符串。相反,你可能会做这样的事情:
root {
remove_this { "Remove this {thing}." }
page { "page" }
widget { "widget" }
}
需要注意的是,由于各种语言的规则,可能更容易翻译“删除:{事}”,因为“这”可能需要活用由于字性别,案例,数量等,其中见SelectFormat。
不确定你在这里指的是'无名'。 –
你完全可以控制这个问题,你应该能够接受答案。我删除了更多用于评论的“答案”。 –