Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev0.6.0

multiple_localization

Suporte para múltiplos arquivos de localização abr e mensagens para o pacote intl.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
34,6 mil
Curtidas
28
Pontos Pub
160

Instalar pacote

flutter pub add multiple_localization

Visão geral do pacote

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

O pacote multiple_localization aprimora o pacote intl permitindo suporte a múltiplos arquivos de localização, incluindo arquivos .arb, possibilitando aos desenvolvedores gerenciar traduções de forma mais eficiente em diferentes idiomas e locais. Simplifica o processo de organizar e carregar mensagens localizadas em aplicativos Flutter, especialmente quando se trata de necessidades de internacionalização em grande escala. O pacote foi projetado para funcionar perfeitamente com a infraestrutura existente de internacionalização do Flutter, tornando mais fácil manter e escalar os ativos de tradução. Ele oferece suporte a todas as principais plataformas: Android, iOS, Web, macOS, Windows e Linux.

Casos de uso

  • Gerenciando múltiplos arquivos de idioma em um único projeto
  • Simplificando fluxos de trabalho de tradução para grandes aplicativos
  • Apoio à troca dinâmica de localidade
  • Organizando traduções por recurso ou módulo
  • Integração com localização baseada em intl existente
  • Habilitar estruturas de localização modulares

Principais recursos

  • Suporte para vários arquivos .arb
  • Integração sem interrupções com o pacote intl
  • Organização flexível de arquivos
  • design com agnóstico de plataforma
  • Configuração fácil por meio do pub add
  • Carregamento automático de mensagens

Indicado para

  • Aplicações Flutter internacionalizadas em grande escala
  • Equipes gerenciando múltiplos arquivos de tradução
  • Projetos que exigem localização modular
  • Desenvolvedores usando intl para i18n
  • Aplicativos direcionados a públicos globais diversos

Considerações

  • Requer familiaridade com o pacote intl
  • Configuração adicional necessária para caminhos de arquivos personalizados
  • Pode aumentar a complexidade da compilação com muitos arquivos
  • Mais adequado para projetos já usando intl
  • Não compatível com abordagens de localização não-internacionalizadas

README original

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

multiple_localization

pub package Analyze & Test innim lint

Support for multiple abr and messages localization files for intl package.

Problem

If you want to have multiple arb files and register separate delegate for each one of them, then you have a problem. Intl doesn't allow multiple initializeMessages calls. Only first one will be processed and only it's messages will be used. Every calls after the first one will be ignored.

Why do we need to have multiple arb files?

In common scenario - we don't. Just put all localization string in single file and enjoy. But if you want to add intl localization with arb files to separate package, and than use it in you project with it's own localization files - that's problem.

MultipleLocalizations supports using Localizations.override(delegates: [SomeLocalizationsDelegate(), ...]) widget, too.

Exactly for that situation this package was developed.

See article on Medium for more details - Localization for Dart package.

Usage

To use this package, add multiple_localization as a dependency in your pubspec.yaml file.

Than use MultipleLocalizations.load for your delegate load function, instead of call initializeMessages explicitly.

Example
class _AppLocalizationsDelegate extends LocalizationsDelegate<AppLocalizations> {
  const _AppLocalizationsDelegate();

  @override
  bool isSupported(Locale locale) {
    return ['en', 'ru'].contains(locale.languageCode);
  }

  @override
  Future<AppLocalizations> load(Locale locale) {
    return MultipleLocalizations.load(
        initializeMessages, locale, (l) => AppLocalizations(l),
        setDefaultLocale: true);
  }

  @override
  bool shouldReload(LocalizationsDelegate<AppLocalizations> old) {
    return false;
  }
}
Override string from package in project

If you want to override string from package localization in project (for example to change some labels in package widgets) - you need to define string with required name in you app localization class.

Example.

If package has string messageFromPackageForOverride:

class PackageLocalizations {
  ...

  String get messageFromPackageForOverride =>
        Intl.message('Package', name: 'messageFromPackageForOverride');

Then you need to define messageFromPackageForOverride in you AppLocalizations:

class AppLocalizations {
  ...

  String get messageFromPackageForOverride =>
        Intl.message('App', name: 'messageFromPackageForOverride');

Make sure that you add the app localization delegate before the package localization delegate:

  ...
  const MaterialApp(
    localizationsDelegates: [
      AppLocalizations.delegate,
      PackageLocalizations.delegate,
      ...
    ],
    ...

Now, whenever package use messageFromPackageForOverride you will see App, not Package.

Set fallback locale

Also you can specify a fallback locale when loading application localization delegate. Use [fallbackLocale] parameter to set locale which will be used if some key not found for current locale. Only first call of [load] will set fallback locale, make sure that your app's localization delegate added as a first element of the delegates list.

Also pay attention that if you provide the [fallbackLocale], than all messages will be uploaded in memory on the start of application in addition to current locale.

Categorias

Dependências

Lista de dependências 1 itens

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.