NSLocalizedString不起作用

Elf*_*ros 3 xcode cocoa-touch localization objective-c ios

我想在我的应用程序中使用NSLocalizedString,但它总是失败.我做的是:

  • 在项目属性中定义3个本地化(见下面的截图)
  • 创建一个新文件:Resource Strings File
  • 如果file.strings在那里,请检查应用程序包

然后我使用NSLocalizedStrings如下,但它不起作用!

- (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];
}
Run Code Online (Sandbox Code Playgroud)

在我的3 .strings文件中,我定义了下面的键/值:"MyWindow"="Ma Fenetre";

通常,我的标签应显示"Ma Fenetre"而不是"MyWindows"您可以在此处下载示例项目并告诉我问题在哪里.

Bellow我的应用包中的Resources文件夹的内容:

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
Run Code Online (Sandbox Code Playgroud)

谢谢Elfoiros

Ada*_*dam 33

NSLocalizedStringLocalizable.strings默认使用文件.更改您的File.strings名字,然后重试.


Pra*_*iya 9

每次在.Strings文件中进行更改时,都需要清理项目并从设备和模拟器中删除应用程序.这是开发本地化应用程序的唯一方法.有一个快乐的编码.!


Eva*_*ski 8

正如亚当说,NSLocalizedString使用Localizable.strings一个查找表.要指定自定义表,请使用:

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

文档