Ç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