【Xcode】Info.plistのローカライズ (ATTダイアログ・アプリ名・Dictionaryのローカライズ)

Info.plistには画面表示されるテキストを入力する可能性があります。
特に重要なテキストの事が多いので、ローカライズが必須となります。

なお、最近のXcodeはデフォルトではInfo.plistは表示されません。
プロジェクトのターゲットのInfoタブにあります。
どちらも同じ手順でローカライズ出来るので問題ありません。

おおよそLocalizable.stringsと同じなので、
Localizable.stringsを使ったことがある場合はすぐに理解できると思います。

プロジェクト設定

プロジェクトのLocalizationsを設定します。

Project→Info→Localizationsを確認しましょう

デフォルトはBaseとEnglishがあります。
今回は日本語と英語の対応とするのでJapaneseを追加します。

また、この状態ではローカライズ対応外の国ではEnglishとなります。

Info.plistのローカライズ

今回はApp Tracking Transparencyダイアログに表示されるテキストのローカライズをします。
またInfo.plistファイルは表示されていない状態で行っています。
アプリ名についてはInfo.plistのKeyが異なるだけです。

まずはATTダイアログに表示される項目を追加テキストを入力します。
InfoタブにAdd RowしてPrivacy – Tracking Usage Descriptionを追加して下さい。
アプリ名はBundle display nameです。
元々入力されているので追加の設定はありません。

テキストを入力したらStringsファイルを追加します。
名前はInfoPlist.stringsにして下さい。

左手のLocalizeボタンを押して、出てきたダイアログのLocalizeボタンを押します。
この時、Englishのままで構いません。後から他の言語の追加を行います。

先程のLocalizeボタンの所にチェックボックスが出ているので、
必要な言語にチェックを追加します。

あとはこのstringsファイルにKey-Value形式で書いていけばOKです。

今回はATTなのでNSUserTrackingUsageDescriptionがKeyとなります。
※アプリ名の場合はCFBundleDisplayNameをKeyにして下さい。

NSUserTrackingUsageDescription = "Tracking is used to display personalized ads!!!";
NSUserTrackingUsageDescription = "トラッキングはパーソナライズした広告の表示に使用します!!!";

英語の方がInfo.plist側と違う事を確認する為に文末を!!!にしました。
最後に適当にATTダイアログを出して確認してみましょう。

import SwiftUI
import AppTrackingTransparency

struct ContentView: View {
    
    var body: some View {
        VStack {
            Button("ATT"){
                ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
                })
            }
        }
        .padding()
    }
}

今回はDevelopment LocalizationがEnglishなので、対応外の言語もEnglishのものが使われています。
なお、このテキストはアプリの言語設定ではなく、本体の言語設定のものが表示されます。(アプリ名もです)
テストの時には注意して下さい。

ユニークではないKeyの場合の翻訳(Dictionaryの場合)

Info.plistにはユニークでないKeyもあります。
例えばHome Screen Shortcut Items関連などです。

ホームアイコンにショートカットを追加するこのKeyは、
中身がDictionaryになっており追加するショートカットの数だけ中身が増えます。

この中のTitleやSubtitleはユニークではなく重複するKeyとなります。
このような場合はLocalizable.stringのように文字列に対して翻訳する値を割り当てます。

	<key>UIApplicationShortcutItems</key>
	<array>
		<dict>
			<key>UIApplicationShortcutItemIconSymbolName</key>
			<string>name</string>
			<key>UIApplicationShortcutItemSubtitle</key>
			<string>SubtitleLabel</string>
			<key>UIApplicationShortcutItemTitle</key>
			<string>TitleLabel</string>
			<key>UIApplicationShortcutItemType</key>
			<string>type</string>
		</dict>
	</array>
"SubtitleLabel" = "サブタイトル";
"TitleLabel" = "タイトル";

最後に

今回はATTダイアログのローカライズを行いました。
Info.plist系はこの方法でローカライズできます。

他のアプリ側のローカライズ対応はこちらにまとまっているので、ぜひ確認してみて下さい。

コメント

  1. […] 【Xcode】Info.plistのローカライズ (ATTダイアログのローカライズ)Info.plistには… […]

タイトルとURLをコピーしました