2011-09-20 75 views
0

我在想写什么最好的做法,并且主要是维护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 - 这些格式在构建资源包时可能也很好记,例如数组比内存数据表占用的内存少。当然,这些都是“无名的”,这对阅读代码来说可能是一个巨大的痛苦。

+0

不确定你在这里指的是'无名'。 –

+0

你完全可以控制这个问题,你应该能够接受答案。我删除了更多用于评论的“答案”。 –

回答

1

请参阅Formatting Messages。和MessageFormat::format() with named arguments。你不想“串联”字符串。相反,你可能会做这样的事情:

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

需要注意的是,由于各种语言的规则,可能更容易翻译“删除:{事}”,因为“这”可能需要活用由于字性别,案例,数量等,其中见SelectFormat