1

Cocoa アプリケーションがあります。これは OSX Service Menu に接続します。、およびサービス メニュー タイトルのローカライズServicesMenu.strings用に3 つ作成しました。問題は、OSX がローカライズされたテキストをまったく使用していないように見えることです。en.lprojzh-Hans.lprojhi-IN.lproj

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ますか?

4

1 に答える 1

0

私のアプリケーションにサービスを追加しているときに、今日同じ問題に直面しました。

ローカリゼーションを除いてすべてが機能します。

次のコマンドを実行して問題を修正しました。

/System/Library/CoreServices/pbs -flush

/System/Library/CoreServices/pbs -update

English.lprojによると

これは、English.lprojがなく、代わりにen.lprojがあるということと関係がありますか?

English.lprojは廃止されました。代わりにen.lprojを使用してください。Appleドキュメントから:

言語の指定には、ISO639-1またはISO639-2のいずれかの規則を使用できます。ISO 639-1仕様は、2文字のコードを使用して言語を識別し、言語を識別するための推奨される方法です。

詳細については、国際化プログラミングトピック(言語とロケールの指定→言語の指定)を参照してください。

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

于 2012-08-17T10:36:06.260 に答える