Sobes.tech
Middle

Flutter uygulamasına nasıl yerelleştirme eklenir?

sobes.tech yapay zeka

AI'dan gelen yanıt

  1. Bağımlılıkların eklenmesi:

    pubspec.yaml dosyasında yerelleştirme için bağımlılıkları eklemeniz gerekir:

    dependencies:
      flutter:
        sdk: flutter
    
      flutter_localizations:
        sdk: flutter
      intl: ^0.18.0 # Örnek sürüm, değişebilir
    

    Ardından flutter pub get komutunu çalıştırın.

  2. Yerelleştirme dosyalarının oluşturulması:

    Yerelleştirme kaynakları için dizinler oluşturun, örneğin ./lib/l10n/. İçinde, desteklenen her dil için .arb dosyaları oluşturun. Örneğin, İngilizce ve Rusça için:

    app_en.arb:

    {
      "helloWorld": "Hello World!",
      "@@locale": "en"
    }
    

    app_ru.arb:

    {
      "helloWorld": "Привет мир!",
      "@@locale": "ru"
    }
    
  3. Kod üretimi yapılandırması:

    pubspec.yaml dosyasında, .arb dosyalarının yolunu belirtin ve .arb üretimini yapılandırın:

    flutter:
      generate: true # Üretimi etkinleştir
    
      assets:
        - assets/... # Diğer varlıklarınız
    
      l10n:
        arb-dir: lib/l10n # .arb dosyalarının bulunduğu dizin
        template-arb-file: app_en.arb # Şablon .arb dosyası
        output-localization-file: app_localizations.dart # Oluşan dosyanın adı
    

    pubspec.yaml kaydedildikten sonra, Flutter otomatik olarak ./lib/generated/l10n.dart (veya output-localization-file ile belirtilen) dosyasını oluşturacaktır.

  4. Yerelleştirilmiş dizelerin kullanımı:

    Uygulamada, yerelleştirilmiş dizeleri kullanmak istediğiniz yerde, oluşturulan dosyayı içe aktarın:

    import 'package:flutter_gen/gen_l10n/app_localizations.dart';
    

    Ardından, AppLocalizations.of(context)! ile yerelleştirilmiş dizeye erişin:

    Text(AppLocalizations.of(context)!.helloWorld),
    
  5. MaterialApp veya CupertinoApp yapılandırması:

    Üst düzey widget'ta (genellikle MaterialApp veya CupertinoApp) dil desteği ve yerelleştirme delegelerini belirtin:

    import 'package:flutter_gen/gen_l10n/app_localizations.dart';
    
    MaterialApp(
      // ... diğer ayarlar
      localizationsDelegates: const [
        AppLocalizations.delegate, // Oluşan dosyadan delegat
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: const [
        Locale('en', ''), // İngilizce
        Locale('ru', ''), // Rusça
        // ... diğer desteklenen diller
      ],
      // ...
    );
    

Artık uygulama, kullanıcının cihaz ayarlarına bağlı olarak otomatik olarak yerelleştirmeyi seçecek, eğer supportedLocales içinde varsa. Yerelleştirmeyi manuel değiştirmek için Locale kullanabilir ve uygulama durumunu güncelleyebilirsiniz.