🌍
String Catalogsが勝手に項目を増やした!消せない!
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)
の場合も同じことになるが、TextField
は verbatim:
引数を持たないので次のようにするとよかった。
TextField(String("0"), text: $input)
そもそも吐き出さない設定
ターゲットの設定の Use Compiler to Extract Swift Strings
をNoにするとLocalizable.xcstrings吐き出さない。
String Catalogsのその他の記事です。
Discussion