wasabeef / flutter-architecture-blueprints

Flutter Architecture Blueprints is a project that introduces MVVM architecture and project structure approaches to developing Flutter apps.
MIT License
1.61k stars 261 forks source link

Use Intl package for l10n #15

Closed lcdsmao closed 4 years ago

lcdsmao commented 4 years ago

*.g.dartはコミットされたので、それを真似して生成されたファイルもコミットしました

codecov-commenter commented 4 years ago

Codecov Report

Merging #15 into master will increase coverage by 3.29%. The diff coverage is 90.00%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #15      +/-   ##
==========================================
+ Coverage   64.61%   67.90%   +3.29%     
==========================================
  Files          31       34       +3     
  Lines         308      349      +41     
==========================================
+ Hits          199      237      +38     
- Misses        109      112       +3     
Impacted Files Coverage Δ
lib/l10n/messages_en.dart 85.71% <85.71%> (ø)
lib/l10n/messages_ja.dart 85.71% <85.71%> (ø)
lib/l10n/localized.dart 70.00% <87.50%> (+70.00%) :arrow_up:
lib/l10n/messages_all.dart 91.30% <91.30%> (ø)
lib/l10n/message.dart 100.00% <100.00%> (+12.50%) :arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 669be9a...7ca01c5. Read the comment docs.

wasabeef commented 4 years ago

プルリクを作ってくれてありがとうございますグッ (•̀ᴗ•́)و ̑̑

確認したいことがあります。

intl_messages_en.dart, intl_messages_ja.dart というファイル名で作成し、Generate すると messages_messages_en.dart, messages_messages_ja.dart というファイル名で生成されませんか?

% flutter pub pub run intl_translation:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/l10n/message.dart l10n-arb/intl_messages_*.arb
No @@locale or _locale field found in intl_messages_en, assuming 'messages_en' based on the file name.
No @@locale or _locale field found in intl_messages_ja, assuming 'messages_ja' based on the file name.

Case:intl_messages_en.dart, intl_messages_ja.dart

そしてこの場合は、実行時に初期化に失敗しています🤔

E/flutter (31537): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: 'package:app/l10n/localized.dart': Failed assertion: line 18 pos 12: 'initialized': is not true.
E/flutter (31537): #0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39)
E/flutter (31537): #1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
E/flutter (31537): #2      Localized.load (package:app/l10n/localized.dart:18:12)
E/flutter (31537): <asynchronous suspension>
E/flutter (31537): #3      L10nDelegate.load (package:app/l10n/delegate.dart:11:54)

Screen Shot 2020-08-13 at 2 37 45

Case:intl_en.dart, intl_ja.dart

この場合は、正常に実行できます。 Screen Shot 2020-08-13 at 2 40 19

lcdsmao commented 4 years ago

intl_messages_en.dart, intl_messages_ja.dart というファイル名で作成し、Generate すると messages_messages_en.dart, messages_messages_ja.dart というファイル名で生成されませんか?

https://flutter.dev/docs/development/accessibility-and-localization/internationalization#appendix-using-the-dart-intl-tools こちらを参考しました。ファイルの生成はちょっと逆ですね。

ちょっとignoreするつもりのファイルもコミットしたので混乱を招きましたね🙏

wasabeef commented 4 years ago

あ、手順は正しくて、ファイル名が違うかなと思ってます。

現状

  1. message.dart
  2. make extract-arb: intil_messages.arb
  3. copy: intil_messages_en.arb, intil_messages_ja.arb ★ ↓
  4. make gen-intl: messages_all.dart, message_message.dart, messages_message_en.dart, messages_message_jp.dart

多分、3 のファイル名を intil_messages_*.arb だと messagemessage* になるので、そうではなく intl_en.arb にするのが正解ではないかと思いました🤔

intl_*.arb にすることで、messages_*.dart という名前でになりました。 もしかしたら私の手元での生成されているファイルがおかしいのかもしれませんが、、

サンプルプロジェクトなので、アウトプットファイルもコミットしておいたほうが Github 上から読みやすいかなと思って、一応コミットしてます(⁎⁍̴̆Ɛ⁍̴̆⁎)

wasabeef commented 4 years ago

I understand completely.