启用对Android应用程序的多语言支持 [英] Enabling multi language support for android application
本文介绍了启用对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屋!
查看全文