Pakete, Repositories und App-Kategorien suchen

Paketdetailsv2.0.4

fluent

Fluent ist eine Dart-Implementierung von Project Fluent, einem Lokalisierungsframework, das darauf abzielt, die Ausdruckskraft der natürlichen Sprache zu entfalten.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
2340
Likes
26
Pub-Punkte
130

Paket installieren

flutter pub add fluent

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Fluent ist eine Dart-Implementierung von Project Fluent, einem modernen Lokalisierungsframework, das ausdrucksstarke, kontextbewusste Übersetzungen ermöglicht. Es unterstützt komplexe Satzstrukturen, Pluralisierung und Geschlechterbehandlung durch eine leistungsstarke Syntax. Für Internationale Entwicklung konzipiert, ermöglicht Fluent Entwicklern die Erstellung von Lokalisierungsdateien in einer menschenlesbaren Form, was die Zusammenarbeit zwischen Entwicklern und Übersetzern verbessert. Es funktioniert auf allen wichtigen Plattformen wie Android, iOS, Web, macOS, Windows und Linux und ist daher ideal für plattformübergreifende Anwendungen mit reichhaltigem, dynamischem Inhalt.

Anwendungsfälle

  • Multisprachige App-Lokalisierung
  • Dynamischer Inhalt mit kontextbewussten Übersetzungen
  • Kooperative Übersetzungsarbeitsabläufe
  • Unterstützung für komplexe Grammatikregeln
  • Plattformübergreifende Internationalisierung

Hauptmerkmale

  • Natürliche Sprachausdrücke in Übersetzungen
  • Pluralisierung und Geschlechtssupport
  • kontextsensitive Nachrichtenformatierung
  • lesbare .ftl-Dateien
  • Nahtlose Integration mit Flutter

Geeignet für

  • Apps für globale Zielgruppen
  • Teams mit nicht-technischen Übersetzern
  • Projekte, die erweiterte Lokalisierungslogik benötigen
  • Flutter-Apps auf mehreren Plattformen
  • Entwickler, die wartbare i18n priorisieren

Hinweise

  • Erfordert das Erlernen der Syntax von Fluent
  • Begrenztes Tooling im Vergleich zu Legacy-Frameworks
  • Für große Projekte sind möglicherweise benutzerdefinierte Build-Schritte erforderlich
  • Nicht geeignet für einfache Schlüssel-Wert-Übersetzungen
  • Anfangsaufwand für die Einrichtung neuer Projekte

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

Fluent

This is a Dart runtime implementation of Project Fluent, a localization framework designed to unleash the entire expressive power of natural language translations.

Project Fluent keeps simple things simple and makes complex things possible. The syntax used for describing translations is easy to read and understand. At the same time it allows, when necessary, to represent complex concepts from natural languages like gender, plurals, conjugations, and others.

Getting Started

Learn the FTL syntax

FTL is a localization file format used for describing translation resources. FTL stands for Fluent Translation List.

FTL is designed to be simple to read, but at the same time allows to represent complex concepts from natural languages like gender, plurals, conjugations, and others.

hello-user = Hello, { $username }!

In order to use fluent.runtime, you will need to create FTL files. Read the Fluent Syntax Guide <http://projectfluent.org/fluent/guide/>_ in order to learn more about the syntax.

Using FluentBundle

Once you have some FTL files, you can generate translations using the fluent package. You start with the FluentBundle class:

import 'package:fluent/fluent.dart';

You pass a locale to the constructor:

final bundle = FluentBundle('en-GB');

You must then add messages. These would normally come from a .ftl file stored on disk, here we will just add them directly:

bundle.addMessages('''
welcome = Welcome to this great app!
greet-by-name = Hello, { $name }!
''');

To generate translations, use the format method, passing a message ID and an optional dictionary of substitution parameters. If the the message ID is not found, null is returned. Otherwise, as per the Fluent philosophy, the implementation tries hard to recover from any formatting errors and generate the most human readable representation of the value.

List<Error> errors = [];
translated = bundle.format('welcome', errors: errors)
translated = bundle.format('greet-by-name', args: {'name': 'Jane'}, errors: errors)

Custom functions

Besides the built-in NUMBER and DATETIME functions, you can register your own functions for use in translations, e.g. a PLATFORM() function used to pick a variant based on the current OS:

FluentValue platform() => FluentString('macos');
final bundle = FluentBundle('en-GB', functions: {'PLATFORM': platform});

bundle.addMessages('''
settings-menu-label = { PLATFORM() ->
    [macos] Preferences
   *[other] Settings
}
''');

A custom function receives its FTL positional and named arguments as plain Dart values (already unwrapped from FluentValue, e.g. String/num/ DateTime), and must return a FluentValue (e.g. FluentString, FluentNumber). Custom functions may also override the built-in NUMBER and DATETIME functions by registering under those names.

Known limitations and bugs

  • We do not yet support NUMBER(..., currencyDisplay="...", minimumSignificantDigits="...", maximumSignificantDigits=".. ")

  • Most options to DATETIME are not yet supported.

Help with the above would be welcome!

Kategorien

Abhängigkeiten

Abhängigkeiten 1 Einträge

  • intl>=0.19.0 <0.21.0

Quell-Repository

Projekte, die dieses Paket verwenden