避免过度复用
谨慎复用不同页面的字符串
- 假设你现在在Sign In与Sign Up两个界面上都设置了一个加载提示框,因为两个都是用于提示正在加载中的,因此你打算使用相同的提示语 —— R.string.loading
Paste_Image.png
不过后来PM说这样实在太不友好了,因此你打算用两个更具体点的提示语来代替,因此你将你的strings.xml修改为了:
Paste_Image.png
对于一个国际化的项目,你并不知道应用最后需要支持多少种语言,可能你需要在某些语言中表述某些情景是相同的词汇,而某些语言中某些情景压根不同,譬如:
Paste_Image.png
Paste_Image.png
注意,在英文版本中的strings.xml中对于R.string.download_file_yes* 与 R.string.terms_of_use_yes 都使用了Yes,而Ukrainian版本中则是两个单词。
合理分割
对于相同页面中的字符串以前缀与注释分割
*添加前缀到字符串上有助于辅助快速地识别字符串是属于哪个页面的。
*清晰的字符串的区分也有助于未来对国际化的支持,可以按照页面来逐个地进行多语言支持。
Format
*使用 Resources.getString(int id, Object...formatArgs) 来格式化字符串
尽量避免使用+来连接字符串,因为在不同的语言里对于词汇的划分是不一致的。
Paste_Image.png
Paste_Image.png
正确的方法是使用: Resources.getString(int id, Object… formatArgs)
Paste_Image.png
Paste_Image.png
Paste_Image.png
Plurals:复数处理
使用Resources.getQuantityString (int id, int quantity)
来处理复数字符串
*尽量不要在Java代码中判断是否需要使用复数表述,同样是因为不同的语言对于复数表述的文法规则是不一样的。
Paste_Image.png
Paste_Image.png
正确的方法是使用Resources.getQuantityString (int id, int quantity)来进行处理:
Paste_Image.png
Paste_Image.png
Words highlighting:单词高亮
使用HTML文法规范来进行单词高亮
如果我们希望在TextView中修改一些单次的颜色,可能ForegroundColorSpan不一定是最佳的选择,同样是因为基于下标的高亮策略可能在不同的语言中出现问题。最好的呢,也还是使用HTML的字体颜色标签进行控制,譬如你希望在Discover and play games这一段话中需要将Discover与play进行高亮展示:
Paste_Image.png
网友评论