Çoğumuz projelerimizde birden fazla dil desteği sağlıyoruz. Bunun için herkes kendisine göre bir yöntem geliştirmiş bulunmakta. Ben genelde Amerikayı yeniden keşfetme taraftarı değilim eğer kütüphane gerçekten istendiği gibi iş yapıyorsa :)
Sizelere bahsedeceğim kütüphane "Android-LocalizationActivity" projenizde istediğiniz kadar dil desteği vermenizi sağlamaktadır.
Ben kendimde nasıl kullanmışsam size öyle bir BaseActivity hazırladım ve aşağıdaki koddan BaseActivitye erişebilirsiniz.
Fakat öncelikle main/res içerisinde hangi dili kullanmak istiyorsanız ona uygun klasörü oluşturmanız gerekmektedir.
Klasör oluştururken kullandığımız isimleri aşağıdaki linkten seçebilirsiniz. Ben bu listedekileri kullanmaktayım.
https://github.com/barisatalay/AndroidLocalizationExample/blob/master/tools/LanguageSource.json
Örneğin almanca için bir dil klasörü oluşturacaksak adı "values-de" olmalıdır ve klasörün içerisinde "strings.xml" dosyası olmalıdır.
Projeyi Github içerisinede yüklüyorum isteyenler Google Play üzerinden uygulamanın demosuna bakabilirler ve githubdan örnek projeyi inceleyebilirler.
Demo: https://play.google.com/store/apps/details?id=com.atalay.androidlocalizationexample
Github: https://github.com/barisatalay/AndroidLocalizationExample
İyi çalışmalar dilerim.
Gradle eklenmesi gereken: compile 'com.akexorcist:localizationactivity:1.1.2'
public class BaseActivity extends AppCompatActivity {
private LocalizationDelegate localizationDelegate = new LocalizationDelegate(this);
private String activeLangCode = "";
@Override
public void onCreate(Bundle savedInstanceState) {
localizationDelegate.onCreate(savedInstanceState);
super.onCreate(savedInstanceState);
//Aktif olan dil kodunu alıyoruz.
activeLangCode = (PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext())).getString(getString(R.string.pref_general_language),"en");
setLanguage(activeLangCode);
}
@Override
public void onResume() {
super.onResume();
localizationDelegate.onResume();
}
/*
* Kütüphaneye aktif olan dil kodunu gönderiyoruz ve
* kütüphane uygulamamızın aktif olan Activitysini yeniden oluşturuyor
* bu sayede string resourceler gerekli dilden çekiliyor.
*/
public final void setLanguage(String language) {
localizationDelegate.setLanguage(language);
}
public final void setLanguage(Locale locale) {
localizationDelegate.setLanguage(locale);
}
public final void setDefaultLanguage(String language) {
localizationDelegate.setDefaultLanguage(language);
}
public final void setDefaultLanguage(Locale locale) {
localizationDelegate.setDefaultLanguage(locale);
}
public final String getLanguage() {
return localizationDelegate.getLanguage();
}
public final Locale getLocale() {
return localizationDelegate.getLocale();
}
}

Hiç yorum yok:
Yorum Gönder