objective-c - 如何本地化授权权限描述?
问题描述
我正在尝试使用自定义描述设置权限。调用时AuthorizationCopyRights()
,我希望看到我的本地化字符串,但我看到了密钥kDescription
。NSTextField
我可以通过在窗口中显示本地化字符串来确认我的应用程序已正确设置为本地化。我已经看过苹果的这份技术文档,但似乎我做错了什么?这是我在 Cocoa 应用程序中编写的示例代码来演示它:
#define kRightName "TryingToLocalizePrompt"
- (IBAction) button : (id) sender
{
AuthorizationRef authRef;
OSStatus error = errAuthorizationSuccess;
AuthorizationItem oneRight = { NULL, 0, NULL, 0 };
AuthorizationRights rights = { 1, &oneRight };
AuthorizationFlags flags = kAuthorizationFlagDefaults |
kAuthorizationFlagInteractionAllowed |
kAuthorizationFlagPreAuthorize |
kAuthorizationFlagExtendRights;
if (error == errAuthorizationSuccess) {
error = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, flags, &authRef);
}
if (error == errAuthorizationSuccess) {
error = AuthorizationRightSet(
authRef,
kRightName,
@kAuthorizationRuleAuthenticateAsAdmin,
(__bridge CFStringRef) @"kDescription", // <---- Not localizing?
NULL, // I tried passing CFBundleGetMainBundle()
NULL // I have also tried (__bridge CFStringRef) @"Localizable"
);
}
if (error == errAuthorizationSuccess) {
oneRight.name = kRightName;
error = AuthorizationCopyRights(
authRef,
&rights,
NULL,
kAuthorizationFlagExtendRights | kAuthorizationFlagInteractionAllowed,
NULL
);
}
// Testing that localizable.strings file is correctly set into build:
[self.label setStringValue: NSLocalizedString(@"kDescription", NULL)];
error = AuthorizationRightRemove(authRef, kRightName);
}
这是我的 Localizable.strings 文件:
/*
Localizable.strings
AuthRight
Created by Brandon Fong on 6/19/21.
*/
"kDescription" = "Hello World!";
非常感谢任何帮助或建议!
解决方案
推荐阅读
- python - 继承类的顺序在 Python 中很重要吗?
- javascript - Javascript 中非常奇怪的行为。代码乱码
- node.js - Nodejs读取csv文件并插入到mongodb
- css - 如何在另一个 mat-card 中包含 mat-card。输出不对齐
- javascript - 如何使用firestore orderBy但也添加未定义的值
- matplotlib - Matplotlib ValueError:num 必须是 1 <= num <= 20,而不是 0
- c++ - 实现一个使用指针打印数组的函数
- luxon - Luxon.js 获取给定日期范围内每个月的天数
- json - 除 appsettings.json 外保持不变的应用程序的 Azure Devops 版本
- windows - 来自音乐库的图像未显示在 UWP 应用程序中