2011-04-01 21 views
11

Çeşitli dilde yerelleştirilmiş olan bu Android uygulamasına sahibim. Cihazın bulunduğu yer için uygun dize varsa, uygulama otomatik olarak görüntüler. Çok uzak çok iyi.Bir Android uygulamasının varsayılan yerel ayarı nasıl geri yüklenir

Daha sonra, uygulamanın kullanıcılarının sağladığım dillerden birine geçmesine izin vermek istiyorum. Bunu varsayılan yerel ayarı geçersiz kılarak yapabilirim. Burada da sorun yok.

Buradaki soru: Dil listesinde, kullanıcıların varsayılan, otomatik yerel ayarları geri yüklemesine izin verecek bir "varsayılan" seçenek sunmamın bir yolu var mı? Aşağıdaki senaryoyu düşünün:
1. Aygıtın yerel ayarı Almanca olarak ayarlanmıştır. App Almanca her şeyi görüntüler.
2. Kullanıcı, uygulamanın Fransızca dilinde olmasını istiyor, böylece uygulamanın içinden dil değiştiriyor ve uygulama da Fransızca olarak sonuçlanıyor.
3. Aynı kullanıcı cihazın bulunduğu yeri İspanyolca olarak değiştirir. App hala Fransızca.
4. "Varsayılan" ayarını seçerler. Uygulama İspanyolca olarak değişir ve yerel ayar değiştirildiğinde değişmeye devam eder.

Eğer bu otomatik olarak gerçekleştirilemiyorsa, o zaman "varsayılan" seçeneğim seçiliyse, uygulamamı ayarlayabilmem için cihaz genelinde yerel ayarları almamın bir yolu var mı?

cevap

16

Bu sorunu, uygulamanın ilk çalıştırılmasında varolan ayarı saklayarak çözdüm (herhangi bir değişiklik varsayılan yerel ayarda yapılmadan önce). Sadece benim app çalışır ilk kez çalışır bir blokta, arayacağım:

Daha sonra
m_preferences.edit().putString(
         MyConstants.PREFERENCE_SYSTEM_LANGUAGE, 
         getResources().getConfiguration().locale.getLanguage() 
         ).commit(); 

, ihtiyacım olduğunda geri almak için:

languageToLoad = m_preferences.getString(
         MyConstants.PREFERENCE_SYSTEM_LANGUAGE, 
         MyConstants.LANGUAGE_DEFAULT); 

dilini değiştirirken, Kurtarmam başka tercih ve güncellemeleri ekrana taşıyın.

Düzenleme: Biraz daha pake ettikten sonra, sistem ayarını buldum. Yukarıdaki kodu yerine bunu kullanmaya başladım.

Resources.getSystem().getConfiguration().locale.getLanguage(); 
+2

yukarıdaki kısım benim uygulamanın dil kaydedildikten sonra cihazın yerel hala değiştirebilir beri gerçekten benim için bunu yapmaz. İkinci kısım da tam olarak aradığım şey gibi görünüyor. Teşekkürler! – Goldsmith

2
Locale defaultLocale = Locale.getDefault(); 

Düzenleme: Üzgünüm, sadece paranın üstünü etkilemek için varsayılan geçersiz kılma ediyoruz beri bu aslında, sorunuza cevap vermez fark etti.

İlgili konular