问题描述
我有一个Cocoa应用程序。这将挂接到OSX服务菜单。我为创建了三个 ServicesMenu.strings / code>和 hi-IN.lproj 用于本地化服务菜单标题。
Info.plist(相关部分)
< key> NSServices< / key>
< array>
< dict>
< key> NSKeyEquivalent< / key>
< key> NSMenuItem< / key>
< dict>
< key>默认< / 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=这里;
在服务菜单上,我可以看到选项 CreateHere 而不是创建文件
更新
如果这有帮助。以下是 / 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;
}
与其他服务c> NSMenuItem 没有任何条目 English 。这与我有什么关系, code> English.lproj ,而我有 en.lproj ?
在向我的应用程序添加服务时遇到了同样的问题。
$ b
通过运行这些命令修复了这个问题:
/ System / Library / CoreServices / pbs - flush
/ System / Library / CoreServices / pbs -update
.lproj
English.lproj已过时,请改用en.lproj。从Apple文档:
查看
I have a Cocoa application. This hooks up into OSX Service Menu. I have created three ServicesMenu.strings for en.lproj, zh-Hans.lproj and hi-IN.lproj for localizing the Service Menu Title. The problem is OSX does seem to be using the localized text at all.
Info.plist (relevant portion)
<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";
On the Services Menu I can see the option CreateHere instead of Create File Here.
Update
If this helps. Here is the output of /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; }
Unlike for other services (not shown above) NSMenuItem does does not have any entry English. Does this have anything to do with, that I do not have any English.lproj, instead I have en.lproj?
Faced the same problem today while adding service to my application.
Everything works except the localizations.
Fixed the issue by running these commands:
/System/Library/CoreServices/pbs -flush /System/Library/CoreServices/pbs -update
According English.lproj
English.lproj is obsolete, use en.lproj instead. From Apple docs:
Look at Internationalization Programming Topics (Language and Locale Designations → Language Designations) for more info.
这篇关于OSX - 服务不显示本地化的菜单标题字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!