通过strings.xml在app中更改语言

我是java的新手,实际上开发了一个游戏应用程序,我想添加一个可以改变游戏语言的function。

我已经制作了2个strings.xml。 一个是默认(英文),另一个是翻译版本(fil)

这是我的代码

import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class LanguageActivity extends Activity { private static Button button_fil; private static Button button_eng; public void onButtonClickListener() { button_fil = (Button) findViewById(R.id.btnFilipino); button_fil.setOnClickListener( new View.OnClickListener() {@ Override public void onClick(View v) { Toast.makeText(LanguageActivity.this, "Filipino Language", Toast.LENGTH_SHORT).show(); } } ); button_eng = (Button) findViewById(R.id.btnEnglish); button_eng.setOnClickListener( new View.OnClickListener() {@ Override public void onClick(View v) { Toast.makeText(LanguageActivity.this, "English Language", Toast.LENGTH_SHORT).show(); } } ); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.language); onButtonClickListener(); } } 

非常感谢!

请试试这个例子。 也许它会对你有所帮助。 在这里,我使用微调器来选择语言。

在你的活动中

 import java.util.Locale; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.content.res.Configuration; import android.content.res.Resources; import android.util.DisplayMetrics; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.Spinner; import android.widget.Toast; import android.widget.AdapterView.OnItemSelectedListener; public class AndroidLocalize extends Activity { Spinner spinnerctrl; Button btn; Locale myLocale; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); spinnerctrl = (Spinner) findViewById(R.id.spinner1); spinnerctrl.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView parent, View view, int pos, long id) { if (pos == 1) { Toast.makeText(parent.getContext(), "You have selected Tamil", Toast.LENGTH_SHORT) .show(); setLocale("ta"); } else if (pos == 2) { Toast.makeText(parent.getContext(), "You have selected Hindi", Toast.LENGTH_SHORT) .show(); setLocale("hi"); } else if (pos == 3) { Toast.makeText(parent.getContext(), "You have selected English", Toast.LENGTH_SHORT) .show(); setLocale("en"); } } public void onNothingSelected(AdapterView arg0) { // TODO Auto-generated method stub } }); } public void setLocale(String lang) { myLocale = new Locale(lang); Resources res = getResources(); DisplayMetrics dm = res.getDisplayMetrics(); Configuration conf = res.getConfiguration(); conf.locale = myLocale; res.updateConfiguration(conf, dm); Intent refresh = new Intent(this, AndroidLocalize.class); startActivity(refresh); } } 

在您的XML中

       

并在您的res中创建文件夹

然后为您的语言添加strings.xml

  Androidlocalization Hello world! AndroidLocalize बधाई सचिन !! जिस भाषा में आप सचिन को नमस्कार करना चाहते हैं का चयन करें!!!! Choose the language  Select language தமிழ் हिंदी English   

请更新您的清单,我希望这将解决您的问题..

像这样更新。

          

这是我写的一种方法,并且非常适合我从app更改语言(并且仅仅是单个应用程序 – 而不是整个设备)

 private void setLanguageForApp(String languageToLoad){ Locale locale; if(languageToLoad.equals("not-set")){ //use any value for default locale = Locale.getDefault(); } else { locale = new Locale(languageToLoad); } Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); } 

注意:每次打开应用程序时,在第一个活动的onCreate()中的setContentView()之前调用此方法。

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setLanguageForApp("en"); //hard-coded here - get from whereever you stored setContentView(R.layout.activity_category_list); ... ... ... 

将选定的区域设置代码存储在共享首选项中,并检索以作为参数传递。

语言选择对话框的方法:(注意:在语言更改后重新加载应用程序以使语言更改生效)

 private void showLanguageChangePopup() { CharSequence languages[] = new CharSequence[] { "English", "हिंदी (Hindi)", "Français (French)", "Italiano (Italian)", "Deutsch (German)", "Español (Spanish)", "日本語 (Japanese)", "í•œêµì–´ (Korean)", "Nederlands (Dutch)", "Português (Portuguese)", "руÑÑкий (Russian)", "ä¸æ–‡ (Chinese)", "العربية (Arabic)" }; final String codes[] = new String[] { "en", "hi", "fr", "it", "de", "es", "ja", "ko", "nl", "pt", "ru", "zh", "ar" }; int currentLangIndex = Prefs.getUserPreferenceIntValue(Prefs.Key.SELECTED_LANGUAGE_INDEX, getBaseContext()); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.text_select_language); builder.setSingleChoiceItems(languages, currentLangIndex, null); builder.setNegativeButton(R.string.text_translate_cancel, null); builder.setPositiveButton(R.string.action_change_language, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { int selectedIndex = ((AlertDialog) dialog).getListView().getCheckedItemPosition(); Prefs.setUserPreferenceStringValue(Prefs.Key.LANGUAGE, codes[selectedIndex], getBaseContext()); Prefs.setUserPreferenceIntValue(Prefs.Key.SELECTED_LANGUAGE_INDEX, selectedIndex, getBaseContext()); Intent i = new Intent(CategoryListActivity.this, CategoryListActivity.class); startActivity(i); finish(); } }); builder.show(); } 

始终遵循官方教程

在此添加您的字符串文件。

如果您没有,请在MyProject / res文件夹中创建values-fil文件夹。

在此处输入图像描述

如果要处理电话系统语言更改,请选中此项 。

当您支持多种语言时,您需要创建单独的值文件夹,例如values-fr,并将stings.xml文件放在此文件夹中。 应该管用。 希望这可以帮助!

  Androidlocalization Hello world! AndroidLocalize बधाई सचिन !! जिस भाषा में आप सचिन को नमस्कार करना चाहते हैं का चयन करें!!!! Choose the language  Select language தமிழ் हिंदी English   

每个代码都在同一文件夹中,为不同语言添加不同的值文件夹

例如,hindi的值文件夹进入值-hi