Android 中String的小秘密

平时我们都知道使用String的时候呢要避免在代码中硬编码,应该统一使用string.xml文件来保存我们在项目中用到的字符串,好处在于避免代码的复用,统一管理和根据不同地区加载不同语言等。
但是我们可以平时忽略它的一些用法:

1.string也可以使用参数

<string name="four">4</string>
<string name="family">我们家有%s个人</string>

使用:

getString(R.string.family, getString(R.string.four))

那如果有多个参数呢?
比如:

<string name="four">4</string>
<string name="one">1</string>
<string name="family">我们家有%1$s个人,我有%2$s个弟弟</string>

使用:

getString(R.string.family, getString(R.string.four), getString(R.string.one))

再有多个参数就以次类推。

2 string的国际化

如果你要创建一个English对应的string 资源:
这里写图片描述

这个时候你就可以写入你想翻译成的语言

<string name="samsung">我一部sumsung手机</string>

<string name="family">I have a sumsung phone</string>

这个时候我们可以发现sumsung并不需要再翻译成英文,对于不必要翻译的单词,我们可以用<xliff:g>标签来标注起来
使用之前我们要指出命名空间:<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
比如:

<string name="samsung">我一部<xliff:g>sumsung</xliff:g>手机</string>

ps:Google play控制台提供APP TRANSLATION SERVICE的翻译服务
还有一种情况,比如单数和复数的情况:

<string name="eat_one_apple">I eat one apple</string>
<string name="eat_ohter_apples">I eat three apples</string>

Android为这种情形提供了Plurals方法。

<plurals name="eat_apple">   
    <item quantity="one">I eat one apple</item>    
    <item quantity="other">I eat three apples</item>
</plurals>

获得该plurals方法如下,第二参数传入quantity,系统会根据quantity来选择对应的显示,该方法后也可以加入参数:

getResources().getQuantityString(R.plurals.eat_apple, 2)

而中文部分我们可以这么改:

<plurals name="eat_apple">    
    <item quantity="one">我吃了一个<xliff:g id="Kindle">apple</xliff:g></item>    
    <item quantity="other">我吃了很多<xliff:g id="Kindle">apples</xliff:g></item>
</plurals>

3 在string中加入特殊字符

我觉得这个大家用得比较多了,有的特殊字符是没有办法直接在写入string.xml中的,比如比如”<”,”>” 但可以用它对应的ASCII码来替代进行显示,比如要表达:@小明,则可以这样写:

<string name="call_xiaoming">&#064;小明</string>

@对应的ASCII码为&#064

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值