[SwiftUI] TextにImageが埋め込まれていてもlocalizeする

公開:2021/02/17
更新:2021/02/17
1 min読了の目安(約600字TECH技術記事

次のようなテキストがあるとします。

Text("The symbol \(Image(systemName: "globe")) represents the earth.")

これを日本語にlocalizeするには、次のように行います。変数展開の部分を丸々%@で置き換えるだけです。

localizable.strings
"The symbol %@ represents the earth." = "%@という記号は地球を表しています。";

複数のImageが埋め込まれていても問題ありません。

Text("The symbol \(Image(systemName: "globe")) represents the earth and the symbol \(Image(systemName: "sun")) represents the sun.")
localizable.strings
"The symbol %@ represents the earth and the symbol %@ represents the sun." = "%1$@という記号は地球を表していて、%2$@という記号は太陽を表しています。";

かなり悩んだのですが、最終的には非常に簡単な解決法が見つかってよかったです。