1

有没有办法通过更改应用程序的语言来更改手机的语言。

我的意思是当我更改应用程序的语言时,默认电话语言也会更改。

对此有什么想法吗,请在这里分享。

提前致谢。

4

3 回答 3

1
Locale locale = new Locale("en_US");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
context.getApplicationContext().getResources().updateConfiguration(config, null);

然后

并在 res/values-ja 中为日语创建一个文件夹,或在 res/values-ar 中为阿拉伯语创建一个文件夹。

并制作 string.xml 文件并将您想要的语言放在布局中

它的 res/values-ar 用于阿拉伯语的示例——

<?xml version="1.0" encoding="UTF-8"?>
  <resources>
    <string name="spinner_label">حسب</string>
    <string name="app_name">فرق</string> 
    <string name="search">بحث:</string>
</resource>
于 2012-11-23T07:14:06.827 回答
1

我不知道它可以通过编程方式进行更改,但是在您更改应用程序语言后,您也可以要求用户更改设备语言,

要求用户更改设备语言

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.android.settings", "com.android.settings.LanguageSettings");            
startActivity(intent);

更改应用语言

<activity
    android:name=".ui.SomeActivity"
    android:configChanges="locale"
    :
    :
</activity>


public static void setLanguage(Context context, String languageToLoad) {
    Log.d(TAG, "setting language");
    Locale locale = new Locale(languageToLoad); //e.g "sv"
    Locale systemLocale = SystemLocale.getInstance().getCurrentLocale(context);
    if (systemLocale != null && systemLocale.equals(locale)) {
       Log.d(TAG, "Already correct language set");
       return;
    }
    Locale.setDefault(locale);
    android.content.res.Configuration config = new android.content.res.Configuration();
    config.locale = locale;
    context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
    Log.d(TAG, "Language set");
}
于 2012-11-23T07:15:22.923 回答
1

android:configChanges="locale"添加到 AndroidManifect 文件中的活动声明中。

然后从该活动的 onCreate 调用以下方法。

public static void setLanguage(Context context, String languageToLoad) {
  Log.d(TAG, "setting language");
  Locale locale = new Locale(languageToLoad); //e.g "sv"
  Locale systemLocale = SystemLocale.getInstance().getCurrentLocale(context);
   if (systemLocale != null && systemLocale.equals(locale)) {
   Log.d(TAG, "Already correct language set");
   return;
 }
 Locale.setDefault(locale);
 android.content.res.Configuration config = new android.content.res.Configuration();
 config.locale = locale;
 context.getResources().updateConfiguration(config,context.getResources().getDisplayMetrics());                                                            
 Log.d(TAG, "Language set");
  }
于 2012-11-23T07:21:52.647 回答