Sobes.tech
Middle

Ako pridať lokalizáciu do aplikácie Flutter?

sobes.tech AI

Odpoveď od AI

  1. Pridanie závislostí:

    Do súboru pubspec.yaml je potrebné pridať závislosti pre lokalizáciu:

    dependencies:
      flutter:
        sdk: flutter
    
      flutter_localizations:
        sdk: flutter
      intl: ^0.18.0 # Príklad verzie, môže sa líšiť
    

    Potom spustite flutter pub get.

  2. Vytvorenie súborov lokalizácie:

    Vytvorte adresáre pre zdroje lokalizácie, napríklad ./lib/l10n/. Vo vnútri vytvorte .arb súbory pre každý podporovaný jazyk. Napríklad pre angličtinu a ruštinu:

    app_en.arb:

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

    app_ru.arb:

    {
      "helloWorld": "Привет мир!",
      "@@locale": "ru"
    }
    
  3. Nastavenie generovania kódu:

    V súbore pubspec.yaml je potrebné uviesť cestu k súborom pre lokalizáciu a nakonfigurovať .arb generáciu:

    flutter:
      generate: true # Zapnúť generovanie
    
      assets:
        - assets/... # Vaše ďalšie assets
    
      l10n:
        arb-dir: lib/l10n # Adresár s .arb súbormi
        template-arb-file: app_en.arb # Šablónový .arb súbor
        output-localization-file: app_localizations.dart # Názov generovaného súboru
    

    Po uložení pubspec.yaml Flutter automaticky vygeneruje súbor ./lib/generated/l10n.dart (alebo podľa output-localization-file).

  4. Použitie lokalizovaných reťazcov:

    V aplikácii, kde je potrebné použiť lokalizované reťazce, importujte vygenerovaný súbor:

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

    Potom pristupujte k lokalizovanému reťazcu cez AppLocalizations.of(context)!:

    Text(AppLocalizations.of(context)!.helloWorld),
    
  5. Nastavenie MaterialApp alebo CupertinoApp:

    Vo vrcholovom widgete (zvyčajne MaterialApp alebo CupertinoApp) je potrebné uviesť podporované jazyky a delegáty lokalizácie:

    import 'package:flutter_gen/gen_l10n/app_localizations.dart';
    
    MaterialApp(
      // ... ďalšie nastavenia
      localizationsDelegates: const [
        AppLocalizations.delegate, // Delegát z vygenerovaného súboru
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: const [
        Locale('en', ''), // Anglicky
        Locale('ru', ''), // Ruský
        // ... ďalšie podporované jazyky
      ],
      // ...
    );
    

Teraz bude aplikácia automaticky vyberať lokalizáciu v závislosti od nastavení zariadenia používateľa, ak je dostupná v supportedLocales. Pre manuálnu zmenu locale môžete použiť Locale a aktualizovať stav aplikácie.