关于Android app 国际化 中英文翻译的细节处理
发布时间
阅读量:
阅读量
导语:
最近一个项目上有要求完成app国际化,也就是如果系统语言是英文,那么你的app打开时就会自动读取string 中的字符串资源,自动完成匹配,以满足国际化需求,那么我们就按照步骤走,完成我们的app国际化道路。
步骤1:
建立相关资源文件夹:
我们要在value 文件夹下建相关的文件夹盛放app国际化资源,如图片,strings字符串文件,等等,规格是:** value-国家简写编号** :那么我们大中国的就是value-zh
那么文件结构就是:

步骤二是需要我们往不同的国际资源中录入/导入/导入资源,在确保文件名一致的前提下进行适配性处理,例如按照统一的命名规范.
//我们匹配汉语字符串资源在 value-zh 文件夹中strings文件下
<string name="change_chanese">是否切换成汉语?</string>
//在英语文件夹下我们要如此 value-en 文件夹中strings文件下
<string name="change_chanese">Do you want to switch to Chinese?
</string>
借助我们能够邀请专业人士协助完成国际化翻译工作
国家/地区 语言代码 国家/地区 语言代码
那么,在应用程序运行时使用value-zh(中国)、value-en(美国)的方式是如此类推。
最后我们需要通过代码实现切换:
我们的思路是利用SharedPreference存储在本地配置文件中,并且启动应用程序时完成必要的初始化操作。
上代码:
protected void switchLanguage(String language) {
//设置应用语言类型
Resources resources = getResources();
Configuration config = resources.getConfiguration();
DisplayMetrics dm = resources.getDisplayMetrics();
if (language.equals("en")) {
config.locale = Locale.US;
} else {
config.locale = Locale.SIMPLIFIED_CHINESE;
}
resources.updateConfiguration(config, dm);
//保存设置语言的类型
SharedPreferenceUtils.setParam(getApplicationContext(),"language", language);
}
如何应用:
如何清空堆栈内的activity(跳转时候配置intent_flags并设置相应的标志位)
Intent intent = new Intent(A.this,Main.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
//为保险起见,再一次杀掉进程 android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
最后:
大功告成,我们的app国际化工作就分三步走完成啦!
全部评论 (0)
还没有任何评论哟~
