Projeler

Çok Dilli Mobil Uygulama

20+ dil desteğiyle cross-platform mobil uygulama. React Native + Expo, i18next, RTL desteği, NativeWind ve Zustand state yönetimi.

React NativeExpo 52i18nextNativeWindZustandFirebase

Noor, 20’den fazla dili destekleyen, sağdan sola (RTL) yazı yönünü doğal olarak ele alan cross-platform bir mobil uygulamadır. React Native ve Expo 52 managed workflow üzerine inşa edilen uygulama, tek kod tabanıyla iOS ve Android’e yayınlanır. Bu bireysel proje, uluslararası bir kullanıcı kitlesine yönelik gerçek anlamda yerelleştirilmiş bir mobil deneyim kurmanın teknik gerekliliklerini araştırmak amacıyla geliştirildi.

Problem

Küresel bir kullanıcı kitlesine hitap eden mobil uygulamalar artık yalnızca İngilizce veya birkaç büyük Batı diliyle yetinemez. Farklı coğrafyalardan kullanıcılar için gerçek bir yerelleştirme deneyimi sunmak teknik açıdan birden fazla zorluğu bir arada getirir: Arapça ve İbranice gibi RTL yazı yönüne sahip diller için tüm sayfa düzeninin yansıtılması gerekir, bu dillerin tipografisi özel font desteği ister. Çeviri dosyalarını yönetmek, yeni dil eklemek ve dil değişikliğini uygulama yeniden başlatılmadan gerçek zamanlı uygulamak önceden planlanmış bir mimari olmadan ilerleyen bir projede imkânsıza yaklaşır.

Çözüm

i18next kütüphanesi çeviri katmanının omurgasını oluşturdu. Dil dosyaları JSON formatında tutulur; yeni bir dil eklemek yalnızca bir çeviri dosyası ve dil listesi güncellemesi anlamına gelir. RTL düzeni Arapça ve İbranice gibi diller için otomatik olarak etkinleşir; RTL modunda Amiri fontu devreye girerek Arapça metinlerin doğru tipografik ağırlık ve okunabilirlikte görüntülenmesini sağlar. Dil değişikliği anında ve uygulama yeniden başlatılmadan tüm ekranlara yansır. Stil yönetimi için NativeWind, state yönetimi için Zustand seçildi; push bildirimleri Firebase Cloud Messaging üzerinden iletilir.

Öne Çıkan Özellikler

  • 20+ Dil Desteği: i18next ile JSON tabanlı merkezi çeviri sistemi; yeni dil ekleme için uygulama kodu değişmez, yalnızca yeni çeviri dosyası eklenir
  • RTL Desteği: Arapça ve İbranice için otomatik düzen yansıtma; Amiri font entegrasyonu ile doğru Arapça tipografisi
  • Anlık Dil Geçişi: Kullanıcı dil tercihini değiştirdiğinde tüm ekranlar, bileşenler ve sistem mesajları yeniden başlatma gerektirmeden güncellenir
  • NativeWind Stil Sistemi: Tailwind CSS sınıflarıyla React Native bileşenlerinin stillemesi; web geliştirme alışkanlıklarını native uygulamaya taşıyan tutarlı tasarım dili
  • Zustand State Yönetimi: Redux’un ağır yapısı olmadan sade, okunabilir global durum; boilerplate kod minimumdur
  • Firebase Arka Uç: Kimlik doğrulama, Firestore veri depolama ve FCM üzerinden iOS ve Android Push Bildirimi
  • Konum Servisleri: Kullanıcı konumuna dayalı içerik ve bildirim kişiselleştirme

Teknik Altyapı

Expo 52 managed workflow, platform özgü konfigürasyonlara zaman harcamak yerine uygulama mantığına odaklanmayı sağladı; native modül gerektiren özellikler Expo eklenti kataloğu aracılığıyla entegre edildi. RTL desteğinin mimariye en baştan dahil edilmesi bilinçli bir kararın ürünüydü: sonradan eklenen RTL desteği tüm bileşenlerin yeniden gözden geçirilmesini zorunlu kılar. Zustand’ın Redux yerine tercih edilmesinin nedeni, global state katmanının uygulamanın boyutuna orantılı tutulması gerektiğiydi; küçük ve sade bir API ile gereksiz soyutlama katmanlarından kaçınıldı. NativeWind, tasarım sistemini kod tabanının her yerinde tutarlı kılarken web geliştirme alışkanlıklarının native tarafa taşınmasını mümkün kıldı.

Sonuçlar

Noor, uluslararası bir kitle için mobil uygulama geliştirmenin ne ölçüde önceden planlanmış bir mimari gerektirdiğini gösteren somut bir proje oldu. RTL desteğinin ve çok dilli yapının baştan tasarıma dahil edilmesi, geliştirme sürecinin ilerleyen aşamalarında maliyetli yeniden yapılandırmalardan kaçınılmasını sağladı. Expo managed workflow, platforma özgü konfigürasyon yükünü ortadan kaldırarak geliştirme süresini kısalttı. Sonuç, 20’yi aşkın dil ve RTL desteğiyle gerçek anlamda küresel bir kullanıcı kitlesine hitap edebilen, tek kod tabanına sahip bir mobil uygulama oldu.