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:
- create a new file of type "Strings File", call it
Localizable.strings
- select the new file and navigate to File Inspector in the right hand side panel and click Localize...
- go to your project file to the Localizations section and add another language to the list - Xcode will create localization files for you
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))
}
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…