プログラムでテキストを割り当てるとき、NSLocalizedString(....)を使うことができますが、IBで直接テキストを書いていると(UILabelに)どのようにローカライズしますか?IB [iPhone SDK]でNSLocalizedStringを使用するには?
答えて
複数のローカライズされたnibファイルを作成する方法もあります。これは、ローカリゼーションのニーズが非常に単純で、開発終了時に専門のソフトウェアローカリゼーション担当者にリソースを渡すだけの場合に最適です。
開発中にローカライズしていて、UIが急速に変化している場合は、各UI tweekが各ローカルバージョンのペン先に複製される必要があるため、重複したnibファイルに大きな苦労があります。これを避けるには、通常はビューコントローラの-viewDidLoad
メソッドで、ローカライズされた文字列の設定を処理するために、ビューコントローラにコードを記述する必要があります。ローカライズされたテキストを持つすべてのコントロールがIBOutlet
であることを確認し、それらをIBのビューコントローラに配線します。
- (void)viewDidLoad {
[super viewDidLoad];
hello.text = NSLocalizedString(@"Hello", @"Hello label");
world.text = NSLocalizedString(@"world", @"world label");
// ... etc
}
後のあなたの-init
メソッドが実行されるまで、あなたのペン先でオブジェクトが完全に作成されていないので、あなたは-viewDidLoad
でビューセットアップのこのタイプの操作を行います。その後、あなたのビューコントローラの-viewDidLoad
は次のようになります。 -viewDidLoad
は-init
の後に表示されますが、ビューが表示される前に実行されます。
ロケールごとに複数のバージョンの.nibファイルを作成できます。それらの文字列を簡単に編集できるツールもあります。アップルはこれにpretty good documentationを持っています。
これは大きく複雑なトピックです。良い開始場所はIntroduction to Internationalization Programming Topicsであり、またPreparing Your Nib Files for Localization
私は解決策も探していましたが、必ずしもiPhoneではなくXCode/IBが一般的です。すべての参考文献は、状態を示すために内部的にキーが必要であり、ローカライズされた文字列を、そのキーに対応するラベルまたはテキストセルに表示する必要があるという事実を扱っていませんでした。私は最初のステップで標準的なアプローチを見つけることができませんでした。共有ユーザーのキーのキー値がデフォルトで表示され、そのキー値のローカライズされた文字列がラベルに表示されます。
私は、多くのコーディングを必要とせず、ibのバインディングに準拠したソリューションを見つけました。
まず、Localizable.stringsファイルを提供します。
"MyKeyValue" = "Localized display label";
これで、NSLocalizedString(aKeyValue、nil)でキー値をローカライズできます。
NSLocalized Stringを扱うバリュートランスフォーマが見つかりませんでした。 だから私はローカライズされた文字列にキーの値を変換するために、クラスKeyToLocalizedStringTransformerを作成:
@interface KeyToLocalizedStringTransformer : NSValueTransformer {}
@implementation KeyToLocalizedStringTransformer
+ (Class)transformedValueClass
{
return [NSString class];
}
+ (BOOL)allowsReverseTransformation
{
return NO;
}
- (id)transformedValue:(id)aValue
{
NSString *NLString = [NSString stringWithString:NSLocalizedString(aValue,nil)];
return NLString;
}
製造するための最終ステップは、例えばトランスを登録することです
NSValueTransformer *transformer = [[KeyToLocalizedStringTransformer alloc] init];
[NSValueTransformer setValueTransformer:transformer forName:@"KeyToLocalizedStringTransformer"];
今、あなたはあなただけNSUnArchiveFromDataというように見ていた場合(単純に名前を入力テキストフィールドまたはセルのバインディングの値の変圧器を使用することができます...:+初期化中)
私はここで新しいと "評判がない"ため、あなたは共有ユーザーのデフォルトコントローラー、コントローラーキー:値、モデルキーパス:MyStateKeyと値へのバインディングを想像する必要があります説明したように変圧器。
結果として、ラベル付きのnl複製されたペン先で何もしないでください。単に、Localizable.stringsの文字列を翻訳してください。
iOS 7 & Xcode 5では、可能な限りNSLocalizedStringを使用しないでください。好ましい方法は「ベースローカライゼーション」と呼ばれ、ストーリーボードを通して機能します。それはあなたに多くの仕事を節約します。あなたが 'ベースローカリゼーション'のためのgoogleの場合は、あなたに行くための十分なチュートリアルを見つける
- 1. IB(iPhone/iPad)でジェスチャー認識を使用するには?
- 2. iphoneポップアップカスタムサイズでIB
- 3. iPhone SDKを使用してPDFドキュメントを作成するには?
- 4. iPhoneカスタムUIView用にIBでUIButtonを作成
- 5. iPhone SDK用OAuth
- 6. iPhone SDKでAVMutableCompositionを使用してビデオをマージする方法
- 7. iphone sdkでTBXMLを使用して文字列を解析するには?
- 8. NSDictionaryを使用したクラッシュエラー - Iphone SDK
- 9. CoreLocationを使用したiPhone SDKのマルチタスク
- 10. iPhone/iPad SDKでMicrosoftフォーム認証Webサービスを使用するには?
- 11. SBJSON iPhone SDKを使用してデータをJSON形式に変換するには?
- 12. 私はGEOLOQIをiphone sdkにどのように使用できますか?
- 13. NSLocalizedStringを辞書のキーとして使用できますか?
- 14. NSLocalizedStringは私
- 15. iPhone SDK互換性__IPHONE_OS_VERSION_MIN_REQUIREDの使用
- 16. iPhone SDK:クラスをローカライズするには?
- 17. iPhone SDK 2.2.1をXcode 3.2用に入手するには?
- 18. iPhone 3.0のIBで表示サイズを変更する方法
- 19. iPhone SDKを使用してePubからビデオを再生するには?
- 20. iPhone 3.0 SDKとiPhone 2.0 SDK
- 21. IBを使用してUISegmentedControlをNavigationBarに追加する
- 22. SDKを使用してローカルのiPhone番号を取得する
- 23. Button(iPhone SDK)を使用してテキストボックスの値を設定する
- 24. iPhone SDK - タッチを使用して画像を削除する
- 25. iPhone SDKユーザーがIBで作成したタブバーの項目を並べ替える方法
- 26. 普遍的なアプリケーション(iphoneとipad)でzbar sdkを使用する方法は?
- 27. Facebook JavaScript SDKを使用するには?
- 28. iPhoneのSDKは
- 29. iPhone SDKは、アクセス
- 30. iPhone SDKは、デリゲート