Android Çoklu Dil Yapısı (Multi Language)

Merhaba arkadaşlar bu dersimizde android de çoklu dil yapısını anlatacağım. Günümüzde çoğu uygulama birden fazla dil seçeneği ile piyasaya çıkıyor. Bizde geliştireceğimiz uygulamalarımızda birden fazla dil seçeneği yapısına ihtiyaç duyabiliriz. Düşünüldüğü kadar zor bir iş değil aksine gayet kolay bir yapı.

mobilhanem multilanguage
mobilhanem multilanguage

Öncelikle nasıl yaptığımızı kısaca açıklayayım . Sonra kodları paylaşacağım.Bildiğiniz gibi strings.xml values klasörünün içinde bulunuyor.Bizde her dil için values klasörleri oluşturuyoruz. Mesala ingilizce için values-en,almanca için values-de şeklinde.

android values
android values

Her bir values klasörünün içinde strings.xml ler oluşturuyoruz.Burda dikkat etmemiz gereken values klasörlerinden biri ek almayacak yani values olarak kalacak.Bu default diliniz olsun. Bizim uygulamada default dil türkçe.Bu her hangi bir sorun durumunda default dilin yüklenmesi için gereklidir.

Sonra uygulama içindeki bütün string değerlerini strings.xml dosyasından çekiyoruz. Aslında mantık olarak hepsi bu kadar. Uygulamanın kaynak dosyasını indirip inceleyerek daha iyi bir şekilde anlayacaksınız.Uygulama üzerinde ufak açıklamalarda bulundum.

[wpdm_file id=8]
import java.util.Locale;

import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.Toast;
import android.app.Activity;
import android.content.res.Configuration;

public class MainActivity extends Activity {
	ImageButton b1,b2,b3;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		Locale locale = Locale.getDefault(); // Sayfayı yüklemeden önce default locale alıyoruz ve sayfayı ona göre yüklüyoruz.
		Locale.setDefault(locale);
		Configuration config = new Configuration();
		config.locale = locale;
		getBaseContext().getResources().updateConfiguration(config,
		      getBaseContext().getResources().getDisplayMetrics());
		
		setContentView(R.layout.activity_main);
		
		
		
		b1 = (ImageButton) findViewById(R.id.imageButton1);  //İngilizce Buton
		b2 = (ImageButton) findViewById(R.id.imageButton2);  //Türkçe Buton
		b3 = (ImageButton) findViewById(R.id.imageButton3);  //Almanca Buton
		  
		b1.setOnClickListener(new View.OnClickListener() { 
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub

				Locale locale = new Locale("en");  //locale en yaptık. Artık değişkenler values-en paketinden alınacak
				Locale.setDefault(locale);
				Configuration config = new Configuration();
				config.locale = locale;
				getBaseContext().getResources().updateConfiguration(config,
				      getBaseContext().getResources().getDisplayMetrics());
				finish();//mevcut acivity i bitir.
				startActivity(getIntent());//activity i baştan yükle
				Toast.makeText(getApplicationContext(), R.string.dil_degistir, Toast.LENGTH_LONG).show();
			}
		});
		
		b2.setOnClickListener(new View.OnClickListener() {
					
			@Override
			public void onClick(View v) {

				// TODO Auto-generated method stub
				Locale locale = new Locale(""); //locale i default locale yani türkçe yaptık. Artık değişkenler values paketinden alınacak
				Locale.setDefault(locale);
				Configuration config = new Configuration();
				config.locale = locale;
				getBaseContext().getResources().updateConfiguration(config,
				      getBaseContext().getResources().getDisplayMetrics());
				finish();//mevcut acivity i bitir.
				startActivity(getIntent());//activity i baştan yükle
				Toast.makeText(getApplicationContext(), R.string.dil_degistir, Toast.LENGTH_LONG).show();

			}
		});

		b3.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Locale locale = new Locale("de");  //locale de yaptık. Artık değişkenler values-de paketinden alınacak
				Locale.setDefault(locale);
				Configuration config = new Configuration();
				config.locale = locale;
				getBaseContext().getResources().updateConfiguration(config,
				      getBaseContext().getResources().getDisplayMetrics());
				finish();//mevcut acivity i bitir.
				startActivity(getIntent());//activity i baştan yükle
				Toast.makeText(getApplicationContext(), R.string.dil_degistir, Toast.LENGTH_LONG).show();

			}
		});

		
	}
	
	

}

Bizim uygulamamızda ilk dili telefonun locale ayarına göre alıyoruz.Ben detaylı bir uygulama yazacak olsam kullanıcı bir defa dil seçtiğinde bunu database kaydeder ve uygulama açıldığında kullanıcının seçtiği dili yüklerdim . Bu uygulamada gerek duymadım.

Bu derste anlatacaklarım bu kadar. Aklınıza takılan her türlü soruyu sorabilirsiniz elimden geldiğince cevap vermeye çalışıyorum. Bir sonraki derste görüşmek dileğiyle kendinize iyi bakın.

15

Taha Kırca

iOS & Android & Apple Watch Developer, Mobilhanem.com yazarı, Karadeniz Uşağu, Ordu Sevdalısı

25 Yorum

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?