Sobes.tech
Middle

Чӣ гуна илова кардани маҳаллӣ ба барномаи Flutter?

sobes.tech AI

Ҷавоб аз AI

  1. Илова кардани вобастагиҳо:

    Дар файли pubspec.yaml бояд вобастагиҳо барои локализация илова кунед:

    dependencies:
      flutter:
        sdk: flutter
    
      flutter_localizations:
        sdk: flutter
      intl: ^0.18.0 # Нусхаи намуна, метавонад фарқ кунад
    

    Пас аз он иҷрои flutter pub get.

  2. Таҳия кардани файлҳои локализация:

    Директорияҳо барои захираҳои локализация созед, масалан ./lib/l10n/. Дар дохили онҳо .arb файлҳо барои ҳар забони дастгиришударо созед. Масалан, барои англисӣ ва русӣ:

    app_en.arb:

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

    app_ru.arb:

    {
      "helloWorld": "Привет мир!",
      "@@locale": "ru"
    }
    
  3. Танзими тавлиди код:

    Дар файли pubspec.yaml бояд роҳро ба файлҳои локализация нишон диҳед ва тавлиди .arb-ро танзим кунед:

    flutter:
      generate: true # Тавлидро фаъол кунед
    
      assets:
        - assets/... # Assets-и шумо
    
      l10n:
        arb-dir: lib/l10n # Директория бо файлҳои .arb
        template-arb-file: app_en.arb # Файли шаблонӣ
        output-localization-file: app_localizations.dart # Номи файли тавлидшуда
    

    Пас аз нигоҳ доштани pubspec.yaml, Flutter автоматӣ файли ./lib/generated/l10n.dart (ё файли дар output-localization-file нишонёфта) тавлид мекунад.

  4. Истифодаи сатрҳои локализатсияшуда:

    Дар барнома, ки лозим аст сатрҳои локализатсияшуда истифода шаванд, файли тавлидшударо ворид кунед:

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

    Пас аз он ба сатрҳои локализатсияшуда тавассути AppLocalizations.of(context)! дастрасӣ пайдо кунед:

    Text(AppLocalizations.of(context)!.helloWorld),
    
  5. Танзими MaterialApp ё CupertinoApp:

    Дар виджети сатҳи боло (одатан MaterialApp ё CupertinoApp) бояд дастгирии забонҳо ва делегатҳои локализацияро нишон диҳед:

    import 'package:flutter_gen/gen_l10n/app_localizations.dart';
    
    MaterialApp(
      // ... дигар танзимот
      localizationsDelegates: const [
        AppLocalizations.delegate, // Делегат аз файли тавлидшуда
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: const [
        Locale('en', ''), // Англисӣ
        Locale('ru', ''), // Русӣ
        // ... дигар забонҳои дастгиришуда
      ],
      // ...
    );
    

Акнун барнома автоматӣ локализацияро вобаста ба танзимоти дастгоҳи корбар интихоб мекунад, агар он дар supportedLocales бошад. Барои тағир додани локалиро дастӣ, метавонед Locale-ро истифода баред ва ҳолати барномаро навсозӣ кунед.