2011-03-18 25 views
5

Android uygulamamı 3 dilde, yani Almanca, İngilizce ve hollanda yapmak zorundayım. Android uygulama ismim values-de ve values-nl res dizininde üç klasör yaptım. kullanıcı ı Aşağıdaki kodu gerçekleştirmek belirli bir dili seçer şimdi zaman: Değerler klasöründe adı add_site ile bir dize yani klasörler aynı ada sahip farklı değerlerdeçoklu dil android uygulaması?

Resources res = getResources(); 
Configuration newConfig = new Configuration(res.getConfiguration()); 
newConfig.locale = Locale.ENGLISH; 
res.updateConfiguration(newConfig, null); 

tüm dizeleri, aynı ada sahip olduğu the values-de klasörü ancak farklı bir değerle. Yerel ayarı Almanca olarak ayarladığımda başvurum Almanca değerini yüklemiyor mu? sorun ne olabilir?

Yardımlarınız için teşekkürler. super.onCreate hemen çağrısından sonra onCreate() bu koyarak

+0

Yerel konumların Android tarafından otomatik olarak sistem tercihlerine göre ele alındığı benim anlayışım. Kullanıcıları, yerel ayarı uygulamanız içinden ayarlayabilmeniz için herhangi bir nedeniniz var mı? – KPthunder

+0

evet. Bunun nedeni sadece benim uygulamamı görüntüleyebilmek için, kullanıcının sisteme bağımlılığı değiştirmesi gerekecek, bu da tüm uygulamaların o dilde ayarlanmasıyla sonuçlanacak .... ki gereksiz olduğuna inanıyorum. Şimdi sistem configration değiştirmeye rağmen kod çalışıyor, ne zaman ben Almanca olarak sistem yerel ayarladınız zaman Almanca metin gösteriliyor anlamına geliyor ... Ben uygulama içinden aynı ulaşmak istiyorsanız ben – user590849

+0

Bazı uzatmak için Bir özellik olarak iyi bir fikir ama stok uygulamaları da dahil olmak üzere Android'deki tüm diğer uygulamaların nasıl karşı olduğunu aklınızda bulundurun. Hepsi otomatik olarak yerel ayarlarınızı tespit eder ve kullanıcı müdahalesi olmadan doğru kaynakları anında yükler. Gerçekten iyi bir neden olmadığı sürece, bu varsayılan davranışı bozmazdım. –

cevap

5

Dene:

Locale locale = new Locale("de"); 
Locale.setDefault(locale); 
Configuration config = new Configuration(); 
config.locale = locale; 
getBaseContext().getResources().updateConfiguration(config, 
     getBaseContext().getResources().getDisplayMetrics()); 

DÜZENLEME:Here's another approach. Çok esnek görünüyor, ancak tüm Android sürümlerinde çalışıp çalışmadığı yorumunda bazı anlaşmazlıklar var gibi görünüyor.

+0

Yerel ayarları yalnızca kullanıcı istediğinde değiştirmek istiyorum. yani bir checkbox aracılığıyla bir language.java dosyası var, kullanıcının dili seçmesini ve değişiklikleri görmek istediğim bir siteelisting.java etkinliği var. – user590849

0

Yapılandırma yerel ayarını ayarlamak için, farklı bir düzen yönü LTR veya RTL olan bir dili de desteklemeniz yeterli değildir.

 Resources res = getResources(); 
     Configuration newConfig = new Configuration(res.getConfiguration()); 
     Locale locale = new Locale(appLanguage); 
     newConfig.locale = locale; 
     newConfig.setLayoutDirection(locale); 
     res.updateConfiguration(newConfig, null);