• Tags: swiftui, xcode
  • Vladimirs Nordholm

SwiftUI dynamic localized strings

Introduction

Xcode allows for translations that integrate into SwiftUI components, with dynamic data, described in [LOCALIZATION].

NOTE: In Xcode 15, Apple introduced the “String catalog” format, which is the recommended way to handle translations, described in [STRING-CATALOG]. The principles in this post still apply, but targets primarily the “Strings file (Legacy)” format.

Data in localized strings

// Localizable.strings (sv)

"Your fruit is %@" = "Din frukt är %@";
"You have %lld fruits" = "Du har %lld frukter";

You can provide these strings directly into most components, and have the text be translated.

// … in code

Text("Your fruit is \(fruitName)")
Text("You have \(fruitCount) fruits")

The variable needs to be interpolated with \(variable).

Required interpolation and type

If you provide the wrong type for the substitution, or do not interpolate at all, no translation will be made.

Text("You have \("123") fruits") // wrong: incorrect type
Text("Your fruit is Orange") // wrong: no interpolation

References

[LOCALIZATION]
Apple Inc., Localization, Apple Developer Documentation
[STRING-CATALOG]
Apple Inc., Localizing and varying text with a string catalog, Apple Developer Documentation