Apple watch bizarre localization issue

Hi, I guess my issue is kind of the opposite of what I usually read about when folks localize their apps (but their localized strings don't show up) - I localized an app for iPhone, did the same for the Apple Watch portion of that app and all strings show up localized but my problem is, the watch always displays the localized strings, even when I set the watch back to English! The issue does not repro for the iPhone app portion; switching iOS lang back and forth switches the UI of my app as expected.


A bit more in detail to help you be sure you understand: I base-developed in English, added German strings with NSLoc macros, switch both iOS and watch to German, and all works as expected. Then removed the app from iOS and the watch, set lang of both iOS and watch back to English, re-run from XC and the watch OS shows in English as expected, but the app UI still shows in German. (To test out the issue even further, I also added French localized strings - still iPhone switches languages of my app no problem, but the watch now always shows the French strings, even when I switch the watch to English *or* German!


I checked all configuration bits and pieces, and don't see what could be causing this.


Any idea what is going on here..? I did all this in XC 8.3; I'll try my luck with the current XC 9 beta but if you have any insights or ideas I'd love to know. Thx!

Accepted Reply

Turns out after talking to Apple support that my InterfaceController for the watch extension needed a Localizable.strings (Base) file - why, is beyond me because it's not needed for the iPhone portion in the same project and works fine there. One could say that base strings file makes sense but then at least XC should update that file upon exporting strings - and it doesn't, so manual work is needed and this is a great way to get out of sync with base and loc strings.

Replies

OK so I used the opportunity and ported my app from XC 8.3 to XC 9 - because of some complications it turned out to be easier to more or less build it from scratch and only copy over code, then re-add localization: same result - iPhone app works as expected, whereas watch app is now always showing the localized strings - even when the watch is set to US English. This issue reproduces on both watch sim and my actual watch.

What the heck am I doing wrong here..?? Some Loc guy from the Apple team perhaps..? I spent an entire day on this now 😟

Turns out after talking to Apple support that my InterfaceController for the watch extension needed a Localizable.strings (Base) file - why, is beyond me because it's not needed for the iPhone portion in the same project and works fine there. One could say that base strings file makes sense but then at least XC should update that file upon exporting strings - and it doesn't, so manual work is needed and this is a great way to get out of sync with base and loc strings.

I added the Localizable.strings (Base) file but still didn't work for me.

I have similar problem.


However, I created Localizable.strings for different languages.

I checked that Localizable.strings (English) is effectively read (I modified one value, it shows on simulator).

But I cannot create a Localized.string (Base) from XCode?


Should I create it "manually" in Finder ? Or what do I miss ?


Posted in another thread a fix that may be a "viable" work around

- Create the different localization files: English, French, Spanish, Chinese…

- localize all elements here

- then, open the English files

- copy the content of the language you want to test after the present english text (that will supersede it).

- To come back to english, delete this added foreign text.


Et voila, turned around a critical miss of XCode for Watch !

I tested, it works "well"


I just get an error log, without apparent consequence

Watch Extension[3520:334638] [default] -[SPRemoteInterface _interfaceControllerClientIDForControllerID:]:2140: ComF: clientIdentifier for interfaceControllerID:DC00003 not found


But that is good enough to test localization on Watch simulator.

Removing the extra text clears the error.

I'm having the same issue. I'm just not going to localize the Apple Watch for now.