Flutterでアプリ名を多言語化する方法
Flutterでアプリ名を変更したい。
Androidでいうと、アプリ情報から見れる部分。変更前は、アンダーバーで設定した名前としてしまっていたが、日本語では「Twitterかんたん検索」、英語では「Twitter Easy Search」という名前にしたい。
twitter_easy_search
でgrepすると、下記ファイルがHitした (package uriは除く)。
- pubspec.yaml
- android/app/src/main/AndroidManifest.xml
- ios/Runner/Info.plist
name: twitter_easy_search
description: A new Flutter project.
Flutter and the pubspec fileによると、nameは、プロジェクト名とのこと。package名となり、import URIにも使用されているため変更すると、全dartファイルのパスを変更する必要があるため、変更しない方が良い。Use lowercase_with_underscores for package names.
という警告が出ることから、このpackage名に使える文字種は、lowercaseとunderscoreのみ。
Androidアプリ名の多言語化
android/app/src/main/res
に以下のディレクトリを作成する。
- values-en
- values-ja
更に、values, values-en, values-ja以下にstrings.xmlを作成する。
それぞれのstrings.xml
には、以下を記述する。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">アプリ名</string>
</resources>
values-ja/strings.xml
には日本語のアプリ名を、values/strings.xml
とvalues-en/strings.xml
には英語のアプリ名を記述する。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Twitterかんたん検索</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Twitter Easy Search</string>
</resources>
最後に、android/app/src/main/res/AndroidManifest.xml
のlabelを次の通り変更する。
<application
android:label="@string/app_name"
念のため、flutter clean; flutter pub get
を実行して再度buildする。
結果
Androidの言語設定を変更して設定が反映されることを確かめる。
日本語
英語
簡体中文
iOSアプリ名の多言語化
参照
余談
Twitter検索を簡単にするためのツールです。良ければ使ってみてください。
Discussion
貴重な記事をありがとうございます。
一つ質問なのですが、[values]ディレクトリ下に作成した
strings.xml
には何を記述するのでしょうか?作成するだけなのでしょうか?
yamada様、返信が遅くなり大変申し訳ありません。
と記載しております。
values/strings.xml
はvalues-ja
,values-en
で設定しなかった言語の時の設定です。今回は、英語名の「Twitter Easy Search」としていますが、これはアプリの多言語化で日英の2つしか対応せず、デフォルト英語としたためです。つまり、中国語等の場合にアプリ名を英語とするためです。もし中国語などにも対応した場合は、それに合わせたvalues-xxxを作成すれば良いはずです。
参考になれば幸いです。
詳細に教えていただきありがとうございます。ためになりました。