Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev2.0.4

fluent

Fluent é uma implementação em Dart do Project Fluent, um framework de localização projetado para liberar o poder expressivo da linguagem natural.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
2,3 mil
Curtidas
26
Pontos Pub
130

Instalar pacote

flutter pub add fluent

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

Fluent é uma implementação em Dart do Project Fluent, um framework moderno de localização que permite traduções expressivas e contextuais. Ele suporta estruturas de frases complexas, pluralização e tratamento de gênero por meio de uma sintaxe poderosa. Projetado para internacionalização, o Fluent permite que desenvolvedores escrevam arquivos de localização em um formato legível por humanos, melhorando a colaboração entre desenvolvedores e tradutores. Funciona em todas as principais plataformas, incluindo Android, iOS, Web, macOS, Windows e Linux, tornando-se ideal para aplicativos multiplataforma que exigem conteúdo rico e dinâmico.

Casos de uso

  • localização de aplicativos multilíngues
  • Conteúdo dinâmico com traduções conscientes do contexto
  • Fluxos de trabalho colaborativos de tradução
  • Suporte para regras gramaticais complexas
  • Internacionalização multiplataforma

Principais recursos

  • Expressão em linguagem natural nas traduções
  • Suporte a pluralização e gênero
  • formatação de mensagem sensível ao contexto
  • arquivos .ftl legíveis por humanos
  • Integração contínua com o Flutter

Indicado para

  • Aplicativos direcionados a públicos globais
  • Equipes com tradutores não técnicos
  • Projetos que precisam de lógica avançada de localização
  • Aplicativos Flutter em múltiplas plataformas
  • Desenvolvedores priorizando i18n sustentável

Considerações

  • Requer aprendizado da sintaxe do Fluent
  • Ferramentas limitadas em comparação com frameworks legados
  • Pode ser necessário passos personalizados de compilação para projetos grandes
  • Não adequado para traduções simples de chave-valor
  • Sobreposição inicial de configuração para novos projetos

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

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!

Categorias

Dependências

Lista de dependências 1 itens

  • intl>=0.19.0 <0.21.0

Repositório-fonte

Projetos que usam este pacote