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
パッケージを使用します。
- メッセージの抽出:
pub run intl_translation:extract_to_arb --output-dir=target/directory your_program.dart
- 翻訳されたメッセージの生成:
pub run intl_translation:generate_from_arb --generated_file_prefix=prefix your_dart_files translated_ARB_files
- 生成されたファイルのインポートと初期化:
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アプリケーションにおける国際化を容易に実現できます。様々なロケールや言語に対応するためのツールを提供しているため、グローバルなアプリケーションの開発が可能です。