-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: slangを使った多言語化 #285
fix: slangを使った多言語化 #285
Conversation
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## main #285 +/- ##
=======================================
Coverage 25.10% 25.10%
=======================================
Files 16 16
Lines 247 247
=======================================
Hits 62 62
Misses 185 185
Continue to review full report in Codecov by Sentry.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
packages/flutter_app/README.md
Outdated
@@ -35,7 +35,7 @@ Required only `--release` mode. | |||
## How to use | |||
### Localizations | |||
```dart | |||
final l10n = L10n.of(context); | |||
final i18n = Translations.of(context); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
jsonファイルを編集して build_runner build すると、文言ファイルが生成されるような運用になるでしょうか?
- JSONファイルを作成/編集
dart run build_runner build -d
もしくはdart run slang
(build_runnerより速いので開発中はこちらがおすすめとのこと)を実行するstrings.g.dart
ファイルが生成される
このstrings.g.dart
をimportすると各所で使用できるようになります👀
JSONファイルの置き場所、生成ファイルのアウトプット場所や名前は設定ファイルを作成することでカスタマイズできます。
build_runner
を使用する場合は build.yaml
を、 dart run slang
を実行する場合は slang.yaml
を設定ファイルとして作成します。
今回dart run slang
を使っていたのでslang.yaml
を設定ファイルとして作成しました。
slangパッケージREADMEでも
t
が使われていたので、Translations
を意味するt
で良さそうですね👌
こちらもt
に書き換えます🙏🏻
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
詳しくありがとうございます!
なるほど、 build_runner で他の生成ファイルとまとめて生成もできるけど、 dart run slang
で文言ファイルのみ個別に生成できてこちらの方が速いんですね🚀
flutter_app/README.md
の #Localizations
欄に dart run slang
を使用することの追記をお願いしたいです🙇
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
承知いたしました!
追記します✍️
|
||
extension ThemeModeExt on ThemeMode { | ||
String title(AppLocalizations l10n) { | ||
String title(Translations i18n) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
承知いたしました!
t
に書き直します📝
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
マイグレーションすると、すべて1単語ずつの階層構造になるんですね✏️
キャメルケースの大文字になってるところを区切りに階層になるようです📝
JSONファイルだけでなくyamlファイルも対応しているようですが、ARBからyamlへもmigrate可能ですか?
ドキュメントにARBからJSONへのmigrateしか書いていないということと、arb_migration_test.dart
というテストコードを見たのですがjsonファイルへのmigrateテストしか書いていないことから今はyamlは対応していないと思われます(migrate_arb.dart
が少し長かったのでテストのみ見ました....👀)
home.page のようなところは homePage とまとめたい気がしますが、後からjsonファイルを編集すれば可能ですか?
はい!JSONファイルを自分で編集してからコマンドを叩いて、strings.g.dart
を生成するという流れになるので可能です。
私もまとめた方がいいかなと思う箇所がいくつかあったので(app.bar
など)、このあたりは自分でJSONファイルを修正しようかと思います📝
json(yaml)ファイルの分割は可能ですか?それとも各言語1ファイルにまとめないといけないでしょうか?
こちらもできるようで、以下のstructuring-featuresという項目のネームスペースがこれにあたるかと思います👀
https://pub.dev/packages/slang#structuring-features
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
arb_migration_test.dartというテストコードを見たのですがjsonファイルへのmigrateテストしか書いていないことから今はyamlは対応していないと思われます
パッケージのテストコード見れて素晴らしいですね👍
なるほど、そしたらJSONファイルからyamlファイルにしたいときは、GitHub CopilotかChatGPTにお願いして変換してもらうのが捗りそうですね🚀
はい!JSONファイルを自分で編集してからコマンドを叩いて、strings.g.dartを生成するという流れになるので可能です。
良かったです。柔軟に設定できそうですね🙌
こちらもできるようで、以下のstructuring-featuresという項目のネームスペースがこれにあたるかと思います👀
リンクありがとうございます!なるほど、ファイル名を変えたりフォルダ作ったりしてnamespaceを確保できるんですね!
これは良さそう✨
回答ありがとうございます、勉強になりました!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixes #283
🔗 Issue リンク
closes #283
🙌 やったこと
✍️ やらないこと
✅ 動作確認
スクリーンショット
その他
appBar
という単語がapp
とbar
に分かれてしまっていたりと、分けない方が良さそうな箇所もあるので書き換えてもいいかもしれないと思っています。"notFoundPageReturnButtonLabel"
というキーがあったのですが、jsonに変換する際に単語ごとに分解されるので"return"
というキーができてしまい、Dartの予約語のreturn
とかぶってしまって上手く動きませんでした。そのため、"notFoundPageBackButtonLabel"としましたが、分かりにくかったら教えてください。