【Flutter】intlパッケージでグローバル対応

Flutter

intlとは

intlパッケージは、Flutterアプリケーションにおける国際化(i18n)と地域化(l10n)を支援するためのライブラリです。このパッケージは、メッセージの翻訳、複数形や性別の対応、日付や数値のフォーマットおよびパース、双方向テキストの処理など、多くの国際化関連の機能を提供します。

intl | Dart package
Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional ...

使い方

インストール

pubspec.yamlファイルに以下の依存関係を追加します。

dependencies:
  intl: ^0.19.0

基本的な使用法

デフォルトロケールの設定

アプリケーション全体のデフォルトロケールを設定するには、以下のようにします。

import 'package:intl/intl.dart';

void main() {
  Intl.defaultLocale = 'ja_JP';
  // アプリケーションの他の初期化コード
}

メッセージの国際化

メッセージを国際化するためには、Intl.messageを使用します。

import 'package:intl/intl.dart';

String greetingMessage(String name) => Intl.message(
  'Hello $name!',
  name: 'greetingMessage',
  args: [name],
  desc: 'Greet the user as they first open the application',
  examples: const {'name': 'John'}
);

void main() {
  Intl.defaultLocale = 'ja_JP';
  print(greetingMessage('Taro'));
}

日付と数値のフォーマット

日付のフォーマット

DateFormatクラスを使用して日付をフォーマットします。

import 'package:intl/intl.dart';

void main() {
  Intl.defaultLocale = 'ja_JP';
  var now = DateTime.now();
  var formatter = DateFormat.yMMMMEEEEd(); // 例: 2024年5月31日金曜日
  print(formatter.format(now));
}

日付のパースも同様に可能です。

import 'package:intl/intl.dart';

void main() {
  Intl.defaultLocale = 'ja_JP';
  var dateStr = '2024年5月31日金曜日';
  var formatter = DateFormat.yMMMMEEEEd();
  DateTime dateTime = formatter.parse(dateStr);
  print(dateTime);
}

数値のフォーマット

NumberFormatクラスを使用して数値をフォーマットします。

import 'package:intl/intl.dart';

void main() {
  Intl.defaultLocale = 'ja_JP';
  var number = 1234.56;
  var formatter = NumberFormat.currency(locale: 'ja_JP', symbol: '¥');
  print(formatter.format(number)); // 例: ¥1,234.56
}

メッセージの抽出と翻訳の使用

メッセージを抽出し、翻訳を使用するためには、intl_translationパッケージを使用します。

  1. メッセージの抽出: pub run intl_translation:extract_to_arb --output-dir=target/directory your_program.dart
  2. 翻訳されたメッセージの生成: pub run intl_translation:generate_from_arb --generated_file_prefix=prefix your_dart_files translated_ARB_files
  3. 生成されたファイルのインポートと初期化: import 'prefix_messages_all.dart'; void main() { initializeMessages('ja').then((_) { print(greetingMessage('Taro')); }); }

双方向テキストの処理

BidiFormatterクラスを使用して双方向テキストを処理します。

import 'package:intl/intl.dart';

void main() {
  var text = 'Hello, שלום!';
  var bidiFormatter = BidiFormatter.RTL();
  print(bidiFormatter.wrapWithUnicode(text));
}

このように、intlパッケージを使用すると、Flutterアプリケーションにおける国際化を容易に実現できます。様々なロケールや言語に対応するためのツールを提供しているため、グローバルなアプリケーションの開発が可能です。

Buy me a coffee!

Flutterアプリ開発
シェアする
sogaをフォローする
タイトルとURLをコピーしました