Mac OS Xでパスのローカライズされた名前を取得したい。 以下のコードをさまざまなソースから一緒に冠した。mac os x:ローカライズされたパスを取得
私のMacは現在フランス語のロケールに設定されており、フランス語を主言語に設定して再起動し、端末のLANG環境変数をfr_FR.UTF-8にリセットしていますが、フォルダ(例:/ Users/bll/Music)。ロケールが機能しているようですが、ローカライズされた名前はファインダー(Musique)に と表示されます。
私はここで何が欠けていますか?
(私はMacのプログラマーではなく、目的のプログラマーではなく、フランス語を話さないでください)。
編集:現在のコードで更新し、Info.plistファイル
(私はちょうどこの時点でそのことについて心配するつもりはない、組込み/文字で表示名の問題を理解してください)。
コード:
#import "Foundation/NSObject.h"
#import "Foundation/NSFileManager.h"
#import "Foundation/NSProcessInfo.h"
#include <stdio.h>
#include <stdlib.h>
#include <MacTypes.h>
int
main (int argc, const char * argv[])
{
NSFileManager *fm = [NSFileManager defaultManager];
NSString *path = @"";;
NSString *npath = @"";
NSArray *npathcomp;
NSUInteger count;
if (argc > 1) {
NSArray *arguments = [[NSProcessInfo processInfo] arguments];
path = arguments[1];
npath = path;
if (*argv[1] == '/') {
npathcomp = [fm componentsToDisplayForPath:path];
count = npathcomp.count - 1;
npath = [[npathcomp subarrayWithRange:NSMakeRange (1,count)]
componentsJoinedByString:@"/"];
}
}
printf ("/%s\n", [npath UTF8String]);
return 0;
}
のInfo.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleAllowMixedLocalizations</key>
<true/>
<key>CFBundleDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleDisplayName</key>
<string>localizeddirname</string>
<key>CFBundleExecutable</key>
<string>localizeddirname</string>
<key>CFBundleGetInfoString</key>
<string>Copyright 2017 Brad Lanam, Walnut Creek CA USA</string>
<key>CFBundleIdentifier</key>
<string>org.bdj.localizeddirname</string>
<key>CFBundleName</key>
<string>localizedirname</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>LSMinimumSystemVersion</key>
<string>10.6.0</string>
</dict>
</plist>
コンパイル:
cp -p localizeddirname.plist Info.plist
clang \
-v \
-mmacosx-version-min=10.9 \
-framework Cocoa \
-o localizeddirname \
-Wl,-sectcreate,__TEXT,__info_plist,Info.plist \
localizeddirname.m
rm -f Info.plist
もしあなたが助けることができれば、ユーザーが設定した言語に関係なく、いつでも/ "/ Users/bll/Music"の音楽フォルダにアクセスできます(翻訳された名前は便宜上ユーザーに表示されますが、ディレクトリパスは変更なし)。 this [post](https://stackoverflow.com/a/28550564/4418092) – JMM
'displayNameAtPath'は、アプリケーションがサポートする言語のローカライズされた名前を返します。 XcodeとTextEditの開いているダイアログを比較してください。 – Willeke
"...あなたのアプリがサポートしている言語のためのもの":プログラムがすべての言語をサポートすることを示すためにプログラムを変更するには? –