🌟

Flutterでアプリ名を多言語化する方法

2022/05/23に公開3


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
pubspec.yaml
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.xmlvalues-en/strings.xmlには英語のアプリ名を記述する。

values-ja/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
 <string name="app_name">Twitterかんたん検索</string>
</resources>
values/strings.xml, values-en/strings.xml
<?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を次の通り変更する。

AndroidManifest.xml
 <application
        android:label="@string/app_name"

念のため、flutter clean; flutter pub getを実行して再度buildする。

結果

Androidの言語設定を変更して設定が反映されることを確かめる。

日本語

英語

簡体中文

iOSアプリ名の多言語化

https://naoya-ono.com/flutter/localize-app-name/
参照

余談

Twitter検索を簡単にするためのツールです。良ければ使ってみてください。
https://play.google.com/store/apps/details?id=com.tardigrader_app.twitter_easy_search

Discussion

yamadayamada

貴重な記事をありがとうございます。
一つ質問なのですが、[values]ディレクトリ下に作成したstrings.xmlには何を記述するのでしょうか?
作成するだけなのでしょうか?

tardigradertardigrader

yamada様、返信が遅くなり大変申し訳ありません。

values-ja/strings.xmlには日本語のアプリ名を、values/strings.xmlとvalues-en/strings.xmlには英語のアプリ名を記述する。

と記載しております。values/strings.xmlvalues-ja, values-enで設定しなかった言語の時の設定です。

今回は、英語名の「Twitter Easy Search」としていますが、これはアプリの多言語化で日英の2つしか対応せず、デフォルト英語としたためです。つまり、中国語等の場合にアプリ名を英語とするためです。もし中国語などにも対応した場合は、それに合わせたvalues-xxxを作成すれば良いはずです。

参考になれば幸いです。

yamadayamada

詳細に教えていただきありがとうございます。ためになりました。