Android Locale не работает, если приложение загружено из Play Store - PullRequest
0 голосов
/ 10 января 2019

Я добавил многоязычную поддержку в свое приложение, но когда я тестирую все языки в режиме отладки, я вижу все языки, но когда я публикую в магазине воспроизведения, я не могу видеть все языки.

Всякий раз, когда я нажимаю на любом языке, все текстовые сообщения отображаются только на английском языке (оригинал)

Изменение языка (SettingActivity)

 private void showlandailog() {

        final String[] listitems = {"English","हिंदी","Türk","Deutsche","italiano","ગુજરાતી"};
        AlertDialog.Builder mBuilder = new AlertDialog.Builder(SettingsActivity.this);
        mBuilder.setTitle("Choose Language(beta)");
        mBuilder.setSingleChoiceItems(listitems, -1, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {


                String name = "show";
                SharedCommon.putSharedPreferencesString(SettingsActivity.this,SharedCommon.keysettingdailog,name);


                if (i==0){

                    setlocale("en");
                    Intent startIntent = new Intent(SettingsActivity.this, MainActivity.class);
                    startActivity(startIntent);
                }
                else if (i==1){

                    setlocale("hi");
                    Toast.makeText(SettingsActivity.this, "hi", Toast.LENGTH_SHORT).show();
                    /*recreate();*/
                    Intent startIntent = new Intent(SettingsActivity.this, MainActivity.class);
                    startActivity(startIntent);
                }
                else if (i==2){

                    setlocale("tr");
                    Toast.makeText(SettingsActivity.this, "tr", Toast.LENGTH_SHORT).show();

                    Intent startIntent = new Intent(SettingsActivity.this, MainActivity.class);
                    startActivity(startIntent);
                }
                else if (i==3){

                    setlocale("de");
                    Toast.makeText(SettingsActivity.this, "de", Toast.LENGTH_SHORT).show();

                    Intent startIntent = new Intent(SettingsActivity.this, MainActivity.class);
                    startActivity(startIntent);
                }
                else if (i==4){

                    setlocale("it");
                    Toast.makeText(SettingsActivity.this, "it", Toast.LENGTH_SHORT).show();

                    Intent startIntent = new Intent(SettingsActivity.this, MainActivity.class);
                    startActivity(startIntent);
                }
                else if (i==5){

                    setlocale("gu");
                    Toast.makeText(SettingsActivity.this, "gu", Toast.LENGTH_SHORT).show();

                    Intent startIntent = new Intent(SettingsActivity.this, MainActivity.class);
                    startActivity(startIntent);
                }

                dialogInterface.dismiss();
            }
        });

        AlertDialog mDialog = mBuilder.create();

        mDialog.show();

    }



    private void setlocale(String lang) {

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

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

        SharedCommon.putSharedPreferencesString(SettingsActivity.this,SharedCommon.keylanguage,lang);

    }

    private void loadlocale() {

        SharedPreferences prefs = getSharedPreferences("Settings", Activity.MODE_PRIVATE);
        String Laguage  = prefs.getString("My_Lang", "");
        setlocale(Laguage);




        //Toast.makeText(this, ""+Laguage, Toast.LENGTH_SHORT).show();
    }

Загрузить код языка

 private void checklanguage() {


        String setlan = SharedCommon.getSharedPreferencesString(NewQRActivity.this, keylanguage,"");

        if (setlan.equals("en")){
            setlocale("en");


        }
        else if (setlan.equals("hi")){

            setlocale("hi");
        }
        else if (setlan.equals("tr")){
            setlocale("tr");

        }
        else if (setlan.equals("de")){
            setlocale("de");

        }
        else if (setlan.equals("it")){
            setlocale("it");

        }

        else if (setlan.equals("gu")){
            setlocale("gu");

        }


        loadlocale();
    }

    private void setlocale(String lang) {

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

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

        loadlocale();

        Toast.makeText(this, ""+lang, Toast.LENGTH_SHORT).show();

        SharedCommon.putSharedPreferencesString(SettingsActivity.this,SharedCommon.keylanguage,lang);


    }

    private void loadlocale() {

        checklanguage();

        SharedPreferences prefs = getSharedPreferences("Settings", Activity.MODE_PRIVATE);
        String Laguage  = prefs.getString("My_Lang", "");
        setlocale(Laguage);

        //Toast.makeText(this, ""+Laguage, Toast.LENGTH_SHORT).show();
    }

Есть ли проблема с моим кодом или игровой консолью?

...