Sobes.tech
Middle

Jak přidat lokalizaci do aplikace Flutter?

sobes.tech AI

Odpověď od AI

  1. Přidání závislostí:

    Do souboru pubspec.yaml je třeba přidat závislosti pro lokalizaci:

    dependencies:
      flutter:
        sdk: flutter
    
      flutter_localizations:
        sdk: flutter
      intl: ^0.18.0 # Příklad verze, může se lišit
    

    Poté spusťte flutter pub get.

  2. Vytvoření souborů lokalizace:

    Vytvořte adresáře pro zdroje lokalizace, například ./lib/l10n/. Uvnitř vytvořte .arb soubory pro každý podporovaný jazyk. Například pro angličtinu a ruštinu:

    app_en.arb:

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

    app_ru.arb:

    {
      "helloWorld": "Привет мир!",
      "@@locale": "ru"
    }
    
  3. Nastavení generování kódu:

    V souboru pubspec.yaml je třeba uvést cestu k souborům lokalizace a nakonfigurovat .arb generaci:

    flutter:
      generate: true # Zapnout generování
    
      assets:
        - assets/... # Vaše další assets
    
      l10n:
        arb-dir: lib/l10n # Adresář s .arb soubory
        template-arb-file: app_en.arb # Šablonový .arb soubor
        output-localization-file: app_localizations.dart # Název generovaného souboru
    

    Po uložení pubspec.yaml Flutter automaticky vygeneruje soubor ./lib/generated/l10n.dart (nebo podle output-localization-file).

  4. Použití lokalizovaných řetězců:

    V aplikaci, kde je třeba použít lokalizované řetězce, importujte vygenerovaný soubor:

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

    Poté přistupte k lokalizovanému řetězci přes AppLocalizations.of(context)!:

    Text(AppLocalizations.of(context)!.helloWorld),
    
  5. Nastavení MaterialApp nebo CupertinoApp:

    Ve vrcholovém widgetu (obvykle MaterialApp nebo CupertinoApp) je třeba uvést podporované jazyky a delegáty lokalizace:

    import 'package:flutter_gen/gen_l10n/app_localizations.dart';
    
    MaterialApp(
      // ... další nastavení
      localizationsDelegates: const [
        AppLocalizations.delegate, // Delegát z vygenerovaného souboru
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: const [
        Locale('en', ''), // Angličtina
        Locale('ru', ''), // Ruština
        // ... další podporované jazyky
      ],
      // ...
    );
    

Nyní bude aplikace automaticky vybírat lokalizaci podle nastavení zařízení uživatele, pokud je v supportedLocales. Pro ruční změnu locale lze použít Locale a aktualizovat stav aplikace.