java 界面strings.xml_关于Android strings.xml你要记住的一些事

译者注:都是一些很实用的技巧 ,尤其是对于多语言国际化开发,感同身受 。

这篇文章是关于android开发再平常不过的东西--strings.xml

不要复用

不要在多个页面复用字符串

1.假设你在登录和注册页面都有一个loading加载框,你打算让2个加载框使用同一个字符-R.string.loading.

dcfb92d68de6

res/values/strings.xm

不久后你决定让其中一个加载框换个字符,然后你不得不创建2个新的字符串并修改你的java代码,如果你一开始就用了2个string,你就只需要修改一个strings.xml文件就可以了

dcfb92d68de6

res/values/strings.xml

2.你永远不知道你的app将来会支持哪种语言,在某个语言-你可能可以用同一个单词表达不同的内容(译者:done可以表达中文的确定,下一步等等),但是在另外一个语言-你不得不用多个单词表达不同的内容。

dcfb92d68de6

res/values/strings.xml

dcfb92d68de6

res/values-UA/strings.xml

可以看到英语版本的strings.xml用了同样的单词 “YES”给R.string.download_file_yes 和 R.string.terms_of_use_yes

但是乌克兰版本的strings.xml使用了2个不同单词 “Гаразд”给R.string.download_file_yes,“Так”给R.string.terms_of_use_yes。

分开

用前缀和注释让不同页面的字符串分开

dcfb92d68de6

res/values/strings.xml

1.给每个字符添加页面前缀用于帮助识别当前字符串属于哪个界面

2.清晰的strings.xml可以让维护变的简单,同时可以一个页面接一个页面翻译成其他语言

Format格式化

使用Resources#getString(int id, Object… formatArgs)格式化字符串

千万别用“+”这种操作符,因为在不同语言 单词排列顺序可能是不一样的

dcfb92d68de6

res/values/strings.xml

dcfb92d68de6

java code

正确的方式是使用 Resources#getString(int id, Object… formatArgs)

dcfb92d68de6

res/values/strings.xml

dcfb92d68de6

res/values-UA/strings.xml

dcfb92d68de6

java code

Plurals复数

使用Resources#getQuantityString (int id, int quantity)获取数量字符串

不要在你的java代码里面手动解析复数,因为不同语言有不同的规则和数量语法协议。

dcfb92d68de6

res/values/strings.xml

dcfb92d68de6

java code

正确的方式是使用Resources#getQuantityString (int id, int quantity)

dcfb92d68de6

res/values/strings.xml

dcfb92d68de6

java code

字符高亮

使用html文本高亮静态字符

如果你想改变TextView字符串的颜色-ForegroundColorSpan并不是一个任何时候都好用的一个选择,因为高亮是通过下标index来实现的,在多语言app里面并不安全(译者:你要手动计算不同语言同一个单词的index,容易数组下标越界)。更好的做法是使用strings.xml里面的html font颜色标签。

假设你有一个文本“Discover and play games.” 然后你想高亮“Discover”单词和“play”单词成蓝色。

dcfb92d68de6

res/values/strings.xml

dcfb92d68de6

java code

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值