Sobes.tech
Middle

Flutter ilovasiga lokalizatsiya qanday qo'shiladi?

sobes.tech AI

AIdan javob

  1. Bog'lanishlarni qo'shish:

    pubspec.yaml faylida lokalizatsiya uchun bog'lanishlarni qo'shish kerak:

    dependencies:
      flutter:
        sdk: flutter
    
      flutter_localizations:
        sdk: flutter
      intl: ^0.18.0 # Misol uchun versiya, farq qilishi mumkin
    

    So'ng, flutter pub get komandasini ishga tushiring.

  2. Lokalizatsiya fayllarini yaratish:

    Lokalizatsiya resurslari uchun kataloglar yarating, masalan ./lib/l10n/. Ichida, har bir qo'llab-quvvatlanadigan til uchun .arb fayllarini yarating. Masalan, ingliz va rus til uchun:

    app_en.arb:

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

    app_ru.arb:

    {
      "helloWorld": "Привет мир!",
      "@@locale": "ru"
    }
    
  3. Kod avto-generatsiya qilish konfiguratsiyasi:

    pubspec.yaml faylida, .arb fayllarining yo'lini ko'rsating va avto-generatsiya uchun sozlang:

    flutter:
      generate: true # Avto-generatsiyani yoqing
    
      assets:
        - assets/... # Sizning boshqa aktivlaringiz
    
      l10n:
        arb-dir: lib/l10n # `.arb` fayllar joylashgan katalog
        template-arb-file: app_en.arb # Namuna `.arb` fayli
        output-localization-file: app_localizations.dart # Yaratiladigan fayl nomi
    

    pubspec.yaml saqlangandan so'ng, Flutter avtomatik ravishda ./lib/generated/l10n.dart (yoki output-localization-fileda ko'rsatilgan) faylni yaratadi.

  4. Lokalizatsiyalashgan satrlarni ishlatish:

    Ilovada, lokalizatsiyalashgan satrlarni ishlatish uchun, yaratilgan faylni import qiling:

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

    So'ng, AppLocalizations.of(context)! orqali lokalizatsiyalashgan satrga murojaat qiling:

    Text(AppLocalizations.of(context)!.helloWorld),
    
  5. MaterialApp yoki CupertinoApp konfiguratsiyasi:

    Yuqori darajadagi widgetda (odatda MaterialApp yoki CupertinoApp) tillar qo'llab-quvvatlashini va lokalizatsiya delegatlarini ko'rsating:

    import 'package:flutter_gen/gen_l10n/app_localizations.dart';
    
    MaterialApp(
      // ... boshqa sozlamalar
      localizationsDelegates: const [
        AppLocalizations.delegate, // Yaratilgan fayldan delegat
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: const [
        Locale('en', ''), // Ingliz tili
        Locale('ru', ''), // Rus tili
        // ... boshqa qo'llab-quvvatlanadigan tillar
      ],
      // ...
    );
    

Endi ilova foydalanuvchi qurilmasining sozlamalariga asoslangan holda avtomatik ravishda lokalizatsiyani tanlaydi, agar u supportedLocales ichida bo'lsa. Lokalizatsiyani qo'lda o'zgartirish uchun Locale dan foydalanish va ilova holatini yangilash mumkin.