0

我想知道编写(主要是维护)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 信息- 这些格式在构建资源包时也可能需要牢记,例如,数组占用的内存比表少。当然,这些都是“无名的”,这对于阅读代码来说可能是一个巨大的痛苦。

4

1 回答 1

1

请参阅格式化消息。和带有命名参数的 MessageFormat::format()。您不想“连接”字符串。相反,您可能会执行以下操作:

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

请注意,由于各种语言的规则,翻译“Remove: {thing}”可能更容易,因为“this”这个词可能需要根据性别、大小写、数字等进行变形,参见SelectFormat

于 2011-09-22T17:23:03.147 回答