2012-11-23 64 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"); 
    }