Zum Inhalt springen
Flutter i18n

Flutter i18n: Ein einziger Code, alle Sprachen, alle Plattformen

Flutter nutzt ARB-Dateien (Application Resource Bundle) und das intl-Paket, um die Lokalisierung für iOS, Android, das Web und den Desktop aus einer einzigen Codebasis heraus zu verwalten. Das Tool „gen-l10n“ generiert typsicheren Dart-Code aus Ihren ARB-Vorlagen und bietet Ihnen so Sicherheit bei der Kompilierung sowie eine IDE-Autovervollständigung für jeden Übersetzungsschlüssel.

Get started in 4 steps

1

Enable generation

Add the generate flag to your pubspec.yaml to enable localization code generation.

pubspec.yaml
# pubspec.yaml
dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  intl: any

flutter:
  generate: true
2

Configure l10n.yaml

Create l10n.yaml in your project root to configure the localization generator.

l10n.yaml
# l10n.yaml
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
3

Create ARB template

Add your source language ARB file with translation keys and metadata.

lib/l10n/app_en.arb
{
  "@@locale": "en",
  "welcome": "Welcome to {appName}",
  "@welcome": {
    "placeholders": {
      "appName": { "type": "String" }
    }
  },
  "itemCount": "{count, plural, =0{No items} =1{1 item} other{{count} items}}",
  "@itemCount": {
    "placeholders": {
      "count": { "type": "int" }
    }
  }
}
4

Use in your app

Wrap your app with localization delegates and use AppLocalizations.of(context) in widgets.

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      localizationsDelegates: AppLocalizations.localizationsDelegates,
      supportedLocales: AppLocalizations.supportedLocales,
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final l10n = AppLocalizations.of(context)!;
    return Text(l10n.welcome('Flutter'));
  }
}

Lokalisierungsfunktionen von Flutter

ARB-Dateiformat mit ICU-MessageFormat-Syntax und Unterstützung für Metadaten
Automatische Dart-Code-Generierung über gen-l10n für typsichere Übersetzungen
ICU-Pluralisierung und Auswahlregeln mit Validierung zur Kompilierungszeit
Lokalisierung aus einer einzigen Codebasis für iOS, Android, Web und Desktop
Unterstützung für Hot Reload zur sofortigen Vorschau der Übersetzung während der Entwicklung
Lokalisierungen für Material- und Cupertino-Widgets in Bezug auf Datumsangaben, Textrichtung und Barrierefreiheit
Unterstützung für das Layout von rechts nach links (RTL) mit automatischer Ausrichtung von Text und Widgets
Länderspezifische Formatierung von Datumsangaben, Zahlen und Währungen mithilfe des intl-Pakets
Zugriff auf die Ländereinstellung über BuildContext mit AppLocalizations.of(context)

Flutter-Lokalisierung in der Praxis

Verwenden Sie `AppLocalizations.of(context)`, um in Ihren Widgets auf generierte Übersetzungsmethoden zuzugreifen, wobei Pluralisierung und Datumsformatierung vollständig unterstützt werden.

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

class ProductPage extends StatelessWidget {
  final int itemCount;
  const ProductPage({required this.itemCount});

  @override
  Widget build(BuildContext context) {
    final l10n = AppLocalizations.of(context)!;
    return Column(
      children: [
        Text(l10n.welcome('My Store')),
        Text(l10n.itemCount(itemCount)),
        // Date formatting respects locale
        Text(DateFormat.yMMMd(
          Localizations.localeOf(context).toString()
        ).format(DateTime.now())),
      ],
    );
  }
}

Vereinfachen Sie noch heute die Lokalisierung von Flutter

Verwalten Sie Ihre ARB-Übersetzungen mit KI-gestützten Workflows, einer CLI-Synchronisierung mit Ihrem Flutter-Projekt und einer CDN-Bereitstellung mit einer Latenz von unter 50 ms.