android多语言的纠结问题

android多语言的纠结问题,第1张

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应用内怎么设置语言切换、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9350881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存