iOS の家計簿アプリをつくる(ローカライズ編)

advent_calendar アドベントカレンダー

はじめに

こちらは個人開発アプリができるまで by am10 Advent Calendar 2024の 13 日目の記事です。

13 日目はローカライズについてです。
日本語と英語に対応します。

設定ファイル作成

PROJECT > Info > Localizations > + で Japanese を追加します。

1

New File frome Template ... から Localizable.xcstrings を追加します。

2

一度ビルドすると下記のような値が自動で設定されます。あとはここにキーと値を設定して View で呼び出すだけです。

3

キーはこのまま使ってもいいのですが日本語は同じ単語でも英語は違う単語を使いたいという場合もあるのですべての文言にスネークケース(hoge_fuga のようなやつ)でキーを追加します。
英語がわからない場合は ChatGPT に聞きます。

年画面

年画面からローカライズしていきます。
データ取得ボタンなどは下記のように直接キーを指定していきます。

ローディングのメッセージなど String 型を渡す必要がある場合は下記のように渡します。

項目・サブ項目名も下記のようにローカライズします。

エラーのメッセージも同様に下記のようにローカライズします。

金額表示は下記のように Text に直接設定してやると 3 桁カンマ区切りになったのですが String にする場合は少し工夫が必要です。

PriceFormatter.swift を作成し下記のように実装します。

合計金額表示を下記のように修正します。

price_value の設定は下記です。

月画面

月画面の対応もほぼ年画面と同じです。少し工夫がいりそうなのが月選択用のピッカーです。
下記のように修正して DateFormatter の monthSymbols を表示するようにします。これでローカライズした各月が表示されます。

登録画面

登録画面も同様に対応します。気をつけるのは ReceiptOCRViewController の読み取りボタンくらいだと思います。
下記のようにエラーなどと同じ対応が必要です。

これで画面のローカライズは完了です。
Localizable.xcstrings を確認してみます。

4

ん?謎の %@(%@)がいます。%@(%@)のキーを選択して右矢印をクリックして使用箇所にとびます。
MonthListView と RegisterView の下記が自動で追加されているようです。

下記のように修正し自動で追加されないようにします。これで今度こそ完成です!

アプリ名

次にアプリ名とカメラなどの権限周りのローカライズをします。
New File frome Template ... から InfoPlist.xcstrings を追加します。

TARGETS > General > Identity の Display Name にアプリの英語名を入力します。

5

一度ビルドすると下記のように自動で値が設定されます。

6

デフォルト値の英語はここで入力できないので日本語のみ入力し英語は TARGETS > Info から「Privacy - NFC Scan Usage Description」などに入力します。
もう一度ビルドします。
もし State に NEED REVIEW など表示されている場合は右クリックをして Mark as Reviewed で更新していきます。

7

めんどくさい場合はファイルを右クリックして Open As > Source Code で JSON 形式でファイルを開きます。

8

option + cmd + F で置換機能を開き上に「"state" : "needs_review",」下に「"state" : "translated",」を入力して All をクリックで置換してしまえば一気にできます。

9

これでローカライズは完成です!

おわりに

これで言語設定が日本語の場合は日本語表示それ以外の場合は英語表示になりました。

いよいよアプリは完成に近づいてきています。
明日はダークモードに対応します。

Amazon.co.jp

コメント

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