Unity Eğitim
Dersler
Forum Sınav Merkezi Premium 💎
C# Dersleri

Unity Yerelleştirme: Türkçe ve Arapça Font & RTL Detayları

Paylaşan: Unity Eğitim 14 October 2025 9 dakika okuma 134 görüntülenme

Günümüz oyun pazarında küresel erişim, oyun geliştiricileri için hayati öneme sahiptir. Oyuncuların kendi dillerinde deneyim yaşaması, oyunun benimsenmesini ve başarısını doğrudan etkiler. Unity'nin güçlü yerelleştirme (localization) paketi, bu süreci büyük ölçüde kolaylaştırsa da, özellikle Türkçe ve Arapça gibi dillere özel font ve sağdan sola (RTL) metin yönlendirme gereksinimleri, dikkatli bir yaklaşım gerektirir. Bu makalede, Unity projelerinizde Türkçe ve Arapça diller için Unity Yerelleştirme Font yönetimi ve RTL desteğinin inceliklerini detaylı bir şekilde ele alacağız.

Unity Yerelleştirme ve Fontların Önemi

Unity Localization paketi, metinler, görseller, sesler ve diğer varlıklar dahil olmak üzere tüm oyun içeriğinizi farklı diller ve bölgeler için yönetmenizi sağlar. Ancak, dil desteğinin en temel bileşenlerinden biri olan fontlar, metinlerin doğru ve estetik bir şekilde görüntülenmesi için kritik rol oynar. Özellikle standart Latin alfabesi dışındaki karakter setlerine sahip dillerde, doğru font seçimi ve yapılandırması büyük önem taşır.

Türkçe İçin Font Gereksinimleri

Türkçe, Latin alfabesini kullansa da, kendine özgü karakterlere sahiptir: 'ç, ğ, ı, ö, ş, ü'. Bu karakterlerin font dosyalarında eksiksiz olarak bulunması, metinlerin doğru görüntülenmesi için zorunludur. Eğer kullanılan font bu karakterleri içermiyorsa, genellikle boş kutular veya yanlış karakterler (mozaikleşme) görünür, bu da oyuncu deneyimini olumsuz etkiler. Unity Yerelleştirme Font seçiminde, bu karakterleri tam destekleyen bir font kullanmak ilk adımdır.

Arapça İçin Font ve RTL Gereksinimleri

Arapça, çok daha karmaşık bir dil yapısına sahiptir. Sağdan sola (Right-to-Left - RTL) yazılmasının yanı sıra, karakterlerin bitişik yazılması (ligatures), aynı harfin kelime içindeki konumuna göre farklı şekiller alması (contextual forms) ve diyakritik işaretler (vowel marks) gibi özellikler barındırır. Bu, sadece doğru bir fonta sahip olmanın yeterli olmadığı anlamına gelir; aynı zamanda metin işleme motorunun da bu kuralları desteklemesi gerekir. Unity'de bu karmaşıklığı yönetmek için `TextMeshPro` vazgeçilmez bir araçtır.

TextMeshPro ile Font Yönetimi

Unity'nin varsayılan UI metin bileşeni yerine `TextMeshPro` kullanmak, yerelleştirme süreçlerinde büyük avantajlar sağlar. `TextMeshPro`, gelişmiş metin işleme yetenekleri sayesinde farklı dillerin karmaşık font gereksinimlerini daha iyi karşılar. Özellikle RTL diller için gerekli olan metin şekillendirme (text shaping) ve ligatür desteğini sunar.

Font Asset Oluşturma

`TextMeshPro` ile font kullanmak için, font dosyasından (örn. `.ttf`, `.otf`) bir `TextMeshPro Font Asset` oluşturmanız gerekir. Bu varlık, fontun karakter gliflerini bir atlas dokusuna paketler ve metin işleme için gerekli verileri içerir.

// Örnek: TextMeshPro metin bileşenine ulaşma
using TMPro;

public class LocalizationManager : MonoBehaviour
{
    public TMP_Text localizedText;
    public TMP_FontAsset turkishFont;
    public TMP_FontAsset arabicFont;

    public void SetLanguage(string localeCode)
    {
        switch (localeCode)
        {
            case "tr":
                localizedText.font = turkishFont;
                break;
            case "ar":
                localizedText.font = arabicFont;
                break;
            default:
                // Varsayılan font
                break;
        }
    }
}

Font Asset oluştururken, desteklemek istediğiniz dillerin tüm karakterlerini dahil ettiğinizden emin olmalısınız. `TextMeshPro Font Asset Creator`'da, `Character Set` seçeneğini kullanarak belirli Unicode aralıklarını veya özel karakter listelerini belirtebilirsiniz. Türkçe için `ASCII + Extended ASCII` genellikle yeterli olurken, Arapça için `Arabic` seçeneği veya belirli Unicode aralıklarının (örn. U+0600-U+06FF) seçilmesi önemlidir.

RTL (Sağdan Sola) Metin Desteği

Arapça gibi RTL dillerde metinlerin doğru görüntülenmesi, sadece karakterlerin değil, aynı zamanda metin akışının da sağdan sola olması demektir. Unity'nin `TextMeshPro` bileşeni, bu özelliği doğrudan destekler. Bir `TextMeshPro` metin bileşeninin `Text Info` bölümündeki `Enable RTL Editor` seçeneğini işaretleyerek, metin girdisini sağdan sola doğru yazabilirsiniz. Ancak asıl otomatik RTL desteği, Unity Localization paketi ile birlikte gelir.

Unity Localization ve RTL Entegrasyonu

Unity Localization paketi, projenizin mevcut `Locale`'ini (yerel ayar) algıladığında, `TextMeshPro` metin bileşenleri bu `Locale`'e göre otomatik olarak RTL moduna geçebilir. Arapça bir `Locale` (örn. `ar-SA`) seçildiğinde, `TextMeshPro` metinleri otomatik olarak sağdan sola hizalanır ve gerekli metin şekillendirme kuralları uygulanır. Bu, geliştiricinin manuel olarak her metin bileşenini ayarlamasına gerek kalmamasını sağlar. Unity Yerelleştirme Font ve RTL entegrasyonu, bu otomasyon sayesinde daha sorunsuz hale gelir.

UI Elemanlarının Yansıtılması (Mirroring)

RTL dillerde sadece metinler değil, bazen UI elemanlarının da yansıtılması gerekebilir. Örneğin, bir geri tuşu sol tarafta ise, RTL bir dilde sağ tarafta olması daha doğal bir kullanıcı deneyimi sunar. Unity'nin `RectTransform` bileşeni ve `Horizontal Layout Group` gibi UI elemanları, RTL desteği için bazı ayarlamalar sunar:

  • `RectTransform` Anchors ve Pivots: UI elemanlarının konumlarını ve boyutlarını tanımlarken, RTL diller için `Right` (sağ) tarafı referans almak gerekebilir.
  • `Horizontal Layout Group`: Bu bileşenin `Child Alignment` ayarı ve `RightToLeft` seçeneği, içindeki elemanların sıralamasını otomatik olarak tersine çevirebilir.
  • `Localize` Bileşeni: Unity Localization paketi ile gelen `Localize` bileşeni, metinlerin yanı sıra görselleri ve hatta `RectTransform` değerlerini de `Locale`'e göre değiştirebilir, bu da UI yansıtma için kullanılabilir.

Pratik İpuçları

1. Kapsamlı Font Asset Oluşturma

Tüm desteklenen dillerdeki karakterleri içeren tek bir büyük Font Asset oluşturmak yerine, dil gruplarına özel Font Asset'ler oluşturun. Örneğin, bir 'Latin Genişletilmiş' Font Asset (Türkçe dahil) ve ayrı bir 'Arapça' Font Asset. `TextMeshPro Font Asset Creator`'da `Character Set` kısmında, `Custom Characters` seçeneğini kullanarak kendi karakter listenizi (bir metin dosyasından) veya `Unicode Range` seçeneğiyle belirli Unicode aralıklarını (örn. Türkçe için U+0000-U+00FF, U+0100-U+017F; Arapça için U+0600-U+06FF) belirleyin. Bu, Font Asset boyutunu optimize ederken tam karakter desteği sağlar. Unity Yerelleştirme Font varlıklarınızın verimli olması önemlidir.

2. Fallback Font Asset'leri Kullanın

Ana Font Asset'inizde bulunmayan karakterler için `Fallback Font Asset`'leri kullanın. `TextMeshPro` metin bileşeninin veya Font Asset'in `Fallback Font Assets` listesine, eksik karakterleri içeren başka Font Asset'leri ekleyebilirsiniz. Bu, özellikle nadir kullanılan semboller veya emoji gibi durumlarda çok kullanışlıdır ve her fonta tüm karakter setlerini dahil etme zorunluluğunu ortadan kaldırır. Birden fazla Unity Yerelleştirme Font varlığını bir arada kullanabilirsiniz.

3. UI Tasarımında RTL'yi Göz Önünde Bulundurun

UI elemanlarını tasarlarken, gelecekteki RTL desteğini göz önünde bulundurun. Özellikle ikonlar, ilerleme çubukları veya menü sıralamaları gibi yönlendirme içeren öğelerin RTL dillerde nasıl görüneceğini düşünün. Unity'nin `Layout Group` bileşenlerini kullanırken, `Control Child Size` ve `Child Alignment` gibi ayarların RTL'ye göre nasıl davranacağını test edin. Gerekirse, RTL diller için özel UI prefab'leri veya `Localize` bileşeni ile `RectTransform` değerlerini değiştiren `Table`'lar kullanın.

Yaygın Hatalar ve Çözümleri

Hata 1: Eksik Karakterler (Boş Kutular)

Sorun: Metinlerde bazı karakterler yerine boş kutular veya soru işaretleri görünmesi. Bu, özellikle Türkçe 'ğ, ş, ı' veya Arapça harflerde sıkça karşılaşılan bir durumdur.

Çözüm: `TextMeshPro Font Asset Creator`'ı tekrar açın. Kullandığınız font dosyasının tüm gerekli karakterleri içerdiğinden emin olun. `Character Set` ayarlarından `Custom Characters` veya `Unicode Range` seçerek, eksik karakterlerin Unicode aralıklarını (örn. Türkçe için U+011F, U+015F, U+0131 gibi tek tek karakterler veya genişletilmiş Latin aralıkları; Arapça için U+0600-U+06FF) ekleyin ve Font Asset'i yeniden oluşturun. Ayrıca, `Fallback Font Asset` listesine kapsamlı bir font eklemeyi unutmayın.

Hata 2: Arapça Metinlerin Yanlış Yönlendirilmesi veya Şekillendirilmemesi

Sorun: Arapça metinlerin soldan sağa yazılması, harflerin bitişik yazılmaması veya diyakritik işaretlerin doğru konumlanmaması.

Çözüm: Öncelikle, Unity Localization paketinin doğru Arapça `Locale`'i (`ar-SA`, `ar-EG` vb.) aktif ettiğinden emin olun. `TextMeshPro` metin bileşeninin `Text Info` bölümündeki `Enable RTL Editor` seçeneğinin işaretli olup olmadığını kontrol edin (bu genellikle Localization paketi tarafından otomatik yönetilir, ancak manuel kontrol faydalıdır). Kullanılan Font Asset'in Arapça karakterleri ve ligatürleri desteklediğinden emin olun. Bazı fontlar tüm Arapça şekillendirmeyi içermeyebilir. Gerekirse, daha kapsamlı bir Arapça font (örn. Noto Sans Arabic) kullanın.

Hata 3: UI Elemanlarının RTL'ye Uyum Sağlamaması

Sorun: RTL dillerde menülerin veya butonların mantıksal sıralamasının bozulması (örn. "ileri" butonu solda kalması).

Çözüm: `Horizontal Layout Group` kullanıyorsanız, `Child Alignment` ve `RightToLeft` özelliklerini deneyin. `RectTransform`'larınızın `Anchor` ayarlarını RTL diller için sağa dayalı olacak şekilde düzenleyin. Daha karmaşık senaryolar için, Unity Localization paketi ile gelen `Localize` bileşenini kullanarak `RectTransform` değerlerini `Locale` bazında değiştirebilirsiniz. Bu, UI'nin dil seçimine göre dinamik olarak kendini ayarlamasını sağlar.

Performans ve Optimizasyon Notları

Unity Yerelleştirme Font yönetimi, performans açısından da dikkat gerektirir:

  • Font Asset Boyutu: `TextMeshPro Font Asset`'leri, içerdikleri karakter sayısına ve atlas dokusunun boyutuna göre diskte ve bellekte yer kaplar. Sadece gerçekten ihtiyacınız olan karakterleri dahil ederek dosya boyutunu küçültün.
  • Dinamik Font Yükleme: Eğer çok sayıda dile destek veriyorsanız ve tüm fontları aynı anda bellekte tutmak istemiyorsanız, Unity'nin `Addressables` sistemi ile fontları sadece gerektiğinde yükleyebilirsiniz.
  • Ortak Fontlar: Mümkünse, farklı diller arasında ortak karakter setlerini (örn. sayılar, noktalama işaretleri) tek bir Font Asset'te toplayarak bellek kullanımını azaltın.

Unity'de Türkçe ve Arapça gibi özel gereksinimleri olan diller için yerelleştirme, doğru araçlar ve dikkatli bir planlama ile başarıyla uygulanabilir. `TextMeshPro`'nun gücü ve Unity Localization paketinin esnekliği sayesinde, oyuncularınıza eksiksiz ve keyifli bir deneyim sunabilirsiniz. Unutmayın, iyi bir Unity Yerelleştirme Font stratejisi, küresel başarının anahtarlarından biridir.

🧠 Ders Sonu Değerlendirme Testi

Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.

🔥 +50 XP Ödül
🔒

Sınava Katılmak İçin Giriş Yapın

Bu ders sonu testini çözebilmek, bilginizi test edip **+50 XP** kazanmak ve **Sınav Şampiyonu** rozetinin kilidini açmak için üye girişi yapmalısınız.

Yorumlar (0)

Yorum yazabilmek ve derslere katkıda bulunabilmek için giriş yapmalısınız.

İlk yorumu siz yapın!