【macOS】.appファイル名とDockの表示名の変更とCFBundleNameのローカリゼーション
はじめに
Dockのアイコンをホバーして表示されるアプリの名前は、.appファイルの名前が使用されます。
ビルドしてできた.appファイルは、DerivedDataに格納されています。
そして、Info.plistのCFBundleName
やCFBundleDisplayName
を変更しても.appファイルの名前は変わらないため、Dockの表示名も変わりません。
Product Name
を変更する
TargetのBuild SettingsのProduct Name
を変更することで、.appファイル名を変更することができます。
しかし、このProduct Name
に濁点や半濁点が含まれていると、ビルドが通りません。
「マイアフリ」のビルドは通りますが、「マイアプリ」は通りません。
これはXcode 10の時代からあるバグのようです。
ちなみに、iOSではこのようなことはありませんでした。
CFBundleName
をローカライズする
Appleのアプリケーションを見てみると、「ミュージック.app」のように、ローカライズされた名前が.appファイル名に使用されているものがあります。
.appファイル名をローカライズするには、Info.plistのCFBundleName
をローカライズします。
ローカライズされたCFBundleName
が、.appファイルの名前に使用されます。
冒頭の通り、Info.plistのCFBundleName
を直接編集しても.appファイル名は変わりません。
それなのに、CFBundleName
がローカライズされている場合には.appファイル名にCFBundleName
が使われるというのは不思議ではありますが、実際、この方法で.appファイル名をローカライズすることができます。
そして、ローカライズされるCFBundleName
には、濁点や半濁点が入っていても大丈夫です。
多言語対応の必要がない場合でも、この方法で.appファイル名を変更することができます。
手順
レガシーなInfoPlist.stringsは使わず、Xcode 15で追加されたString Catalogを使ってInfo.plistをローカライズすることができます。
- ファイルの追加でString Catalogを選択し、InfoPlist.xcstringsの名前で追加します。
- keyに
CFBundleName
を追加し、値を入力します。 - Info.plistに
LSHasLocalizedDisplayName
を追加し、YES
を入力します。
おわりに
ビルドして、反映されていれば成功です。
Discussion