当前位置: 首页 > 知识库问答 >
问题:

支持多种语言

赏星河
2023-03-14
    import android.app.Activity;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.content.res.Configuration;
    import android.os.Bundle;
    import android.os.Vibrator;
    import android.support.v7.app.AlertDialog;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    import java.util.Locale;

    public class MainActivity extends AppCompatActivity {

        private Button btn_chooseBoard;
        private Button btn_store;
        private Button btn_language;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            loadLocale();

            setContentView(R.layout.lay_main);

            Constants instance = Constants.getInstance();

            instance.getAllPlayers();
            instance.getAllBoards();

            btn_chooseBoard = (Button) findViewById(R.id.btn_startGame);
            btn_store = (Button) findViewById(R.id.btn_popup_store);
            btn_language = (Button) findViewById(R.id.btn_language);

            btn_chooseBoard.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    Intent intent = new Intent(MainActivity.this, ChooseBoard.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                    startActivity(intent);

                    ((Vibrator) getSystemService(Context.VIBRATOR_SERVICE)).vibrate(20);
                }
            });

            btn_store.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    Intent intent = new Intent(MainActivity.this, Store.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                    startActivity(intent);

                    ((Vibrator) getSystemService(Context.VIBRATOR_SERVICE)).vibrate(20);
                }
            });

            btn_language.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    showChangeLanguageDialog();
                }
            });
        }

        /**
         * Reset game on resume main activity
         */
        @Override
        public void onResume() {
            super.onResume();
            GameLogic.getGameLogic().resetGame();
        }

        private void showChangeLanguageDialog() {
            // Array of language to display in alert dialog
            final String[] listItems = {"English", "עברית"};
            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

            builder.setTitle("Choose Language...");
            builder.setSingleChoiceItems(listItems, -1, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    if (i == 0) {
                        // English
                        setLocale("en");
                        recreate();
                    } else if (i == 1) {
                        // Hebrew
                        setLocale("iw");
                        recreate();
                    }

                    // Dismiss alert dialog when language stored
                    dialogInterface.dismiss();
                }
            });

            AlertDialog alertDialog = builder.create();

            // Show alert dialog
            alertDialog.show();
        }

        private void setLocale(String lang) {

            Locale locale = new Locale(lang);
            Locale.setDefault(locale);
            Configuration configuration = new Configuration();
            configuration.locale = locale;
            getBaseContext().getResources().updateConfiguration(configuration, getBaseContext().getResources().getDisplayMetrics());

            // Save data to shared preference

            SharedPreferences.Editor editor = getSharedPreferences("Settings", MODE_PRIVATE).edit();
            editor.putString("language", lang);
            editor.apply();

        }

        // Load language saved in shared preference
        public void loadLocale() {
            SharedPreferences pref = getSharedPreferences("Settings", Activity.MODE_PRIVATE);
            String language = pref.getString("language", "");
            setLocale(language);

        }
    }

共有1个答案

莘睿
2023-03-14

Android有自己的API来处理不同的地区。用户在Android系统设置中设置他的区域设置。您不需要向用户询问他的区域设置。

只需将英语字符串放入res/values/strings.xml中,将希伯来语字符串放入res/values-iw/strings.xml中。还可以通过使用start/end而不是left/right来处理布局xml中的LTR/RTL。

编辑:我不知道是否可以像在setLocale()中那样更改应用程序的区域设置。

 类似资料:
  • 为您的 Flarum 添加新的界面语言很简单。按照下面的说明,下载并安装语言包即可。 在您安装并启用一个语言包后,您可以将其 设置为您论坛的默认语言。当您可以 随时禁用 用不到的语言。如果您有使用任何第三方扩展,请务必在开始前 阅读社区扩展说明。 欲开始,请访问 Flarum 社区上的 Extensions > Languages 标签,并找到您想要安装的语言包。 语言包的安装方式与 扩展 相同。

  • 我们在第十章介绍过国际化和本地化,开发了一个go-i18n库,这小节我们将把该库集成到beego框架里面来,使得我们的框架支持国际化和本地化。 i18n集成 beego中设置全局变量如下: Translation i18n.IL Lang string //设置语言包,zh、en LangPath string //设置语言包所在位置 初始化多语言函数: fu

  • 本文向大家介绍ThinkPHP多语言支持与多模板支持概述,包括了ThinkPHP多语言支持与多模板支持概述的使用技巧和注意事项,需要的朋友参考一下 本文以实例形式简述了ThinkPHP的多语言支持与多模板支持。是ThinkPHP中非常重要的技巧,分享给大家供大家参考。具体如下: 一、ThinkPHP多语言支持: config.php配置文件中添加: Home/Lang/文件夹下建立三个文件夹,分别

  • 下表列出了社区提供的用于将Neo4j工作在嵌入模式的不同语言以及相应的框架。 表 8.1. 由社区贡献的Neo4j嵌入驱动 name language / framework URL Neo4j.rb JRuby https://github.com/andreasronge/neo4j Neo4django Python, Django https://github.com/scholrly/n

  • 问题内容: 我建立了我的项目之一是一个组合和。我可以为这两种语言中的任何一种单独配置项目,但不能一起配置。有什么办法吗?我试过了 sonar.language = java,grvy 但没有工作 问题答案: 2014年4月14日更新: 从SonarQube 4.2开始,支持多语言项目。 如果未设置,则会自动发生。 在这里查看我的示例项目:https : //github.com/bellingar

  • 我正在开发Oracle Forms 10g应用程序。该应用程序是在Oracle Forms 6i和Oracle 10g中开发的,因此我将该应用程序升级为Oracle Forms 10g,并使用Oracle Express 10g报告10g。 问题是应用程序是设计在沙特阿拉伯,NLS_LANG="ARABIC_SAUDI_ARABIA. AR8MSWIN1256",所以表单开发人员和运行时给所有的错