パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v0.6.0

multiple_localization

intl パッケージ用の複数の abr およびメッセージローカライズファイルをサポート。

AndroidiOSWebmacOSWindowsLinux
30日間ダウンロード
3.5万
いいね数
28
Pub ポイント
160

パッケージをインストール

flutter pub add multiple_localization

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

multiple_localization パッケージは intl パッケージを拡張し、.arb ファイルを含む複数のローカリゼーションファイルのサポートを可能にし、開発者が異なる言語やロケール間で翻訳をより効率的に管理できるようにします。Flutter アプリケーションでのローカライズされたメッセージの整理と読み込みプロセスを簡素化し、特に大規模な国際化ニーズに対応する際に役立ちます。このパッケージは Flutter の既存の国際化インフラストラクチャとシームレスに連携するように設計されており、翻訳アセットの保守およびスケーラビリティを容易にします。すべての主要プラットフォーム(Android、iOS、Web、macOS、Windows、Linux)をサポートしています。

用途

  • 1つのプロジェクトで複数の言語ファイルを管理する
  • 大規模なアプリの翻訳ワークフローを簡素化する
  • 動的ロケール切り替えのサポート
  • 機能またはモジュールごとに翻訳を整理する
  • 既存の intl ベースのローカリゼーションとの統合
  • モジュール型ローカリゼーション構造を有効にする

主な機能

  • .arb ファイルの複数サポート
  • intl パッケージとのシームレスな統合
  • 柔軟なファイルの整理
  • プラットフォームに依存しない設計
  • pub add を通じた簡単なセットアップ
  • 自動メッセージ読み込み

適している対象

  • 大規模な国際化Flutterアプリケーション
  • 複数の翻訳ファイルを管理するチーム
  • モジュール型ローカリゼーションを必要とするプロジェクト
  • i18nにintlを使用する開発者
  • 多様なグローバルオーディエンスをターゲットにするアプリ

注意事項

  • intl パッケージに精通している必要があります
  • カスタムファイルパス用の追加構成が必要です
  • 多数のファイルがあるとビルドの複雑さが増す可能性があります
  • 既に intl を使用しているプロジェクトに最適
  • 非国際化ローカライゼーションアプローチと互換性なし

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

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.

カテゴリー

依存関係

依存関係一覧 1 件

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。