首页 > 解决方案 > 如何本地化授权权限描述?

问题描述

我正在尝试使用自定义描述设置权限。调用时AuthorizationCopyRights(),我希望看到我的本地化字符串,但我看到了密钥kDescriptionNSTextField我可以通过在窗口中显示本地化字符串来确认我的应用程序已正确设置为本地化。我已经看过苹果的这份技术文档,但似乎我做错了什么?这是我在 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!";

非常感谢任何帮助或建议!

标签: objective-cmacos

解决方案


推荐阅读