简体   繁体   中英

NSLocalizedString doesn't work

I want to use NSLocalizedString in my app but it always failed. What i do is:

  • Define 3 Localizations in Project Properties (See screenshot bellow)
  • Create a new file: Resource Strings File
  • Check in the app bundle if file.strings is there

Then I use NSLocalizedStrings as follow but it doesn't work!

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application
    NSString *v1 = NSLocalizedString(@"MyWindow", nil);

    //NSString *v1 = [[NSBundle mainBundle] localizedStringForKey:(@"MyWindow") value:@"" table:nil];
    [label setStringValue:v1];
}

In my 3 .strings files I define the below key/value: "MyWindow" = "Ma Fenetre";

Normally, my label should display "Ma Fenetre" and not "MyWindows" You can download an example project here and tell me where is the issue .

Bellow the content of Resources folder in my app bundle :

DerivedData om$ find test/Build/Products/Debug/test.app/Contents/Resources/
test/Build/Products/Debug/test.app/Contents/Resources/
test/Build/Products/Debug/test.app/Contents/Resources//de.lproj
test/Build/Products/Debug/test.app/Contents/Resources//de.lproj/File.strings
test/Build/Products/Debug/test.app/Contents/Resources//en.lproj
test/Build/Products/Debug/test.app/Contents/Resources//en.lproj/File.strings
test/Build/Products/Debug/test.app/Contents/Resources//fr.lproj
test/Build/Products/Debug/test.app/Contents/Resources//fr.lproj/File.strings
test/Build/Products/Debug/test.app/Contents/Resources//MainMenu.nib

Thanks Elfoiros

NSLocalizedString uses Localizable.strings file by default. Change your File.strings name and try again.

For every time you make changes in .Strings file you need to clean your project and remove application from device and simulator. This is the only way to develop Localised application. Have a happy coding.!

As Adam stated, NSLocalizedString uses Localizable.strings for a lookup table. To specify a custom table, use:

NSLocalizedStringFromTable(@"MyWindow", @"File");

Documentation

Need to take care over case sensitive file names: Localizable.strings not localizable.strings. Simply rename in Finder, delete reference in Xcode project and add Localizable string back to the project. Then make sure the appropriate Localization boxes are selected in the file inspector. Don't know if there's a better slicker process.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM