Introduction
忘備録。
やりたいのは Appごとの言語設定をサポートする方法 を Flutter で実現する方法だが、調べても全然情報が出てこない。
色々調べているうちにこうすればできるのでは?というある程度の知見が得られたのでメモしておく。
How to resolve?
必要なのは
- アプリケーション及び iOS が複数言語をサポートしていること
である。
アプリケーションの多言語サポート
正確には、「私(アプリ)は○○語と○○語をサポートしてしています」という宣言であって、実際に多言語対応が完了している必要はない。
この宣言は Xcode の Localization
の設定から実施する。
iOS の優先する言語サポート
言語と地域
の 優先する言語
に表示させたい言語を追加する。
最低でもここに2つ以上の言語が存在しないと、アプリケーションの設定に 優先する言語
が表示されない。
さらに言えば、iOS 側に言語が追加されていても、アプリケーションが対応を宣言していなければ、アプリケーションの設定の言語一覧に表示されないのである。
アプリケーションの設定表示
上記までの設定を実施していれば、iOS の設定ページの下部にアプリケーション設定へのリンクが表示される。
大抵はカメラとかプッシュ通知を使っているアプリを作っているので、アプリケーションの設定が表示されているのが普通だが、それすらない場合は下記のように、設定へのリンクそのものがない。
優先する言語
そして、アプリケーションの設定を開くと、優先する言語
の項目が表示され、サポートしている言語が一覧に表示される。
選択された言語を取得
Flutter 側から選択言語を取得するには下記のようにする。
1 | import 'package:flutter/material.dart'; |
- languageCode
- アプリケーションの設定の
優先する言語
で選択した言語名
- アプリケーションの設定の
- countryCode
- iOS の
言語と地域
の地域
で選択した国名
- iOS の
ここでいう言語名や国名は IANA 言語サブタグレジストリ にある、 language
及び region
に対応する値である。
例えば、日本語の場合は ja
、英語の場合は en
である、
また、日本の場合は JP
、アメリカの場合は US
になる。