我需要在android应用程序内部的两种语言之间进行切换。现在,我在两个不同的文件夹中的两个strings.xml文件中有两种不同语言的字符串值,一个在values文件夹(默认情况下)下,另一个在Values -fr(法语)下,这是当我尝试在android studio.But的language下编辑翻译时创建的,我不知道如何在两种语言之间切换。它显示了默认语言(即英语),但不知道如何实现切换到其他语言的方法。
有没有人有简单的方法来实现它?
发布于 2017-01-25 13:24:22
您可以使用Android-LocalizationActivity
下面是文档的摘录:
在你的安卓应用程序中支持多种语言,让你保持冷静和轻松。
支持多种语言是android应用程序基础。嗯!这很简单,因为android有String资源。开发人员只需要为不同的语言准备文本,然后android系统就会使用它自己。但经常出现的问题是“及时的语言变化”。因为字符串资源被设计为依赖于当前的设备语言。但是如果我们想要通过单击某个按钮来更改语言。这将很难处理。这个问题会得到解决,因为我创建了一个新的库来处理应用程序语言。它被称为“本地化活动”库。
下面是文档中使用它的示例:
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");
}
}
}在上面的例子中,当用户点击一个按钮时。它将更改为英语或泰语。
发布于 2017-01-25 13:11:39
您可以使用locale类来执行此操作,这对.Hope很有帮助
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);
}
}有关更多信息,请参阅整个教程的link。请参阅此link
https://stackoverflow.com/questions/41843807
复制相似问题