这个问题在这里已经有了答案:
如何只需单击一下就可以更改整个应用程序的语言(1个答案)昨天关门了。我想通过字符串改变应用程序的语言。这是我的字符串文件夹
pdkcd3nj1#
我想通过字符串改变应用程序的语言。这是我这边的。这对我来说非常合适。按照以下步骤更改语言。1.将字符串保存在文件夹中,如values ur(乌尔都语)而不是将所有字符串转换为您必须转换的语言2.创建一个baseactivity类,并将您的所有休息活动扩展到该基类
public class BaseActivity extends AppCompatActivity { public BaseActivity context; public MySharePreference mySharePreference; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = BaseActivity.this; mySharePreference = MySharePreference.getInstance(context); LocaleHelper.setLocale(context, mySharePreference.getLanguage() ); } protected void attachBaseContext(Context base) { super.attachBaseContext(LocaleHelper.onAttach(base)); } }
3.我有一个活动,我想翻译它的语言。
public class ExampleActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_example); } }
只需将应用程序扩展到baseactivity类。3.创建一个localhelper类,在其中更改方向和字符串。
public class LocaleHelper { public static Context setLocale(Context context, String language) { Locale locale = new Locale(language); Locale.setDefault(locale); Resources resources = context.getResources(); Configuration configuration = new Configuration(resources.getConfiguration()); configuration.setLayoutDirection(locale); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { configuration.setLocale(locale); LocaleList localeList = new LocaleList(locale); LocaleList.setDefault(localeList); configuration.setLocales(localeList); } else { configuration.locale = locale; configuration.setLocale(locale); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) { return context.createConfigurationContext(configuration); } else { resources.updateConfiguration(configuration, resources.getDisplayMetrics()); return context; } } public static Context onAttach(Context context) { return setLocale(context, MySharePreference.getInstance(context).getLanguage()); } }
4.在应用程序类中附加基本上下文
public class AppClass extends MultiDexApplication { private static AppClass appClass; public static AppClass getintance() { return appClass; } @Override public void onCreate() { super.onCreate(); appClass = this; MySharePreference.getInstance(this); } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(LocaleHelper.onAttach(base)); } }
5.在build.gradle文件中添加最新的androidx SharedReferences依赖项。
implementation 'androidx.preference:preference:1.1.1'
6.在我的情况下,我自己做了一个sharedpreferences类。
public class MySharePreference { private static MySharePreference instance; private static SharedPreferences pref; private MySharePreference(Context context) { if (context != null) { pref = PreferenceManager.getDefaultSharedPreferences(context); } else { pref = PreferenceManager.getDefaultSharedPreferences(App.getintance()); } } public static MySharePreference getInstance(Context context) { if (instance == null || pref == null) { instance = new MySharePreference(context); } return instance; } public String getLanguage() { return pref.getString("appLanguage", "en"); } public void setLanguage(String b) { pref.edit().putString("appLanguage", b).apply(); } }
7.最后将该语言的缩写保存到sharedpreferences,在我的例子中,我有spinner。
spinner_lang.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { if (mySharePreference.getLanguagePosition() != position) { mySharePreference.setLanguage(Constants.COUNTRY_LIST.get(position).countryAbbr); mySharePreference.setLanguagePosition(position); startActivity(new Intent(mActivity, MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); } } @Override public void onNothingSelected(AdapterView<?> parent) { } });
现在一切都结束了。。。。。。
1条答案
按热度按时间pdkcd3nj1#
我想通过字符串改变应用程序的语言。
这是我这边的。这对我来说非常合适。
按照以下步骤更改语言。
1.将字符串保存在文件夹中,如values ur(乌尔都语)
而不是将所有字符串转换为您必须转换的语言
2.创建一个baseactivity类,并将您的所有休息活动扩展到该基类
3.我有一个活动,我想翻译它的语言。
只需将应用程序扩展到baseactivity类。
3.创建一个localhelper类,在其中更改方向和字符串。
4.在应用程序类中附加基本上下文
5.在build.gradle文件中添加最新的androidx SharedReferences依赖项。
6.在我的情况下,我自己做了一个sharedpreferences类。
7.最后将该语言的缩写保存到sharedpreferences,在我的例子中,我有spinner。
现在一切都结束了。。。。。。