当用户选择语言时,如何更改应用程序的语言?

时间:2017-04-22 05:21:07

标签: android multilingual idioms multiple-languages

当用户选择语言时如何更改应用的语言?

我想做几乎这样的事:http://snowpard-android.blogspot.com.br/2013/03/programmatically-change-language-in.html?google_comment_id=z13isbsazkf3hzea504celo5oy3rjzbyevo0k

但是我没有更改textView的语言,而是想创建一个带有该语言名称的按钮,当用户点击它时,它会进入已翻译的第二页。我已经使用这些语言创建了新值,但是无法考虑可以使用这些字符串打开另一个页面的代码。可以帮助我吗,plssss?

2 个答案:

答案 0 :(得分:0)

我建议在第一个活动中将语言名称作为额外的意图传递,并在第二个活动中获取它并相应地更新语言。请考虑以下

public class MainActivity extends AppCompatActivity {

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

        // findViewbyId here for button
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, OtherActivity.class);
                intent.putExtra("lang", "fr");
                startActivity(intent);
            }
        });
    }
}

和其他活动

public class OtherActivity extends AppCompatActivity {

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

        String lang = getIntent().getStringExtra("lang") == null ? getIntent().getStringExtra("lang") : "en";

        // assuming this is the method you have to call to change the language
        changeLang(en);
    } 
}

希望这有帮助。

答案 1 :(得分:0)

使用本地化即可实现此功能。

       String languageToLoad  = "hi"; // change your language her this is for hindi
  Locale locale = new Locale(languageToLoad); 
    Locale.setDefault(locale);
  Configuration config = new Configuration();
   config.locale = locale;
  getBaseContext().getResources().updateConfiguration(config, 
  getBaseContext().getResources().getDisplayMetrics());
 this.setContentView(R.layout.main);