2012-03-13 21 views
5

Próbuję wiedzieć, czy można zmienić domyślny język systemu operacyjnego Android na inny. Dla których języka nie ma w ustawieniach na przykład: jak ustawić programowo język urządzenia dla birmańskich.Android: Czy istnieje sposób na zmianę domyślnego języka Androida na nowy?

+2

Czy mówisz o tym * w kodzie *? –

+0

@John Skeet: zobacz moje zaktualizowane pytanie. Tak, muszę to zrobić programowo. –

+0

Czy szukasz aplikacji dla Androida na innych platformach oprócz java? –

Odpowiedz

12

Służy do zmiany języka przez programmatically--

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

Wpisz CountryCode języka zamiast „pl” bez względu na język jak chcesz ... dla języka japońskiego - "ja_JP" Dla języka arabskiego - "ar" lub sprawdź ten link dla kodu kraju -

http://code.google.com/apis/igoogle/docs/i18n.html

i utwórz folder, w RES/wartości-JA dla japońskiego lub RES/wartości AR dla arabskiego ..

I uczynić string.xml plik i umieścić języki cokolwiek chcesz na układ .. Spowoduje to pobranie domyślnego języka z folderu wartości, w przeciwnym razie będzie on pobierany z zewnętrznego folderu wartości-ar itp. Jak ...

Jego przykład: res/values-ar dla arabskiego - -

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

nadzieję, że to pomoże ..

+0

Dobra odpowiedź Hulk sir. Używam tego samego kodu w moim projcecie (Diff): P –

+0

Gdzie umieścić ten kod Local.setDefault? w MainActivity.java? –

+0

Musisz umieścić to naCreate() każdej aktywności.W przeciwnym razie system może zostać nadpisany przez system - na przykład po zmianie urządzenia w krajobraz i odtworzeniu aktywności za pomocą nowej konfiguracji (dostarczonej przez system). –

3

możesz zmienić ustawienia regionalne na cokolwiek chcesz i system potrzebuje go obsługiwać.

spróbuj tego:

public static void changeLocale(Locale locale) { 
    try { 
     Class<?> activityManagerNative = Class.forName("android.app.ActivityManagerNative"); 

     Object am = activityManagerNative.getMethod("getDefault").invoke(activityManagerNative); 

     Object config = am.getClass().getMethod("getConfiguration").invoke(am); 
     config.getClass().getDeclaredField("locale").set(config, locale); 
     config.getClass().getDeclaredField("userSetLocale").setBoolean(config, true); 

     am.getClass().getMethod("updateConfiguration", android.content.res.Configuration.class).invoke(am, config); 
     Log.i(LOG_TAG, "send change locale request"); 
    } catch (Exception e) { 
     Log.e(LOG_TAG, "change locale error:", e); 
    } 
} 
+0

Czy ten kod zmienia domyślny język na inny nowy język? –

+1

yes, the burmese locale może lubić 'Locale locale = new Locale (" my ")', ale twoje urządzenie potrzebuje obsługiwać ten język inaczej inaczej system nie zmieni języka. – idiottiger

+0

+1 za przydatne informacje. Ale co, jeśli urządzenie nie ma wbudowanego języka birmańskiego i muszę go uruchomić na wszystkich urządzeniach? –

Powiązane problemy