Android 国际化适配总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 国际化适配总结相关的知识,希望对你有一定的参考价值。

参考技术A

只需要创建对应的values-xxx文件夹,再里面创建string文件,这是最基本的适配国际化。

这也是比较细节的地方,首页在设计布局的时候一定要有一种思维,去思考如果以后你这个布局要做国际化,方不方便扩展和优美的展示, 因为国外的语言比如英文,基本都会比中文长,如果你写布局的时候基本都写死宽高为多少dp,那就很难做适配
如果翻译出来的结果实在太长,也可以使用一些技巧,例如使用中文的近义词再翻译,总之,你要站在老外的角度去看,你就会发现有些中文表现成其它语言的时候,可以换个简短的词。比如说你有个账号密码输入提示框,有提示“请输入您要设置的密码”,那你是不是可以翻译成“passwork” (可能这个例子举的不是很好,但是大概就是能做一个转变的意思)

文字拼接翻译的时候,一般如果做翻译语序会混乱。比如说 “您已登陆了10天,总共亏损了6666元”。这种情况下最直接的方式是用String.format。
但是也会存在无法使用String.format的情况,我举一个极端的例子,假如这个 10 和 6666 两个数字的样式和其它文字的样式不同,比其他文字大啊,颜色不同之类的,甚至可能是图片。这样就不好用String.format,但我们也不能蠢到对 “您已登陆了”,“天,总共亏损了”,“元”这3段单独做翻译然后拼起来,这样语序就不对的。
其实这种情况也简单,做个思维的转变,我们需要根据变量去做分割,这里变量就是 10 和 6666 ,能把整段话分割成3段(翻译还是全部一起翻译,只是做国际化拆段做)。
我们就可以在string文件中定义

拼接就 result = getString(R.string.xxx_paragraph_1) + 10 + getString(R.string.xxx_paragraph_2) + 6666 + getString(R.string.xxx_paragraph_3)
英文就是(我用机翻,英语不太好)

结论就是先整体翻译再根据变量去拆,而不是先拆再翻。

后台返回的东西也要做国际化,如果是使用了第三方的东西,就要考虑别人有没有提供,别人没提供的话就只能自己写一个逻辑的adapter来做个简单的适配。如果不方向,可以把第三方返回的数据传给自己的后台,由我们的后台做翻译,就相当于多做了一步请求,但是方便修改。

这也是我做海外翻译觉得最痛的点,比如说某些地方用了成语或者歇后语之类的,“新年你的运势是:虎虎生威”。这虎虎生威怎么翻译,这是比较蛋疼的一个点。

其它资源我们也可以像文字一样做适配,在values-xxx文件夹下创建相应的资源。
举几个我比较常用的做法:
(1)图片,如果有些图片存在中文,可以在这个文件夹下放一张名字一模一样的图片。缺点就是多占内存嘛,所以正确的做法是开发这种需求的时候尽可能图文分离,分离不了就放两张。
(2)尺寸,上面我说了有些翻译后的内容普遍比中文长,处理想办法改文字长度的方法外,我们还可以设多套长度,在使用的时候引用资源,这样不同语音展示出来的长度就不同。我觉得这个还是比较常用的。

Android TV开发总结TV上屏幕适配总结