🌍

String Catalogsをやってみた

2023/09/20に公開

前提

Ventura 13.5.2
Xcode 15.0
Xcodeのプロジェクトに英語と日本語が設定してある。

ファイルを作成

New File...

String Catalogを見つける。

名前はデフォルトのままで進めることにする。


ファイルが作成された。
プロジェクトはもともと英語と日本語が設定されていたので、.xcstringsファイルにもすでに英語と日本語がセットされている。

項目を増やす

.xcstringsファイルを選択状態にする。

+ボタンで項目を増やす。

英語の方を3項目にした

日本語の方にも(勝手に)同じように追加される

キーの文字を設定

英語の方にDistanceなどの文字を設定する

ここで、キーの項目は アルファベット順に整列する

日本語の方も自動で設定される。このとき日本語の方にあるDefault Localizationにも文字が設定されている(英語の方はキーの文字しか設定していないのだが)。まあよい。

中身の文字を設定

ひとつひとつ設定する。

中身を設定したので日本語の方に緑のマークが出た。

実行

実行して「出来ました」と言ってこの記事も終わる予定であったがエラーが出た。エラーというのはそういうものである。

Localizable.stringsファイルとの 同名の 共存は不可らしい。
「Localizable」という名前が被りましたな。

Localizable.stringsファイルは削除して無事正常に動作しました。

おまけ

デバッグ実行時に.xcstringsファイルを見に行ったが見つからない場合は、自動で.xcstringsファイルにその項目が追加される模様。しかもその理由で追加されたものは そのままでは削除できない 。ただXcodeのアップデートで仕様は変わるもしれない。

次のものは勝手に追加される

Text("0")
TextField("0", text: $input1)

以下のようにすると追加されない。

Text(verbatim: "0")
TextField(String("0"), text: $input1)

すでに自動で追加されてしまったものを消す方法は

  1. 項目を選んで、右のプロパティを設定するエリアでmanualを選び、マイナスボタンで削除する
  2. 使っているところを一旦削除してからシミュレータ等で走らせる
  3. 上のText(verbatim: "0")のように書き換えてからシミュレータ等で走らせる

このうち、1と2は確実のようだが、3が出来たり出来なかったりするので環境によるのかどうかわからない。
まあ、1のやり方でやればいいと思う。

参考

Localizable.stringsからLocalizable.xcstringsへ移行するやりかたもあるようです。
https://www.fuwamaki.com/article/494

String Catalogsのその他の記事です。

https://zenn.dev/samekard_dev/articles/436b1adb3f7890

Discussion