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系はこの方法でローカライズできます。
他のアプリ側のローカライズ対応はこちらにまとまっているので、ぜひ確認してみて下さい。
コメント
[…] 【Xcode】Info.plistのローカライズ (ATTダイアログのローカライズ)Info.plistには… […]