I have an app where all the user facing strings use NSLocalizableString(). I've never localized an app so I watched WWDC 2018 video New Localization Workflows in Xcode 10. From there I created a new project, a Single View App. Base localization is on by default. On the storyboard I added one UILabel and constrained it in the center of the view. I added an outlet to it in the view controller:
@IBOutlet weak var label: UILabel!
And I set its text in viewDidLoad:
label.text = NSLocalizedString("Hello World", comment: "")
Build and run and it works fine.
Now I add a localization. I select the project and add Spanish.
Then I Export For Localization... on the Editor menu. I open the file through this path:
es.xcloc -> LocalizedContents -> es.xliff
In there I find the "Hello World" key and I change the value to "Hola Mundo" and save the file.
...
<file original="MyProject/en.lproj/Localizable.strings" datatype="plaintext" source-language="en" target-language="es">
<header>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="10.1" build-num="10B61"/>
</header>
<body>
<trans-unit id="Hello World">
<source>Hola Mundo</source>
<note>No comment provided by engineer.</note>
</trans-unit>
</body>
</file>
...
Then back to Xcode and Import Localizations. Here's the first problem:
Why is this a Mismatched Translation?
I go ahead and import anyway. I edit the scheme as follows:
When I run I get "HELLO WORLD". It's uppercase because that's the localization debugging indicating there's no translation.
What am I missing?