Sobes.tech
Middle

Kako dodati lokalizaciju u Flutter aplikaciju?

sobes.tech АИ

Одговор од АИ

  1. Dodavanje zavisnosti:

    U fajlu pubspec.yaml potrebno je dodati zavisnosti za lokalizaciju:

    dependencies:
      flutter:
        sdk: flutter
    
      flutter_localizations:
        sdk: flutter
      intl: ^0.18.0 # Primer verzije, može se razlikovati
    

    Zatim izvršite flutter pub get.

  2. Kreiranje fajlova lokalizacije:

    Kreirajte direktorijume za resurse lokalizacije, na primer ./lib/l10n/. Unutar njih kreirajte .arb fajlove za svaki podržani jezik. Na primer, za engleski i ruski:

    app_en.arb:

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

    app_ru.arb:

    {
      "helloWorld": "Привет мир!",
      "@@locale": "ru"
    }
    
  3. Podešavanje generisanja koda:

    U fajlu pubspec.yaml potrebno je navesti putanju do fajlova za lokalizaciju i konfigurisati .arb generaciju:

    flutter:
      generate: true # Uključiti generisanje
    
      assets:
        - assets/... # Vaši drugi asseti
    
      l10n:
        arb-dir: lib/l10n # Direktorijum sa .arb fajlovima
        template-arb-file: app_en.arb # Šablonski .arb fajl
        output-localization-file: app_localizations.dart # Ime generisanog fajla
    

    Nakon čuvanja pubspec.yaml, Flutter će automatski generisati fajl ./lib/generated/l10n.dart (ili onaj naveden u output-localization-file).

  4. Korišćenje lokalizovanih nizova:

    U aplikaciji gde je potrebno koristiti lokalizovane nizove, uvezite generisani fajl:

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

    Zatim pristupite lokalizovanom nizu putem AppLocalizations.of(context)!:

    Text(AppLocalizations.of(context)!.helloWorld),
    
  5. Podešavanje MaterialApp ili CupertinoApp:

    U vršnom widgetu (obično MaterialApp ili CupertinoApp) potrebno je navesti podržane jezike i delegacije lokalizacije:

    import 'package:flutter_gen/gen_l10n/app_localizations.dart';
    
    MaterialApp(
      // ... ostale postavke
      localizationsDelegates: const [
        AppLocalizations.delegate, // Delegat iz generisanog fajla
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: const [
        Locale('en', ''), // Engleski
        Locale('ru', ''), // Ruski
        // ... ostali podržani jezici
      ],
      // ...
    );
    

Sada će aplikacija automatski birati lokalizaciju u zavisnosti od podešavanja uređaja korisnika, ukoliko je ona dostupna u supportedLocales. Za ručno menjanje lokalizacije, možete koristiti Locale i osvežiti stanje aplikacije.