48

UIBarButtonItem には、Cancel、Done などの識別子があります。ユーザーにはテキストとして表示されます。ユーザーが言語を変更すると、たとえば [キャンセル] ボタンが自動的に翻訳されます。また、開発者として、このボタンにローカライズ文字列を提供する必要はありません。これは、キャンセル、完了、およびその他の文字列が既にローカライズされており、OS に付属していることを意味します。

この文字列をプログラムで取得する方法はありますか?

ローカリゼーション ファイルに文字列を追加したくありません。そして、アクセスできれば最高です。

4

7 に答える 7

13

これを簡単に実現する (確かに疑わしい) 方法の 1 つは、Apple のフレームワーク バンドルのローカリゼーションを直接使用することです。

彼らが提供するものを確認するには、Finder で次のディレクトリを開きます。

/Applications/Xcode/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/System/Library/Frameworks

そして、あなたの場合は、後で./UIKit.framework/English.lproj/Localizable.strings(TextMate で) 開きます。ここには、Apple が「印刷」、「OK」、「オン」、「オフ」などに使用するさまざまな翻訳が表示されます。本当の魔法は、約 35 の異なる言語の翻訳を、 Localizable.strings ファイルを無料で所有できます。

あなたが信じられないほど厚かましく、アプリの将来の安定性に疑問を呈することを気にしない場合は、「独自の Localizable.strings にコピーする」プロセス全体をスキップして、プログラムでソースに直接アクセスできます。

NSBundle *uiKitBundle = [NSBundle bundleWithIdentifier:@"com.apple.UIKit"];
NSString *onText = uiKitBundle ? [uiKitBundle localizedStringForKey:@"Yes" value:nil table:nil] : @"YES";
NSString *offText = uiKitBundle ? [uiKitBundle localizedStringForKey:@"No" value:nil table:nil] : @"NO";

警告: App Store に提出する予定のアプリで、これらのローカライズされたリソースに実際にプログラムでアクセスすることは決してお勧めしません。元の質問に対処する、私が見た特定の実装を示しているだけです。

于 2013-09-04T17:24:39.170 に答える
3

おそらくあなたが探していたものとは正確には違いますが、Mac App Store には「System Strings」と呼ばれる商用アプリがあり、53000 を超える標準のローカライズされた文字列のコレクションを提供すると主張しています。2012 年 11 月 2 日にリリースされました。私はこのアプリや作者とは一切関係ありません。URL はhttps://itunes.apple.com/us/app/systemstrings/id570467776です。

于 2012-11-18T05:21:39.470 に答える
1

あなたが求めているのは、Apple が事前に翻訳された文字列の辞書にアクセスする方法を提供しているかどうかということです。このようなもののために Apple が提供するものはすべて、Docs: Internationalization Programming Topicsにあると思います。

あなたの質問に答えるために、私は彼らが既知の翻訳の辞書/リストを提供するとは思わない. リソースファイルでそれらを定義するLocalizable.stringsか、他の人がコメントで述べているようにして、UIBarButtonItem からタイトルを取得する必要があります (私はリソースファイルを個人的に使用します)。

于 2012-08-31T17:19:03.260 に答える
0

ストーリーボードでベース ローカリゼーションを使用してみませんか? ローカライズしてくれます。

于 2014-04-01T15:07:03.703 に答える