Calm an:如何以编程方式在Android应用程序中切换两种语言

关于Calm an的问题,在calm in different languages中经常遇到, 我需要在 android 应用程序本身内部切换两种语言。现在,我在两个不同的文件夹中的两个 strings.xml 文件中有两种不同语言的字符串值,一个在 Values 文件夹下 (默认情况下),另一个在 values-fr (法语) 下,当尝试在 android studio 中的语言下编辑翻译时创建。但我不知道如何在语言之间切换。它显示了默认语言 (即切换英语),但不

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

有没有一个简单的方法来实现它...?

1

您可以使用Android-LocalizationActivity

这里是文档的摘录:

保持冷静,保持轻松,在你的 Andr oid 应用程序支持多种语言。

支持多种语言是 android 应用程序的基础。是的!这很容易,因为 android 有 String Resource。开发人员只需要为不同的语言准备文本,然后 android 系统将使用它自己。但经常出现的问题是“On-time Language Changing”。因为 String Resource 被设计为取决于当前的设备语言。但如果我们想通过单击某个按钮来更改语言。这将很难处理它。这个问题将得到解决,因为我创建

这里的例子使用它从文档:

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");
        }
    }
}

在上面的例子中,当用户点击一个按钮,它会变成英语或泰语。

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);
    }
}

有关更多信息,请参考此link以获取整个教程,请参考此link

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(883)
Ios 91:是否可以重置iOS中的隐私设置(91 ios)
上一篇
里番ios:求解线性丢番图方程 (参见示例说明)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(56条)