Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

xcode localized string not loaded

I have met a strange problem with the localized strings. I have only a 'Localizable.strings' in my 'en.lproj' folder and it works fine. all the strings are shown on device. but the next time i compile it and run, it shows only the ID of the strings. even if i change nothing and only click on build&debug. and the next time it works fine again and next time again shown with IDs.

so does anyone knows why this is happening? it's kind of annoying that i always need to build twice.

like image 337
boreas Avatar asked Jul 15 '11 15:07

boreas


People also ask

How do I use localized strings in SwiftUI?

Use it in custom SwiftUI views to make them ready for localization. Enable the "Use Compiler to Extract Swift Strings" build setting to extract LocalizedStringKeys from code when exporting for localization in Xcode. Format your strings to internationalize your code, and style them with Markdown.

What does localized string mean?

There are two categories of localized strings: the strings included in the installation package's UI, common to every MSI file. the strings included in your project, that are particular to the current project: the name of your application, file names, registry values, properties etc.

How do I create a localizable string in Xcode?

To add Localizable. strings file, go to File->New->File , choose Strings File under Resource tab of iOS, name it Localizable. strings , and create the file. Now, you have a Localizable.

What is localized string key SwiftUI?

The key used to look up an entry in a strings file or strings dictionary file.


1 Answers

My SOLUTION is at bottom:

I've been running into the same problem: Alternating runs yield correct, then incorrect translations (only for English though).

Adding "-NSShowNonLocalizedStrings YES" as an argument to the app yielded:

Localizable string "MyKey" not found in strings table "Localizable" of bundle CFBundle

So, I tried loading the key file directly from the bundle as a string and dumping it. Well, the times it did NOT work correctly, it was displaying a bunch of built-in iOS messages. So, I went to the APP file that was built, opened the package contents, and viewed the en.lproj/Localizable.strings file...and voila!!! The file had been filled with Apple iOS key/value pairs. On the next build, it was filled as expected.

Of course, this has nothing to do with the encoding of the files (which should be UTF-16). I have not been able to locate anything with mention of this specific problem.

MY SOLUTION:

I copied the contents of the legitimate english Localizable.strings file FROM THE APP PACKAGE (not from my source) into an XML file (when compiled, the .strings file are converted into XML) and added to my project. I then loaded this file into a dictionary at startup, and if the call to NSLocalizedString returned the key instead of the value, I did a lookup on the dictionary I loaded. In theory, you could do this for all languages, but I was only having the problem with english.

Yes, it's not the answer to the problem, but it's a workaround.

like image 131
GtotheB Avatar answered Oct 23 '22 02:10

GtotheB