広告

Flutterラボの

プレミアム会員になる

【Flutter】 コピペで簡単にアプリを多言語化する 〜②フロントで導入する〜

2020.12.01

はじめに

こちらの記事は『【Flutter】アプリを多言語化する ①〜パッケージの準備〜』の続きとなっております。まだご覧になっていない方はそちらからお願いいたします。

完成イメージ

画像3

フォルダの作成

libディレクトリにl10nフォルダを作成してください

スクリーンショット 2020-11-30 14.53.41

Strings.dartを作成、編集する

import 'dart:async';

import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';

import 'messages_all.dart';

class Strings {
 static Future<Strings> load(Locale locale) {
   final String name = locale.countryCode.isEmpty ? locale.languageCode : locale.toString();
   final String localeName = Intl.canonicalizedLocale(name);
   // ignore: strong_mode_uses_dynamic_as_bottom
   return initializeMessages(localeName).then((_) {
     Intl.defaultLocale = localeName;
     return new Strings();
   });
 }

 static Strings of(BuildContext context) {
   return Localizations.of<Strings>(context, Strings);
 }

 static final Strings instance = new Strings();

 String get title => Intl.message('Hatchout School', name: "title");
}

initializeMessagesにエラーが出ていると思いますが後に生成するmessages_all.dartによりエラーがなくなります。

Strings.dartを元にintl_messagesファイルを生成する

Flutterラボ
hatchoutschool
FlutterとNuxtに関する知識を発信しています! 動画で学べる学習サイト『Flutterラボ』と『Nuxtラボ』を運営 Flutterラボ:https://flutterlabo.tech/ 広告のECサイトを開発(https://ec-ad.tech/)