fishinear
fishinear

Reputation: 6336

NSLocalizedString returns text that is defined nowhere

OK, I am officially flabbergasted. I started an IOS project some time ago, and juggled around with localization a bit at the start, which became a bit of a mess, because I did not know how to do that properly yet.

Now I have decided to do the localization from scratch, and therefore threw away all the .strings files, and created a proper multi-language structure. I started with empty Localizable.strings files, and run the app to see whether I cleaned up everything properly. With empty Localizable.string files, I assumed my "NSLocalizedString" calls would simply return the key as text. They don't. They still return the old text that I had in the old .strings files.

Just to be sure, I put an NSLog statement under one of the NSLocalizedString calls, as such:

NSString *text = NSLocalizedString( key, nil );
NSLog(@"key=%@ text=%@", key, text);

Then I search my whole harddisk for the text that was returned. No file on my harddisk contains the string that NSLocalizedString returns. And it is a completely different string than the key, so it cannot be constructed by NSLocalizedString either.

Anybody knows how this can happen? Is the old info cached somewhere by XCode? How can I persuade the tool to use the new Localizable.strings files? Obviously, I have already 'clean'ed and rebuilt the whole project.

Upvotes: 4

Views: 1755

Answers (3)

X Slash
X Slash

Reputation: 4131

Did you also clean build folder? command + option + shift + k or go to product, press option, there will be a clean build folder, usually, resources file are cached, any resources file replacement (file with same file name but different object) might not be detected by XCode

Also, deleting app / resetting simulator does help. Deleted files sometime don't get removed when you redeploy.

Upvotes: 0

Nick Lockwood
Nick Lockwood

Reputation: 40995

If you are testing on the simulator, try resetting the simulator using the "Reset content and settings..." option in the "iOS Simulator" application menu.

When you redeploy a new build of the app, even after a clean build, it often doesn't clear out the cached content of the previously built version.

Upvotes: 0

Johann
Johann

Reputation: 12398

Try to delete the app from the phone, then clean your project and install the app afresh.

If it still doesn't work, check you haven't somehow messed up with the Build Rules (Xcode 4 -> select your target -> tab "Build Rules") There, check if you don't have too many "CopyStringsFile" rules that aren't using "CopyStringsFile". If so you can remove them all but one.

Upvotes: 4

Related Questions