Mac-使用pyinstaller本地化plist

时间:2018-09-07 14:08:14

标签: macos localization plist pyinstaller macos-mojave

我有一个使用pyinstaller创建的mac应用。我已经将“ NSCalendarsUsageDescription”,“ NSContactsUsageDescription”添加到Info.plist中。 对于默认的英语,此方法效果很好。

现在,我想添加Infoplist.string文件以本地化以上字符串。我尝试在fr.lproj/Infoplist.string中复制build app/Contents/Resources。 这没用。

我是否需要将此引用添加到.spec文件中的某个位置?还是我想念的其他任何东西。

编辑

我在xcode 10中创建了一个测试应用程序。在Info.plist中添加了“ NSCalendarsUsageDescription” 添加了以下代码

NSArray* dirs = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[NSHomeDirectory() stringByAppendingPathComponent:@"/Library/Calendars"] error:&error];

出现错误

Error Domain=NSCocoaErrorDomain Code=257 "The file “Calendars” couldn’t be opened because you don’t have permission to view it." UserInfo={NSUserStringVariant=(
    Folder
), NSURL=file:///Users/insync/Library/Calendars, NSFilePath=/Users/insync/Library/Calendars, NSUnderlyingError=0x600000c5c870 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}

根据https://developer.apple.com/videos/play/wwdc2018/718/,Mac Mojave应该给出用户同意提示,要求用户授予使用日历的权限。

我已经签署了此应用并尝试过。还是一样的错误。

1 个答案:

答案 0 :(得分:0)

最后找到了问题。 添加不带引号的NSCalendarsUsageDescription可以解决问题。不知道为什么它不能更早地正常工作。

关于已编辑的零件,我们需要从功能->沙箱中启用日历访问。然后只有应用程序可以访问日历。