我需要在android应用程序本身内部切换两种语言。 现在,我在两个不同文件夹中的两个strings.xml文件中有两种不同语言的字符串值,一个在Values文件夹下(默认情况下),另一个在values-fr(for french)下,在尝试时创建android studio中的语言。但我不知道如何在语言之间切换。 它显示默认语言(即英语),但不知道如何实现切换到其他语言的方式。
有没有人能够轻松实现它??
答案 0 :(得分:0)
您可以使用语言环境类来执行此操作。希望这有助于
public class LocaleLanguage {
private static Locale mLocale;
public static void setLocale(Locale locale) {
mLocale = locale;
if(mLocale != null) {
Locale.setDefault(mLocale);
}
}
public static void updateConfig(ContextThemeWrapper wrapper) {
if(mLocale != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Configuration configuration = new Configuration();
configuration.setLocale(mLocale);
wrapper.applyOverrideConfiguration(configuration);
}
}
public static void updateConfig(Application app, Configuration configuration) {
if(mLocale != null && Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
//Wrapping the configuration to avoid Activity endless loop
Configuration config = new Configuration(configuration);
config.locale = mLocale;
Resources res = app.getBaseContext().getResources();
res.updateConfiguration(config, res.getDisplayMetrics());
}
}
}
这是应用程序类
public class App extends Application {
public void onCreate(){
super.onCreate();
// get user preferred language set locale accordingly new locale(language,country)
LocaleUtils.setLocale(new Locale("iw"));
LocaleUtils.updateConfig(this, getBaseContext().getResources().getConfiguration());
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
LocaleUtils.updateConfig(this, newConfig);
}
}
这是您的活动
public class MainActivity extends Activity {
public BaseActivity() {
LocaleUtils.updateConfig(this);
}
}
答案 1 :(得分:0)
您可以使用Android-LocalizationActivity
这里摘自文档:
在您的支持多种语言的情况下保持冷静并保持轻松 android应用程序。
它是支持多种语言的Android应用程序的基础。 是啊!它非常简单,因为android有String Resource。开发人员 只需要准备不同语言的文本然后android 系统将使用自己。但经常出现的问题是&#34;准时语言 改变&#34 ;.因为字符串资源的设计依赖于 当前的设备语言。但如果我们想改变语言 点击某个按钮。它很难处理。这个问题 将解决因为我已经创建了一个新的库来处理应用程序 语言。它称为“#34;本地化活动”#34;库。
这里是从文档中使用它的示例:
import android.os.Bundle;
import android.view.View;
import com.akexorcist.localizationactivity.LocalizationActivity;
public class MainActivity extends LocalizationActivity implements View.OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simple);
findViewById(R.id.btn_th).setOnClickListener(this);
findViewById(R.id.btn_en).setOnClickListener(this);
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.btn_en) {
setLanguage("en");
} else if (id == R.id.btn_th) {
setLanguage("th");
}
}
}
在上面的示例中,当用户单击按钮时。它将改为英语或泰语。