Sobes.tech
Middle

Cum adaugi localizarea într-o aplicație Flutter?

sobes.tech AI

Răspuns de la AI

  1. Adăugarea dependențelor:

    În fișierul pubspec.yaml, trebuie să adăugați dependențe pentru localizare:

    dependencies:
      flutter:
        sdk: flutter
    
      flutter_localizations:
        sdk: flutter
      intl: ^0.18.0 # Exemplu de versiune, poate varia
    

    Apoi, rulați flutter pub get.

  2. Crearea fișierelor de localizare:

    Creați directoare pentru resursele de localizare, de exemplu ./lib/l10n/. În interior, creați fișiere .arb pentru fiecare limbă suportată. De exemplu, pentru engleză și rusă:

    app_en.arb:

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

    app_ru.arb:

    {
      "helloWorld": "Привет мир!",
      "@@locale": "ru"
    }
    
  3. Configurarea generării de cod:

    În fișierul pubspec.yaml, specificați calea către fișierele .arb și configurați generarea:

    flutter:
      generate: true # Activare generare
    
      assets:
        - assets/... # Alte resurse
    
      l10n:
        arb-dir: lib/l10n # Director cu fișierele `.arb`
        template-arb-file: app_en.arb # Fișier `.arb` șablon
        output-localization-file: app_localizations.dart # Numele fișierului generat
    

    După salvarea pubspec.yaml, Flutter va genera automat fișierul ./lib/generated/l10n.dart (sau cel specificat în output-localization-file).

  4. Utilizarea stringurilor localizate:

    În aplicație, unde doriți să folosiți stringuri localizate, importați fișierul generat:

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

    Apoi, accesați stringul localizat prin AppLocalizations.of(context)!:

    Text(AppLocalizations.of(context)!.helloWorld),
    
  5. Configurarea MaterialApp sau CupertinoApp:

    În widgetul de nivel superior (de obicei MaterialApp sau CupertinoApp), specificați suportul pentru limbi și delegații de localizare:

    import 'package:flutter_gen/gen_l10n/app_localizations.dart';
    
    MaterialApp(
      // ... alte setări
      localizationsDelegates: const [
        AppLocalizations.delegate, // Delegatul din fișierul generat
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: const [
        Locale('en', ''), // Engleză
        Locale('ru', ''), // Rusă
        // ... alte limbi suportate
      ],
      // ...
    );
    

Acum, aplicația va selecta automat localizarea în funcție de setările dispozitivului utilizatorului, dacă aceasta este prezentă în supportedLocales. Pentru a schimba manual localizarea, puteți folosi Locale și actualiza starea aplicației.