安卓关于国际化相关的内容

本文介绍了安卓应用国际化过程,包括创建不同语言的资源目录,如values-en和values-in,处理图片资源的国际化,解决英语单复数问题,以及如何强制应用加载特定语言,并在Application类中设置语言的方法。在处理非系统内置语言时,需要自行创建Locale对象。
摘要由CSDN通过智能技术生成

关于安卓国际化相关的一些东西

1.普通资源的国际化

    创建对应语言的资源目录。
    默认资源目录    values (这个APP默认语言,比如你的国际化里面包括了 中文,英文。然后用户使用的是泰语,但是你没有设置这个资源目录,那就回去拿默认的用来展示。)
    英文的目录    values-en
    印尼的资源目录  values-in   (当然,你如果需要其他国家,都可以创建对应的语言目录。)
    相对应的,所有的dimens colors这些全部都可以根据对应的语言设置对应的值。


2.图片资源的国际化

    和资源类似,不过这个检查会更严格。命名的规则是(drawable-{国家代码}-xhdpi)。
    要注意的是: 某一些国家的图片资源的缩写无法正常加载多语言。所以我们需要完整的命名。

例如,上面的英语。我们写drawable-en-xhdpi没关系。但是印尼语,我们必须写成drawable-in-rID-xhdpi,系统才能为我们成功加载成印尼语下的图片资源。

3.英语单复数问题(这个比较坑。后来想想还是用if判断算了。)
    关于单复数问题,一般语言中就只要判断是1 或者不是1 就可以了。但是如果我们在代码里面直接使用
    if(a == 1) {
        ...
    } else {
        ...
    }
    这样的代码会很奇怪。所以我们直接使用官方的

    <plurals name="total_subscrite">
        <item quantity="one">%d following</item>
        <item quantity="other">%d followings</item>
    </plurals>

    代码中需要使用的时候,调用getQuantityString()
    这个包括了3个参数。第一个就是我们的string字符串。第二个是传进去用来判断显示单复数的值。第三个是具体显示的值。
    getResources().getQuantityString(R.plurals.total_subscrite, a, a)
    当然 有一个问题。第二个参数是int类型的。如果我们正好在用的时候这个a是一个long类型的,那就没法用这个方法了。
    然后又回到了用if else 判断。。。
    而且使用这个方法,还有一个问题,一定要在英文下才能正常的显示单复数。切换到别的语言,就没法单复数了。
4.强制应用加载某种语言
    这个一定要在onCreateView之前设置好对应的语言才能正常显示。
    所以一般要强制使用某一种语言的时候,我们一般在application类里面写设置语言的方法。
    这个地方有一个需要注意一下,我们系统的Locale里面会有很多常用的国家。但是肯定不会包括所有的国家。所以我们在用的时候,如果不是系统里面的,我们
    需要通过自己new 一个Locale()。然后传入对应的国家码就可以了。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值