关于Android app 国际化 中英文翻译的细节处理

时间:2021-10-08 20:14:31

导语:
最近一个项目上有要求完成app国际化,也就是如果系统语言是英文,那么你的app打开时就会自动读取string 中的字符串资源,自动完成匹配,以满足国际化需求,那么我们就按照步骤走,完成我们的app国际化道路。
步骤1:
建立相关资源文件夹:
我们要在value 文件夹下建相关的文件夹盛放app国际化资源,如图片,strings字符串文件,等等,规格是:value-国家简写编号:那么我们大中国的就是value-zh
那么文件结构就是: 关于Android app 国际化 中英文翻译的细节处理
好,完成第一步啦。
步骤二:
步骤二呢就是需要我们往不同的国际资源中填充资源,在保证文件名相同的情况下做好适配工作,比如

//我们匹配汉语字符串资源在    value-zh 文件夹中strings文件下
<string name="change_chanese">是否切换成汉语?</string>
//在英语文件夹下我们要如此 value-en 文件夹中strings文件下

<string name="change_chanese">Do you want to switch to Chinese?
</string>

同理我们可以找专业人士来辅助我们的工作,完成国际化翻译。
国际简写编码问题:
下面列举一些常用国家的国际化简写编码:

  1. 国家/地区 语言代码 国家/地区 语言代码
    简体中文(中国) zh-cn 繁体中文(*地区) zh-tw
    繁体中文(香港) zh-hk 英语(香港) en-hk
    英语(美国) en-us 英语(英国) en-gb
    英语(全球) en-ww 英语(加拿大) en-ca
    英语(澳大利亚) en-au 英语(爱尔兰) en-ie
    英语(芬兰) en-fi 芬兰语(芬兰) fi-fi
    英语(丹麦) en-dk 丹麦语(丹麦) da-dk
    英语(以色列) en-il 希伯来语(以色列) he-il
    英语(南非) en-za 英语(印度) en-in
    英语(挪威) en-no 英语(新加坡) en-sg
    英语(新西兰) en-nz 英语(印度尼西亚) en-id
    英语(菲律宾) en-ph 英语(泰国) en-th
    英语(马来西亚) en-my 英语(阿拉伯) en-xa
    韩文(韩国) ko-kr 日语(日本) ja-jp
    荷兰语(荷兰) nl-nl 荷兰语(比利时) nl-be
    葡萄牙语(葡萄牙) pt-pt 葡萄牙语(巴西) pt-br
    法语(法国) fr-fr 法语(卢森堡) fr-lu
    法语(瑞士) fr-ch 法语(比利时) fr-be
    法语(加拿大) fr-ca 西班牙语(拉丁美洲) es-la
    西班牙语(西班牙) es-es 西班牙语(阿根廷) es-ar
    西班牙语(美国) es-us 西班牙语(墨西哥) es-mx
    西班牙语(哥伦比亚) es-co 西班牙语(波多黎各) es-pr
    德语(德国) de-de 德语(奥地利) de-at
    德语(瑞士) de-ch 俄语(俄罗斯) ru-ru
    意大利语(意大利) it-it 希腊语(希腊) el-gr
    挪威语(挪威) no-no 匈牙利语(匈牙利) hu-hu
    土耳其语(土耳其) tr-tr 捷克语(捷克*) cs-cz
    斯洛文尼亚语 sl-sl 波兰语(波兰) pl-pl
    瑞典语(瑞典) sv-se 西班牙语 (智利) es-cl

那么我们应用的时候就是value-zh(中国),value-en(美国)这样如此类推,,,
最后我们要用代码切换:
思路就是:用SharedPreference 保存在本地设置,然后每次开启app时候在application中提前设置:

上代码:

  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);
}

如何应用:
1.在application中做好初始化工作:
首先设置一门语言,用于本app,
2.在需要切换时候先要执行切换语言代码然后清空堆栈内的activity最后跳转到主页,相当于重启app刷新UI
如何清空堆栈内的activity(跳转时候设置:setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);):

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国际化工作就分三步走完成啦!