启用对Android应用程序的多语言支持 [英] Enabling multi language support for android application

查看:102
本文介绍了启用对Android应用程序的多语言支持的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个应支持英语和阿拉伯语的android应用程序. 一种.为英语和阿拉伯语创建了值文件夹,并更新了所使用的字符串. b.创建一个Application类进行本地化 C.在活动"中单击按钮时实现了代码

I'm developing an android application which should support both English and Arabic.I have done a. Created values folder for English and Arabic and updated the strings used. b. Created an Application class for localization c. Implemented the code on button click in Activity

查看我的申请文件

MyApp.java

import android.app.Application;
import android.content.Context;
import android.content.res.Configuration;
import java.util.Locale;
public class MyApp extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
    }

    public static void setLocaleAr (Context context){
        Locale locale = new Locale("ar");
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        context.getApplicationContext().getResources().updateConfiguration(config, null);
    }

    public static void setLocaleEn (Context context){
        Locale locale = new Locale("en_US");
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        context.getApplicationContext().getResources().updateConfiguration(config, null);
    }
}

使用按钮单击我的活动课程

My activity class using button click

MainActivity.java

    import android.app.Activity;
    import android.content.Intent;
    import android.content.res.Configuration;
    import android.content.res.Resources;
    import android.os.Bundle;
    import android.os.Handler;
    import android.util.DisplayMetrics;
    import android.view.View;
    import android.view.Window;
    import android.widget.Button;
    import android.widget.SimpleAdapter;

    import java.util.Locale;

    public class SplashActivity extends Activity implements View.OnClickListener{

        // Splash screen timer
        private static int SPLASH_TIME_OUT = 3000;
        Button buttonEnglish,buttonArabic;


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_splash);


            buttonEnglish =(Button) findViewById(R.id.buttonEnglish);
            buttonArabic =(Button) findViewById(R.id.buttonArabic);

            buttonEnglish.setOnClickListener(this);
            buttonArabic.setOnClickListener(this);

        }
        @Override
        public void onClick(View view) {
           switch(view.getId()) {
               case R.id.buttonEnglish:
                   MyApp.setLocaleEn(SplashActivity.this);
                   setLocale("en");
                   break;
               case R.id.buttonArabic: {
                   //buttonArabic.setBackground(getDrawable(R.color.white));
                   MyApp.setLocaleAr(SplashActivity.this);
                   setLocale("ar");
                   break;
               }
           }
        }
    }

推荐答案

只需忘记所有内容,只需实现以下代码段即可

Just forget everything and just implement the below code Snippet

在build.gradle文件中

Inside your build.gradle file

defaultConfig
 {
    resConfigs "en", "ar"
 }

在您的活动中:

 @Override
    public void onClick(View view) 
    {
       switch(view.getId()) 
       {
           case R.id.buttonEnglish:

               updateLanguage("en");

               break;
           case R.id.buttonArabic: 

                updateLanguage("ar");

               break;
       }
    }

@Override
public void recreate()
{
    if (android.os.Build.VERSION.SDK_INT >= 14)
    {
        super.recreate();
    }
    else
    {
        startActivity(getIntent());
        finish();
    }
}

private void updateLanguage(String language)
{
    Locale locale = new Locale(language);
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());

    SharedPreferences languagepref = getSharedPreferences("language",MODE_PRIVATE);
    SharedPreferences.Editor editor = languagepref.edit();
    editor.putString("languageToLoad",language);
    editor.apply();

    recreate();
} 

这篇关于启用对Android应用程序的多语言支持的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆