Kullanıcı arayüzündeki metinsel ifadeleri kodunuzdan ayırmanız ve harici bir dosya içinde tutmanız her zaman faydalı olacaktır. Android bu işlemi resource klasörünü kullanarak kolayca halletmektedir.
Uygulamanızı oluştururken Android SDK araçlarını kullanıyorsanız, araçlar projenizin en tepesinde bir res/ klasörü oluşturur. Res klasörü birçok değişik kaynak (resource) türüne göre alt klasörler barındırır. Bunun yanında res/values/strings.xml gibi varsayılan olarak oluşturulan string değerlerini tutan dosyalar bulunur.
Dile Uygun Dizinleri Oluşturmak ve String Dosyaları
Daha çok dile destek vermek için res klasörünün altına fazladan values klasörü oluşturup klasör isminin yanına - (tire) ile birlikte ülkelerin ISO dil kodlarını eklemeniz gereklidir. Örneğin uygulamada Rusça dil desteği vermek için oluşturulması gereken klasör values-ru şeklinde olacaktır. Android, kullanıcının dil ayarlarına göre hangisini kullanacağını belirleyecektir.
Desteklemek istediğiniz dillerle ilgili çalışma yapmak istediğinizde oluşturmanız gereken klasör yapısı aşağıdadır.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">My Application</string>
<string name="hello_world">Hello World!</string>
</resources>
İspanyolca için /values-es/string.xml dosyası:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">Mi Aplicación</string>
<string name="hello_world">Hola Mundo!</string>
</resources>
Fransızca için /values-fr/strings.xml dosyası:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">Mon Application</string>
<string name="hello_world">Bonjour le monde !</string>
</resources>
NOT: Bu "-fr", "-es" gibi son eklere eleyici (qualifier) denir. Bu dil eleyicileri her türlü kaynak (resource) tipinde kullanabilirsiniz. Örneğin drawable dizininde de kullanabilirsiniz ve böylece farklı dillere göre farklı görseller gösterebilirsiniz.
String Kaynaklarını Kullanmak
String kaynaklarınıza Java kaynak kodunuzda veya diğer XML dosyalarınızda referans gösterebilmek için onun ismini kullanabilirsiniz. İsmi <string> elementini tanımlarken kullandığınız name özniteliğinde verirsiniz.
Kaynak kodu tarafında R.string.<string_name> söz dizimini kullanarak string kaynağına referans verebilirsiniz. String kaynakları alabileceğiniz farklı metotlar aşağıda gösterilmiştir:
// Uygulamanı kaynaklarından (Resources [0]) yararlanalım
String hello = getResources().getString(R.string.hello_world);
//veya string isteyen bir metotda doğrudan string kaynağımızı verelim
TextView textView = new TextView(this);
textView.setText(R.string.hello_world);
Diğer XML dosyalarındayken string kaynağınızı referans göstermek için @string/<string_name> söz dizimini kullanabilirsiniz. Unutmayınız ki ancak string kabul eden öznitelikler için böyle bir referans gösterebilirsiniz.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
Bu sayfadaki parçalar Android Open Source Project kapsamında oluşturulmuş ve paylaşılmış içeriğin küçük değişiklikler yapılmış hâlidir ve Creative Commons 2.5 Attribution License'ta belirlenen koşullara göre kullanılmıştır.
Bu eğitim içeriğinin orijinal hâline buradan ulaşabilirsiniz: Supporting Different Languages