Sobes.tech
Middle

Kaip pridėti lokalizaciją į Flutter programą?

sobes.tech AI

Atsakymas iš AI

  1. Pridėti priklausomybes:

    pubspec.yaml faile reikia pridėti lokalizacijos priklausomybes:

    dependencies:
      flutter:
        sdk: flutter
    
      flutter_localizations:
        sdk: flutter
      intl: ^0.18.0 # Pavyzdinė versija, gali skirtis
    

    Tada vykdykite flutter pub get.

  2. Sukurkite lokalizacijos failus:

    Sukurkite katalogus lokalizacijos ištekliams, pvz., ./lib/l10n/. Viduje sukurkite .arb failus kiekvienai palaikomai kalbai. Pavyzdžiui, anglų ir rusų:

    app_en.arb:

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

    app_ru.arb:

    {
      "helloWorld": "Привет мир!",
      "@@locale": "ru"
    }
    
  3. Kodo generavimo nustatymai:

    pubspec.yaml faile nurodykite kelią iki lokalizacijos failų ir konfigūruokite .arb generavimą:

    flutter:
      generate: true # Įjungti generavimą
    
      assets:
        - assets/... # Jūsų kiti ištekliai
    
      l10n:
        arb-dir: lib/l10n # Katalogas su `.arb` failais
        template-arb-file: app_en.arb # Šabloninis `.arb` failas
        output-localization-file: app_localizations.dart # Generuojamo failo pavadinimas
    

    Išsaugojus pubspec.yaml, Flutter automatiškai sugeneruos failą ./lib/generated/l10n.dart (arba pagal output-localization-file).

  4. Naudojimas lokalizuotoms eilutėms:

    Programoje, kur reikia naudoti lokalizuotas eilutes, importuokite sugeneruotą failą:

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

    Tada pasiekite lokalizuotą eilutę per AppLocalizations.of(context)!:

    Text(AppLocalizations.of(context)!.helloWorld),
    
  5. MaterialApp arba CupertinoApp nustatymai:

    Aukščiausio lygio widget'e (dažniausiai MaterialApp arba CupertinoApp) nurodykite palaikomus kalbas ir lokalizacijos delegatus:

    import 'package:flutter_gen/gen_l10n/app_localizations.dart';
    
    MaterialApp(
      // ... kiti nustatymai
      localizationsDelegates: const [
        AppLocalizations.delegate, // Iš sugeneruoto failo
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: const [
        Locale('en', ''), // Anglų
        Locale('ru', ''), // Rusų
        // ... kitos palaikomos kalbos
      ],
      // ...
    );
    

Dabar programa automatiškai pasirinks lokalizaciją pagal naudotojo įrenginio nustatymus, jei ji yra supportedLocales. Rankiniu būdu keisti lokalizaciją galima naudojant Locale ir atnaujinant programos būseną.