首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android应用中以编程方式在两种语言之间切换?

如何在android应用中以编程方式在两种语言之间切换?
EN

Stack Overflow用户
提问于 2017-01-25 13:08:08
回答 2查看 3.7K关注 0票数 2

我需要在android应用程序内部的两种语言之间进行切换。现在,我在两个不同的文件夹中的两个strings.xml文件中有两种不同语言的字符串值,一个在values文件夹(默认情况下)下,另一个在Values -fr(法语)下,这是当我尝试在android studio.But的language下编辑翻译时创建的,我不知道如何在两种语言之间切换。它显示了默认语言(即英语),但不知道如何实现切换到其他语言的方法。

有没有人有简单的方法来实现它?

EN

回答 2

Stack Overflow用户

发布于 2017-01-25 13:24:22

您可以使用Android-LocalizationActivity

下面是文档的摘录:

在你的安卓应用程序中支持多种语言,让你保持冷静和轻松。

支持多种语言是android应用程序基础。嗯!这很简单,因为android有String资源。开发人员只需要为不同的语言准备文本,然后android系统就会使用它自己。但经常出现的问题是“及时的语言变化”。因为字符串资源被设计为依赖于当前的设备语言。但是如果我们想要通过单击某个按钮来更改语言。这将很难处理。这个问题会得到解决,因为我创建了一个新的库来处理应用程序语言。它被称为“本地化活动”库。

下面是文档中使用它的示例:

代码语言:javascript
复制
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");
        }
    }
}

在上面的例子中,当用户点击一个按钮时。它将更改为英语或泰语。

票数 1
EN

Stack Overflow用户

发布于 2017-01-25 13:11:39

您可以使用locale类来执行此操作,这对.Hope很有帮助

代码语言:javascript
复制
   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());
        }
    }
}

下面是应用程序类

代码语言:javascript
复制
    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);
    }
}

这是你的活动

代码语言:javascript
复制
 public class MainActivity extends Activity {
    public BaseActivity() {
        LocaleUtils.updateConfig(this);
    }
}

有关更多信息,请参阅整个教程的link。请参阅此link

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41843807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档