🌍

String Catalogsが勝手に項目を増やした!消せない!

2023/09/20に公開

Xcode15からの新機能String Catalogを使ってみたところ少しハマったので世に公開する。

前提

Venture 13.5.2
Xcode 15.0
SwiftUIのコードで説明

ハマりパターン

Localizable.xcstringsファイルをプロジェクトに追加してある状態で、下のコードを実行するとLocalizable.xcstringsに自動で項目が追加される。(もちろん初めの状態でLocalizable.xcstringsに"A"が存在していないとき)

Text("A")

この理由で追加されたものはLocalizable.xcstringsファイルの マイナスボタンで消せない

解決策(ソースコード)

Text(verbatim: "A")

のように書き換える。これは"A"をローカライズ(言語環境に合わせて変更)する処理を飛ばし、"A"をそのまま表示する。

解決策(Localizable.xcstrings)

で、Localizable.xcstringsファイルの方に項目が残っているので、Xcodeの右のエリアで手動に切り替えてマイナスボタンで削除する。

問題が起きる同様のコード

TextField("0", text: $input)

の場合も同じことになるが、TextFieldverbatim: 引数を持たないので次のようにするとよかった。

TextField(String("0"), text: $input)

そもそも吐き出さない設定

ターゲットの設定の Use Compiler to Extract Swift Strings をNoにするとLocalizable.xcstrings吐き出さない。

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

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

Discussion