iosswiftlocalizationswiftuixcode11.1

How to implement localization in Swift UI


Can anybody help me? I can't find any description of the localization in Swift UI. Can anyone please give advice or better an example of how to localize for example Text()?


Solution

  • When you look at documentation for Text you can see that it takes LocalizedStringKey not a String into its initializer:

    init(_ key: LocalizedStringKey, tableName: String? = nil, bundle: Bundle? = nil, comment: StaticString? = nil)
    

    It makes localizing very straightforward. All you have to do is:

    When you select you Localizable.strings you will see that it contains files for the original language and the language you have just added. That's where you put your translations, i.e. key - localized text pairs.

    If you have a text like this is your app:

    Text("Hello World!")
    

    You have to now add to your Localizable.strings your translations:

    for your base language:

    "Hello World!" = "Hello World!";
    

    and for your second language (in this case German):

    "Hello World!" = "Hallo Welt!";
    

    To see your previews localised you can define them like this:

    struct ContentViewView_Previews: PreviewProvider {
    
        static var previews: some View {
            ForEach(["en", "de"], id: \.self) { id in
                ContentView()
                    .environment(\.locale, .init(identifier: id))
            }
        }
    }