Android Multi Language | Çoklu Dil Desteği Ekleme

Android, mobil işletim sistemleri alanında kendinden uzun yıllardır söz ettiren ve milyonları aşan bir kullanıcı yelpazesine sahip açık kaynak kodlu işletim sistemidir. Kullanıcı sayısı her geçen gün artmakta ve Android tabanlı birçok cihaz piyasaya sürülmektedir. Eğer uygulamanızın global anlamda büyük kitlelere ulaşmasını hedefliyorsanız, en önemli konu olan lokalizasyon kavramını iyi anlamalı ve uygulamanıza entegre etmeniz gerekmektedir. Lokalizasyon işlemini gerçekleştirirken sadece label olarak textlerin değil ayrıca uygulamada görüntülenen görsellerin, ses dosyalarının ve tarih birimlerinin de bu işlemden geçmesi gerekmektedir. Ancak bu makalemizde sadece text bazında farklı dillerde uygulamamızın nasıl görüneceği bilgisini sizlerle paylaşacağız. 

Yapılacak olan örnek uygulamada Türkçe, İngilizce ve Arapça dilinde ekranların nasıl görüntüleneceği anlatılacaktır.

1. Text Lokalizasyonu Nasıl Çalışır

Android işletim sistemi, uygulamalarda default olarak İngilizceyi ana dil olarak kabul eder ve uygulama içeriklerini res ⇒ values ⇒ strings.xml'den yükler. Uygulamanıza ait yeni bir dil tanımlamanız gerektiğinde tanımlayacağınız dile ait ISO kodunu values dizinin ardına eklemeniz gerekmektedir. Örneğin uygulamamıza Türkçe ve Arapça dil desteği eklemeyi planladığımız için Türkçe için values-tr, Arapça dili içinse values-ar dizinlerini oluşturup içerisine strings.xml dosyasını yerleştirmemiz gerekmektedir.

Lokalizasyon yapısı ise aşağıdaki adımlara göre çalışmaktadır;

  • Kullanıcı cihaz dilini Ayarlar ⇒ Dil ve Giriş seçeneğinden değiştirdiğinde, Android işletim sistemi uygulamadaki uygun dil kaynaklarını kontrol eder.(Farzedelim kullanıcı Arapça'yı seçiyor)
  • Uygulama seçilen dili destekliyorsa, Android projede bulunan values-(ISO Dil Kodu) klasöründeki strings.xml dosyasına bakar. (Arapça için values-ar/string.xml'de bulunan içerikleri yükler)
  • Eğer Arapça dil dosyasına eksik olan herhangi bir değer varsa values/strings.xml dosyası içerisinde bulunan içeriği gösterir.

Bundan dolayı, values/stings.xml dosyasının içeriği tüm text değerlerini içermesi gerekmektedir. Aksi takdirde, uygulamanın hata alacaktır.

Uygulamanızda dikkat etmeniz gereken en önemli konulardan birisi static textlerin tanımlamaları her zaman strings.xml dosyası içerisinde olmalıdır.
<string name="enter_email">Enter email address</string>
Tanımlanan textleri uygulamamıza ait layoutlarda aşağıdaki şekilde çağırabiliriz.
<TextView ...   android:text="@string/enter_email"  />

2. Örnek Proje Oluşturalım

Android Studio'da File ⇒ New ⇒ New Project seçeneğine tıklayıp Empty Activity ile yeni bir proje oluşturalım.

Sonrasında values dizini altında strings.xml dosyası içerisine aşağıdaki tanımlamaları gerçekleştirelim. Bizde default olarak İngilizceyi farz edip ona göre stringleri tanımlayalım.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Sample Localization App</string>
    <string name="action_settings">Settings</string>
    <string name="welcome">Welcome!</string>
    <string name="email">Email Address</string>
    <string name="password">Password</string>
    <string name="login">Login</string>
    <string name="signup">Don\'t have account? Sign Up</string>
</resources>
Bu işlemden sonra Türkçe ve Arapça dil desteği için values-ar ve values-tr dizinleri oluşturup içerisine strings.xml dosyalarını koymamız gerekmektedir. Bu işlemleri gerçekleştirdikten sonra proje diziniz şu şekilde olacaktır.

 

Şimdi öncelikle Türkçe strings.xml dosyasına çeviri içeriklerini girelim.

Türkçe values-tr/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Örnek Lokalizasyon Uygulaması</string>
    <string name="action_settings">Ayarlar</string>
    <string name="welcome">Merhaba!</string>
    <string name="email">Email Adresi</string>
    <string name="password">Şifre</string>
    <string name="login">Giriş Yapın</string>
    <string name="signup">Herhangi bir hesabınız yokmu? Hesap Oluştur</string>
</resources>
Şimdi de Arapça dil desteği için values-ar/strings.xml dosyasına çeviri içeriklerini girelim.
Arapça values-ar/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">نموذج لتطبيق التعريب</string>
    <string name="action_settings">إعدادات</string>
    <string name="welcome">أهلا بك!</string>
    <string name="email">عنوان بريد الكتروني</string>
    <string name="password">كلمه السر</string>
    <string name="login">تسجيل الدخول</string>
    <string name="signup">ليس لديك حساب؟ سجل</string>
</resources>
Şimdi sırada uygulamamıza ait activity_login.xml sayfasına aşağıdaki kod parçalarını yapıştırmamızda. Login sayfamız basit bir email ve şifre arayüzüne sahip olacaktır.
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorAccent">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:gravity="center"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="40dp"
            android:text="@string/welcome"
            android:textColor="@color/colorWhite"
            android:textSize="45dp"
            android:textStyle="bold" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorWhite"
            android:orientation="vertical" >

            <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dp"
                android:background="@null"
                android:hint="@string/email"
                android:padding="5dp"
                android:singleLine="true"/>

            <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="@null"
                android:hint="@string/password"
                android:inputType="textPassword"
                android:padding="5dp" />
        </LinearLayout>

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="25dp"
            android:background="@color/colorPrimary"
            android:text="@string/login"
            android:textColor="@color/colorWhite"/>
    </LinearLayout>

    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/signup"
        android:layout_alignParentBottom="true"
        android:gravity="center_horizontal"
        android:layout_marginBottom="25dp"
        android:textColor="@color/colorWhite"/>

</RelativeLayout>
Şu anda Android Studio üzerinde layout kısmına kodlamanıza yapıştırmanızın ardından Design tabına geçtiğinizde aşağıdaki ekran görüntüsü ile karşılaşmanız gerekmektedir.

 

3. Uygulamanın Diğer Dillerini İnceleyelim

Uygulamanın diğer dilleri desteklediğini test etmek için izlenecek iki farklı yöntem bulunmaktadır. En basiti Android Studio'da design sayfasının üst kısmında desteklenen dillere ait selectbox listelenmektedir.

Burada Türkçe ve Arapça seçeneği listelenmektedir. Örnek olarak Türkçe dili seçildiğinde ekran görüntüsü aşağıdaki gibi olacaktır.

Böylelikle uygulamamıza Arapça ve Türkçe dil desteği eklendi. İstenirse daha farklı dil seçenekleri uygun ISO koduna ait klasörleme yapılarak oluşturulabilir.
comments powered by Disqus