web-dev-qa-db-ja.com

NSLocalizedStringと形式

この文字列にNSLocalizedStringをどのように使用しますか:

[NSString stringWithFormat:@"Is “%@“ still correct for “%@“ tap “OK“ otherwise tap “Change“ to choose new contact details", individual.contactInfo, individual.name];

StringWithFormatを次の方法で使用する前に使用する場合:

[NSString stringWithFormat:@"%d %@", itemCount, NSLocalizedString(@"number of items", nil)];
36
Peter Warbo
[NSString stringWithFormat:NSLocalizedString(@"Is “%@“ still correct for “%@“ tap “OK“ otherwise tap “Change“ to choose new contact details", @"Query if parm 1 is still correct for parm 2"), individual.contactInfo, individual.name];
69
Hot Licks

特定の文は可変部分でいくつかの言語で異なる順序で構築できるので、[NSString stringWithFormat:]で位置引数を使用する必要があると思います。

NSString *format = NSLocalizedString(@"number_of_items", @"Number of items");

英語の場合、次の文字列がロードされます。

@"Is \"%1$@\" still correct for \"%2$@\" tap \"OK\" otherwise tap \"Change\" to choose new contact details"

そしておそらくフランス語のために何か他のもの(私はフランス語を知らないので翻訳を試みませんが、異なる順序で最初と2番目の引数を持つことができます):

"French \"%2$@\" french \"%1$@\" french"

そして、通常通りに文字列を安全にフォーマットできます:

NSString *translated = [NSString stringWithFormat:format individual.contactInfo, individual.name];
31
trojanfoe

多くのプロジェクトで使用する非常に役立つ定義を1つ追加したいだけです。

この関数をheader prefixファイルに追加しました:

#define NSLocalizedFormatString(fmt, ...) [NSString stringWithFormat:NSLocalizedString(fmt, nil), __VA_ARGS__]

これにより、次のようなローカライズされた文字列を定義できます。

 "ExampleScreenAuthorizationDescriptionLbl"= "I authorize the payment of %@ to %@.";

また、次の方法で使用できます。

self.labelAuthorizationText.text = NSLocalizedFormatString(@"ExampleScreenAuthorizationDescriptionLbl", self.formattedAmount, self.companyQualifier);
12
Alexander

スウィフト

//Localizable.strings

"my-localized-string" = "foo%@ baz";

例:

myLabel.text = String(format: NSLocalizedString("my-localized-string", 
                                       comment: "foo %@ baz"), "bar") //foo bar baz
0
Peter Kreinz