Sobes.tech
Middle

Hoe voeg je lokalisatie toe aan een Flutter-app?

sobes.tech AI

Antwoord van AI

  1. Dependencies toevoegen:

    In het bestand pubspec.yaml moet je afhankelijkheden voor lokalisatie toevoegen:

    dependencies:
      flutter:
        sdk: flutter
    
      flutter_localizations:
        sdk: flutter
      intl: ^0.18.0 # Voorbeeldversie, kan variëren
    

    Vervolgens voer je flutter pub get uit.

  2. Maak lokalisatiebestanden:

    Maak mappen voor de lokalisatieresources, bijvoorbeeld ./lib/l10n/. Binnenin maak je .arb-bestanden voor elke ondersteunde taal. Bijvoorbeeld voor Engels en Russisch:

    app_en.arb:

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

    app_ru.arb:

    {
      "helloWorld": "Привет мир!",
      "@@locale": "ru"
    }
    
  3. Configuratie van codegeneratie:

    In het bestand pubspec.yaml, geef het pad naar de .arb-bestanden en configureer de generatie:

    flutter:
      generate: true # Activeer generatie
    
      assets:
        - assets/... # Je andere assets
    
      l10n:
        arb-dir: lib/l10n # Map met `.arb`-bestanden
        template-arb-file: app_en.arb # Sjabloon `.arb`-bestand
        output-localization-file: app_localizations.dart # Naam van het gegenereerde bestand
    

    Na het opslaan van pubspec.yaml, genereert Flutter automatisch het bestand ./lib/generated/l10n.dart (of de naam die je hebt opgegeven in output-localization-file).

  4. Gebruik van gelokaliseerde strings:

    In de app, waar je gelokaliseerde strings wilt gebruiken, importeer het gegenereerde bestand:

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

    Vervolgens, krijg toegang tot de gelokaliseerde string via AppLocalizations.of(context)!:

    Text(AppLocalizations.of(context)!.helloWorld),
    
  5. Configuratie van MaterialApp of CupertinoApp:

    In de bovenliggende widget (meestal MaterialApp of CupertinoApp) geef je taalondersteuning en de delegaten voor lokalisatie:

    import 'package:flutter_gen/gen_l10n/app_localizations.dart';
    
    MaterialApp(
      // ... andere instellingen
      localizationsDelegates: const [
        AppLocalizations.delegate, // Delegaat uit het gegenereerde bestand
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: const [
        Locale('en', ''), // Engels
        Locale('ru', ''), // Russisch
        // ... andere ondersteunde talen
      ],
      // ...
    );
    

Nu zal de app automatisch de lokalisatie kiezen op basis van de instellingen van het apparaat van de gebruiker, mits deze in supportedLocales staat. Voor handmatige wijziging van de lokalisatie kun je Locale gebruiken en de staat van de app bijwerken.