OSX - 服务不显示本地化菜单标题字符串(OSX - Service does not show

2019-07-28 20:23发布

我有一个Cocoa应用程序。 这挂接到OSX服务菜单。 我已经创建了三个ServicesMenu.stringsen.lprojzh-Hans.lprojhi-IN.lproj本地化服务菜单标题。 问题是OSX似乎要使用本地化的文本都没有。

的Info.plist(相关部分)

<key>NSServices</key>
<array>
    <dict>
        <key>NSKeyEquivalent</key>
        <key>NSMenuItem</key>
        <dict>
            <key>default</key>
            <string>CreateHere</string>
        </dict>
        <key>NSMessage</key>
        <string>createHere</string>
        <key>NSPortName</key>
        <string>CreateHereFilesService</string>
        <key>NSRequiredContext</key>
        <dict>
            <key>NSApplicationIdentifier</key>
            <string>com.apple.finder</string>
        </dict>
        <key>NSSendFileTypes</key>
        <array>
            <string>public.folder</string>
        </array>
        <key>NSUserData</key>
        <string>create</string>
    </dict>
</array>

ServicesMenu.strings(en.lproj)

/* 
  ServicesMenu.strings
*/

/* default */
"CreateHere" = "Create File Here";

在服务菜单,我可以看到选项CreateHere ,而不是Create File Here

更新

如果这会有所帮助。 下面是输出/System/Library/CoreServices/pbs -dump_pboard

{
    CFPrincipalLocalizations =     (
        English
    );
    CFVendedServices =     (
                {
            NSBundleIdentifier = "com.applegrew.apple.service.CreateHereFiles";
            NSBundlePath = "/Users/applegrew/Library/Services/CreateHereFiles.app";
            NSMenuItem =             {
                default = CreateHere;
            };
            NSMessage = createHere;
            NSPortName = CreateHereFilesService;
            NSRequiredContext =             {
                NSApplicationIdentifier = "com.apple.finder";
            };
            NSSendFileTypes =             (
                "public.folder"
            );
            NSUUID = <199fd7c0 cdd146fb 9a564a93 231b23f9>;
            NSUserData = create;
        }
    );
    CFVersion = 2;
}

不像其它服务(上面没有显示) NSMenuItem确实没有任何进入English 这是否有什么关系,我没有任何English.lproj ,而是我已经en.lproj

Answer 1:

同时增加服务我的应用程序我们今天所面对同样的问题。

一切正常,除了本地化。

通过运行这些命令修复该问题:

/System/Library/CoreServices/pbs -flush

/System/Library/CoreServices/pbs -update

据English.lproj

这是否有什么关系,我没有任何English.lproj,而是我已经en.lproj?

English.lproj已经过时了,而是使用en.lproj。 从苹果的文档:

对于语言名称,您可以使用该ISO 639-1或ISO 639-2约定。 在ISO 639-1规范使用两个字母的代码来识别语言,是识别语言的首选方式。

看看国际化编程主题(语言和区域设置证称号→语言证称号)的更多信息。

https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPInternational/Articles/LanguageDesignations.html#//apple_ref/doc/uid/20002144-SW1



文章来源: OSX - Service does not show the localized Menu Title string