Android Studio'da Dizeler ve Metin Kaynaklarıyla Nasıl Çalışılır
Android'de dizeler kaynaklarda (strings.xml) saklanır; yerelleştirmeyi, test etmeyi ve bakımı kolaylaştırmak için bunları sabit kodlama yerine kullanın. Bu içerikte, yerel ayarlar oluşturma, biçimlendirme ve test etmeye yönelik somut teknikler ele alınmaktadır.
strings.xml Nedir ve Neden Kullanılmalıdır
strings.xml (res/values/strings.xml), uygulamanın tüm metinlerinin tek bir yerde depolandığı dosyadır. Avantajları şunlardır:
- metinlerin merkezi yönetimi;
- basit yerelleştirme: values-
klasörleri oluşturursunuz; - düzenlerde ve kodda sabit kodlamayı önleme.
Bir dize örneği:
<string name="welcome_message">Hoş geldiniz, %s!</string>
Kodda getString veya kaynak referanslarını kullanın: textView.setText(R.string.app_name) veya Kotlin'de: text = getString(R.string.welcome_message, userName).
Ekran metinlerini dialog_, settings_, error_ gibi ön eklerle gruplayın — bu, çevirileri bulmayı kolaylaştırır.
Dizeleri Doğru Şekilde Saklama ve Biçimlendirme
- Birleştirme yerine yer tutucular kullanın:
val text = getString(R.string.welcome_message, userName)
- Kesme işaretlerini çift kesme işaretiyle kaçış karakteri olarak yazın: Don''t -> "Don't".
- Desteklenen HTML etiketleri: , , . TextView'de görüntülemek için Html.fromHtml() veya HtmlCompat kullanın.
- Sayılar ve para birimleri için yerel ayarla uyumsuz şablonlar yerine getString veya NumberFormat aracılığıyla biçimlendirme yapın:
val price = getString(R.string.price, priceValue) // "Fiyat: %,.2f ₺"
- Compose'da stringResource(R.string.key) kullanın.
Dize Biçimlerinin Karşılaştırılması
Dize Biçimlerinin Karşılaştırılması
| Biçim | Ne Zaman Kullanılır | Örnek |
|---|---|---|
| Basit dize | Statik metin | <string name="label">Ad</string> |
| Biçimlendirilmiş | Dinamik veriler | "Merhaba, %s!" |
| Plurals | Sayaçlar | <plurals name="items">%d ürün</plurals> |
Yerelleştirme ve Çoğul İfadeler (plurals)
res/values-ru/, res/values-en/ vb. klasörler oluşturun. Android, cihaz diline göre uygun klasörü otomatik olarak seçer; çeviri yoksa varsayılan values döndürülür.
Plurals örneği (Türkçe):
<plurals name="items_count">
<item quantity="one">%d ürün</item>
<item quantity="other">%d ürün</item>
</plurals>
Kodda:
val text = resources.getQuantityString(R.plurals.items_count, count, count)
Dışarıdan gelen kaynaklarda kelime sırasını ve boşlukları saklamayın: Kodda birleştirme yoluyla cümleler oluşturmak çevirilerde dilbilgisini bozar.
Projeye Entegrasyon ve Kontrol Araçları
- Android Studio'da: Analyze > Inspect Code — sabit kodlanmış dizeleri bulur.
- Çevirileri dışa aktarma: Tools > Export Translations.
- Yerel ayar testi: Emülatörde dili değiştirin (Settings > System > Languages) veya geçiş yapmak için adb kullanın.
- RTL: Arapça ve İbranice için start/end öğelerini left/right yerine kullanın ve layoutDirection'ı test edin.
Sık Yapılan Hatalar
- Düzenlerde sabit kodlama (android:text="...") — Lint bunu sorun olarak görür.
- İsimlerin ve ifadelerin birleştirilmesi — diğer dillerde kelime sırasını bozar.
- Sayaçlar için plurals eksikliği — Türkçe ve diğer dillerde hatalı biçimler.
- Kaçış yapılmamış kesme işaretleri — kaynak ayrıştırma hatası.
SSS
- Yeni bir dil nasıl eklenir?
res/values-/strings.xml oluşturun, çevirileri doldurun; Android otomatik olarak seçer. - Bir dize çevrilmemişse ne olur?
res/values/ içindeki varsayılan strings.xml kullanılır. - Plural biçimleri nasıl test edilir?
Farklı count değerleriyle resources.getQuantityString çağırın veya kontrol için çevirmenler/sözde yerel ayarlar kullanın.
Uygulama metinlerinin esnek, çeviriler için doğru ve bakım açısından kolay olması için bu uygulamaları kullanın.