多语言配置:
1.获取当前系统语言的方法:
- Locale locale = getApplicationContext().getResources().getConfiguration().locale;
- String language = locale.getLanguage();
2.布局适配问题:
- 当布局不做调整的时候,即supportsRtl = “false"的时候,只是语言的显示顺序发生了改变,要注意显示阿拉伯语时的有边界限制
- 一些图标设置显示在左边,在阿拉伯语的语境下,也要注意设置到右边,比如:textview.setDrawable(xx,xx,xx,xx)
3.小技巧:
在多语言的环境下,有些功能,是给我们自己用的,比如收集反馈信息
,虽然语言不同,显示给用户的是其自己的语言,但用户在选择不同的反馈信息条目后,还是要上传到后台给我们自己看,在这种情况下,最终上传的日志的语言可以设置为英文,这样,我们自己后台查看反馈日志的时候,便可以简单的看出反馈的问题,但用户自定义输入的
内容,需要翻译才可以读懂。
Configuration configuration = new Configuration();
configuration.setLocale(new Locale("en"));
Resources resources = new Resources(getResources().getAssets(), getResources().getDisplayMetrics(), configuration);
//获取该字符串下指定为英文的字符串
problems.add(resources.getString(R.string.upload_column_abnormal));
problems.add(resources.getString(R.string.upload_live_time_shift_abnormal));
problems.add(resources.getString(R.string.upload_playback_abnormal));
problems.add(resources.getString(R.string.upload_record_abnormal));
problems.add(resources.getString(R.string.upload_apk_abnormal));
4.在阿拉伯语,数字是从左向右读取,字母是从右向左读取,所以,EditText中,输入字符串,光标是显示在右边的,如果刚开始输入数字则光标是显示在左边的,在接着输入字符,又会跑到右边,当输入第二个数字后,第二个数字会跑到第一个数字的前面,并且出现双光标,这都是阿拉伯语系显示的正常现象。