ICU资源包最佳实践

时间:2011-09-20 09:31:07

标签: internationalization resourcebundle 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资源捆绑没有多少经验,但如果它们构建得当,它们应该非常方便i18n和维护,因此问题。

非常感谢你的时间。

编辑:ICU info on Recourse Bundle Format - 在构造资源包时,这些格式也可能很好记住,例如,数组占用的内存少于表。当然,这些都是“无名的”,这可能是阅读代码的巨大痛苦。

1 个答案:

答案 0 :(得分:1)

Formatting Messages。和MessageFormat::format() with named arguments。你不想成为“连接”字符串。相反,你可能会这样做:

root {
  remove_this  { "Remove this {thing}." }
  page { "page" }
  widget { "widget" }
}

请注意,由于各种语言的规则,翻译“删除:{thing}”可能更容易,因为“this”这个词可能需要因性别,案例,数字等而变化。见SelectFormat