String.xml ve Çoklu Dil Desteği

String.xml dosyasında uygulamamız içinde kullandığımız metinleri  saklarız.Bunun bize faydalarıysa şu şekilde özetlenebilir:

  • Uygulamamızın çoklu dil desteğinin sağlanması
  • Tekrarlanan bir başlık,içerik vb gibi metin içeren ifadelerin tekrar tekrar yazılmasındansa tek bir yerden çekmek ve metin içeriğini değiştireceğimiz zaman yine tek bir yerden değiştirmek

bize sağlanan en büyük 2 avantajdır.Gelin öncelikle basit bir şekilde String.xml’da nasıl metin tanımlayacağımızı ve bunu nasıl kullanacağımızı görelim.

 

strings.xml
 
<resources>
    <string name="erisimKeyi">Bu bir metin içeriğidir.</string>
</resources>

 

  • erisimKeyi dediğimiz yer bizim tasarım yaptığımız Layout’tan veya Java classından erişmek için kullancağımız key olacak.
  • Bu bir metin içeriğidir yazdığım kısımda key ile çağırdığımız değişkenin içerisinde bulunan metindir.

 

activity_main.xml
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/erisimKeyi" />

 

  • Tasarım yaptığımız Layout’tan metne erişmek istersek @string/ dedikten sonra key ismini girmemiz gerekiyor.Bu örnekte @string/erisimKeyi yazarak Bu bir metin içeriğidir metnini yazdırmış oluyoruz.

 

Eğer Java classından bu metine ulaşmak istersekte şöyle yapıyoruz :

MainActivity.class
 
       Resources res=getResources();
        String metin=res.getString(R.string.erisimKeyi);

 

  • Burada karşımıza Resources kavramı ortaya çıkar.Resources çok basit bir şekilde yaptığımız uygulamanın Android dosya kaynaklarına erişmesini sağlamak için kullanılan bir değişkendir.Burada da getResources() diyerek aslında String.xml dosyasına erişim sağlıyoruz.
  • getString fonksiyonuylada String.xml‘da tanımladığımız hangi metine erişmemiz gerektiğini belirtiyoruz.

 

Peki ya bir String dizimiz olsaydı onu nasıl tanımlayacaktık ve ona nasıl erişim sağlayacaktık?

 

String dizimizi yukarıdaki gibi String.xml’da tanımlayacağız.Ama biraz farklı olarak tabiki…

strings.xml
 
<resources>
    <string-array name="sehirler">
        <item>Denizli</item>
        <item>Elazığ</item>
        <item>İstanbul</item>
        <item>Antalya</item>
        <item>İzmir</item>
    </string-array>
</resources>

 

  • Dizimizi string-array olarak tanımlıyoruz ve dizimin isminide name kısmının içerisine yazıyoruz.
  • <item> isimli ögelerse dizimizin her bir elemanı oluyor.

 

MainActivity.class
 
        Resources res=getResources();
        String[] sehirler_dizisi=res.getStringArray(R.array.sehirler);

 

  • Yukarıda olduğu gibi öncelikle uygulamamızın Android dosya kaynaklarına erişmesi için getResources() yardımıyla yol açmamız gerekiyor.
  • Dizideki ögelere erişim sağlamak içinse önce elemanları String dizisine atmamız gerek.Bunuda getStringArray komutuyla yapıyoruz.Burada dikkat edilmesi gerekn nokta R.array kısmı.Yani dizi kısmına erişim sağlıyoruz.Eğer sadece String’e erişmek istesyedik R.string diyecektik ama diziye erişmek istediğimiz için R.array diyoruz.

 

Çoklu Dil Desteği Nedir ve Nasıl Eklenir?

 

String.xml’a metinlerimizi yazmamızın en önemli ikinci sebebi uygulamamıza çoklu dil desteğini eklemektir.Eğer kullanıcıların kendi dillerinde uygulamalar yaparsak farklı dil konuşan insanların uygulamamızı kullanma isteği daha çok olacaktır.Bu yüzden de uygulamalarımızı çoklu dil desteğine uyacak şekilde tasarlamalıyız.

Android cihazlarımız akıllı cihazlar oldukları için bulundukları bölge ve dillere göre uygulama dilini otomatik  olarak kendisi seçiyor. (Tabi yazılımcı uygulamayı kullanan kişilerin dillerine göre proje dosyalarını çevirmişse Android’de sizin dilinize uygun dosyaları çekip size uygun olanı gösteriyor)

Şimdi de bunu bir örnekle gösterelim ve nasıl yapacağımızı anlatalım.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Yukarıdaki iki resimde aslında iki text olurturmuşuzda belirli kriterlere göre hangisinin gösterileceğini yazmışız gibi.Ama aslında tek bir kod farklılığı bile bulunmuyor.Sadece çevirisini ekledik.Hadi bunu nasıl yaptığımızı gösterelim.

 

  • 1) strings.xml’a giriyoruz.
  • 2) Burada selam keyiyle ulaşacağımız türkçe değeri görüyoruz.(selam keyine ulaşınca bize Merhaba Dünya değerini veriyor)
  • 3) Çeviri eklemek için Open Editör‘ü açıyoruz.

 

  • 3) Dünya logosu var buna basarak ülkeleri göstermemiz gerekiyor.
  • 4) Buradaysa hangi dile çeviri ekleyeceğimizi seçiyoruz.

 

  • 6) Buradaysa çeviriyi ekliyoruz.(Ben ingilizce seçtim ve çevirisine Hello World yazmıştım)
  • 7) Dili seçtikten sonra (Ben United States English seçtiğim için values-en-US dosyası oluşturdu) dil dosyası oluşturuyor.

 

Başka hiçbir işlem yapmadan yukarıdaki gibi strings.xml değerine ulaşıyoruz ve cihazımız kendine uygun dil dosyasını seçip oradaki metni bize gösteriyor.

 

Kaynakça :