Android应用支持多语言,包括同一种语言的变种(方言),比如就英语而言有,
en-rGB 英国英语
en-rUS 美国英语
en-rCA 加拿大英语
如果想处理这些变种里翻译不同的地方,可以创建多份语言资源,放到应用程序源代码里对应的资源目录,这样build出apk,用户安装以后,应用程序会自动根据用户手机里的语言设置选择对应的字符串显示。
/res/values-en-rGB/stringsxml
/res/values-en-rUS/stringsxml
/res/values-en-rCA/stringsxml
类似地,就西班牙语而言也有很多变种,你可以判断一下这些客户使用的是哪个变种,然后分目录存放对应的翻译。
es 一般的西班牙语(general)
es-rAR 阿根廷西班牙语
es-rBO
es-rCL
es-rCO 哥伦比亚西班牙语
es-rCR
es-rDO
es-rEC
es-rES 卡斯蒂利亚西班牙语 (西班牙人听说读写用的)
es-rGT
es-rHN
es-rMX 墨西哥西班牙语
es-rNI
es-rPA
es-rPE
es-rPR
es-rPY
es-rSV
es-rUS 美国西班牙语
es-rUY
es-rVE
1 在工程res文件下添加对应语种的values文件,ar:阿拉伯语, en:英语 zh_rCN: 简体中文
截图如下:
2 在功能清单文件中对要进行切换acitivity 进行配置添加
android:configChanges="locale"
3 对语言选择的处理
public class MainActivity extends Activity {
Context context = MainActivitythis;;
int languageId;
@Override
public void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
read();//设置
setContentView(Rlayoutmain);
findViewById(Ridbtn_change)setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
save();
}
});
}
//保存
private void save() {
String[] languages = { "默认", "CN", "EN" };
AlertDialogBuilder builder = new AlertDialogBuilder(context,
androidRstyleAnimation_Dialog);
buildersetTitle("选择语言");
final SharedPreferences languagePre = contextgetSharedPreferences(
"language_choice", contextMODE_PRIVATE);
final int id = languagePregetInt("id", 0);
buildersetSingleChoiceItems(languages, id,
new DialogInterfaceOnClickListener() {
@Override
public void onClick(DialogInterface arg0, int index) {
switch (index) {
case 0:
// 系统默认语言
languageId = 0;
break;
case 1:
// 简体中文
languageId = 1;
break;
case 2:
// 英语
languageId = 2;
break;
case 3:
// 阿拉伯语
languageId = 3;
break;
default:
break;
}
languagePreedit()putInt("id", languageId)commit();
}
});
// 保存
buildersetPositiveButton("保存", new DialogInterfaceOnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((Activity) context)finish();
Intent intent = new Intent();
intentsetClass(context, MainActivityclass);
contextstartActivity(intent);
}
});
buildershow();
}
//读取
private void read() {
SharedPreferences languagePre = getSharedPreferences("language_choice",
ContextMODE_PRIVATE);
int id = languagePregetInt("id", 0);
Logd("MainActivity", "langauge_id=" + id);
ToastmakeText(context, "langauge_id=" + id, ToastLENGTH_LONG)show();
// 应用内配置语言
Resources resources = getResources();// 获得res资源对象
Configuration config = resourcesgetConfiguration();// 获得设置对象
DisplayMetrics dm = resourcesgetDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。
switch (id) {
case 0:
configlocale = LocalegetDefault(); // 系统默认语言
break;
case 1:
configlocale = LocaleSIMPLIFIED_CHINESE; // 简体中文
break;
case 2:
configlocale = LocaleENGLISH; // 英文
break;
default:
configlocale = LocalegetDefault();
break;
}
resourcesupdateConfiguration(config, dm);
}
}
以上就是关于android多语言的纠结问题全部的内容,包括:android多语言的纠结问题、android应用内怎么设置语言切换、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)