Flutter’da lokalizasyon (i18n) nasıl yapılır? Adım adım

Emir Bolat
3 min readNov 24, 2024

--

Flutter uygulamanızı birden fazla dilde sunarak daha geniş bir kullanıcı kitlesine ulaşabilirsiniz. Bu makalemde slang paketi kullanarak Flutter’da lokalizasyon (i18n) işlemini adım adım nasıl gerçekleştirebileceğinizi göstereceğim.

Bir mobil uygulamanın başarısında farklı dillere destek sunması büyük bir rol oynar. Instagram, WhatsApp, Facebook gibi global uygulamaların popülerliklerinde çok dilli desteklerinin etkisi yadsınamaz. Peki Flutter ile bir uygulama geliştirirken çoklu dil desteğini nasıl ekleyebilirsiniz?

Bu yazıda slang paketini kullanarak Flutter uygulamanıza nasıl kolayca lokalizasyon (i18n) ekleyebileceğinizi adım adım göstereceğim. Hazırsanız başlayalım!

Lokalizasyon neden önemli?

Lokalizasyon, uygulamanızın birden fazla dilde kullanılabilmesini sağlar. Bu da yalnızca yerel bir kitleye değil, global bir kullanıcı tabanına hitap etmenize olanak tanır.

Örneğin bir uygulamanız sadece Türkçe hizmet verse,dünya genelinde ulaşabileceği kullanıcı sayısı sınırlı olur. Ancak İngilizce, Almanca gibi ek diller ekleyerek bu kısıtlamayı aşabilirsiniz.

Flutter uygulamasına dil eklemek için kullanılabilecek pek çok paket seçeneği bulunuyor. flutter_localization, easy_localization, localization ve dahası. Ben size slang adlı paketten bahsetmek istiyorum.

Hızlı bir şekilde kurulabilen ve yapılandırılabilen slang, kullanımı oldukça kolay bir paket.

Flutter uygulamasına dil seçenekleri (localization) ekleme

Adım 1: Gerekli Paketleri Yükleyin

İlk olarak slang ile çalışmak için gerekli paketleri yükleyelim. Terminale şu komutu yazmanız yeterli:

flutter pub add slang slang_flutter build_runner

Bu komut, projenize slang, slang_flutter ve generate işlemleri için build_runner paketlerini ekler.

Adım 2: Dil dosyalarını oluşturun

Projenizin kök dizininde bir assets klasörü oluşturun. Bu klasörün içine i18n adında bir alt klasör ekleyin. Her dil için bir JSON dosyası oluşturmanız gerekiyor. Dosya isimlendirme formatı şu şekilde olmalı:

<namespace>_<locale?>.i18n.json

Örneğin:

  • strings.i18n.json (Temel dil, genelde İngilizce)
  • strings_tr.i18n.json (Türkçe)
  • strings_de.i18n.json (Almanca)

Örnek dil dosyaları

Temel dil (English)

{
"views": {
"login": {
"welcome": "Welcome",
"email": "Email",
"password": "Password",
"loginButton": "Login"
},
"home": {
"welcome": "Welcome Home!",
"greeting": "Hello, $userName!"
}
}
}

Türkçe:

{
"views": {
"login": {
"welcome": "Hoşgeldiniz",
"email": "E-posta",
"password": "Parola",
"loginButton": "Giriş Yap"
},
"home": {
"welcome": "Ana Sayfaya Hoşgeldiniz!",
"greeting": "Merhaba, $userName!"
}
}
}

Almanca:

{
"views": {
"login": {
"welcome": "Willkommen",
"email": "E-Mail",
"password": "Passwort",
"loginButton": "Einloggen"
},
"home": {
"welcome": "Willkommen zu Hause!",
"greeting": "Hallo, $userName!"
}
}
}

Adım 3: Kod üretimi (Generate işlemi)

JSON dosyalarını oluşturduktan sonra, Slang paketinin bu dosyalardan kod üretmesi gerekiyor. Bunun için terminalde şu komutu çalıştırın:

dart run slang

Bu komut, projenizin lib/gen klasöründe generate edilmiş kod dosyalarını oluşturur. Eğer dosyaların konumunu değiştirmek istiyorsanız, proje köküne bir slang.yaml dosyası ekleyebilirsiniz:

input_directory: assets/i18n # Localization ile ilgili JSON dosyaların konumu
output_directory: lib/i18n # Generate edilecek kodların konumu (varsayılan: lib/gen/)

Adım 4: Flutter’a Lokalizasyonu Tanıtın

Lokalizasyon desteğini Flutter uygulamanıza entegre etmek için aşağıdaki adımları takip edin:

Pubspec.yaml dosyasında flutter bloğunun altında şu kodu ekleyin:

  flutter_localizations:
sdk: flutter

Main metodunu ayarlayın

main.dart dosyanızda, cihazın varsayılan dilini kullanacak şekilde yapılandırma yapın:

void main() {
WidgetsFlutterBinding.ensureInitialized();
LocaleSettings.useDeviceLocale();
runApp(
TranslationProvider(
child: const MyApp(),
),
);
}

MaterialApp yapılandırması

MaterialApp widget’ınıza şu parametreleri ekleyin:

@override
Widget build(BuildContext context) {
return MaterialApp(
locale: TranslationProvider.of(context).flutterLocale,
supportedLocales: AppLocaleUtils.supportedLocales,
localizationsDelegates: GlobalMaterialLocalizations.delegates,
home: MyHomePage(),
);
}

Adım 5: iOS için ek yapılandırma

iOS uygulamanızda, desteklenen dilleri belirtmek için Info.plist dosyasına şu satırları ekleyin:

<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>tr</string>
<string>de</string>
</array>

Kurulum tamamlandı! Şimdi nasıl kullanabileceğinize geçelim.

Yerelleştirilmiş metinleri kullanma

Slang tarafından generate edilen kodda, tüm metinlere t değişkeni üzerinden erişebilirsiniz. Örneğin:

Text(t.views.login.welcome) // "Welcome" / "Hoşgeldiniz" / "Willkommen"

Yer tutucu değişkenler (placeholders) için ise şu şekilde kullanabilirsiniz:

Text(t.views.home.greeting(userName: "Emir")) // "Hello, Emir" / "Merhaba, Emir" / "Hallo, Emir"

Dil değiştirme

Uygulamada dil değiştirmek için LocaleSettings.setLocale() fonksiyonunu kullanabilirsiniz. Örneğin:

LocaleSettings.setLocale(AppLocale.tr); // Türkçe’ye geçiş

Örnek proje

slang paketi ile localization için örnek bir proje oluşturdum. Bu projede dili değiştirme özelliği de mevcut. Linkine aşağıdan ulaşabilirsiniz.

--

--

Emir Bolat
Emir Bolat

Written by Emir Bolat

Hello! My name is Emir. I'm here to share what I know :)

Responses (1)