2012-11-23 62 views
1

有什么方法通过改变应用程序的语言来改变手机的语言。通过更改Android中的应用程序语言更改默认手机语言?

我的意思是当我改变我的应用程序的语言,然后默认的手机语言也会改变。

对此有任何想法,请在此分享。

在此先感谢。

+0

我想这是因为这里同样的问题: http://stackoverflow.com/questions/9679574/android-is-there-any-way-to-change-the-default-语言的机器人到新琅 - – blacharnia

回答

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

然后

,并在RES /值-ja表示日语或RES /值-AR阿拉伯语的文件夹..

而且使string.xml文件,并把语言不管你想在布局

其资源的例子/值-AR为arabic--

<?xml version="1.0" encoding="UTF-8"?> 
    <resources> 
    <string name="spinner_label">حسب</string> 
    <string name="app_name">فرق</string> 
    <string name="search">بحث:</string> 
</resource> 
1

我做NT知道,它可以通过编程的方式变了,但你改变了你的应用程序的语言后,您可以要求用户更改设备的语言也

要求用户更改设备语言

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"); 
} 
1

add 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"); 
    }