Jak přidat lokalizaci do aplikace Flutter?
sobes.tech AI
Odpověď od AI
-
Přidání závislostí:
Do souboru
pubspec.yamlje 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šitPoté spusťte
flutter pub get. -
Vytvoření souborů lokalizace:
Vytvořte adresáře pro zdroje lokalizace, například
./lib/l10n/. Uvnitř vytvořte.arbsoubory 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" } -
Nastavení generování kódu:
V souboru
pubspec.yamlje třeba uvést cestu k souborům lokalizace a nakonfigurovat.arbgeneraci: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 souboruPo uložení
pubspec.yamlFlutter automaticky vygeneruje soubor./lib/generated/l10n.dart(nebo podleoutput-localization-file). -
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), -
Nastavení
MaterialAppneboCupertinoApp:Ve vrcholovém widgetu (obvykle
MaterialAppneboCupertinoApp) 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.