あなたが英語のプログラマーで、次のようなコードを書くとしたら...
NSLocalizedString(@"Hello", ...)
... en.lproj/Localizable.strings
NSLocalizedString マクロと同じ文字列がありますが、作成しますか?
あなたが英語のプログラマーで、次のようなコードを書くとしたら...
NSLocalizedString(@"Hello", ...)
... en.lproj/Localizable.strings
NSLocalizedString マクロと同じ文字列がありますが、作成しますか?
通常、いいえ、文字列を のキーとして使用する場合は必要ありませんNSLocalizedString
。ただしLocalizable.strings
、コード ファイルを変更せずに、このファイルを使用して UI の文字列を置き換えることができます。
また、実際の文字列を のキーとして使用する必要はありませんNSLocalizedString
。目的のために汎用識別子のセットを使用できます (comment パラメータが役立つように意図されているように)。Localizable.strings
次に、実際の UI 値を入力するファイルが必要です。
まず、Apple ドキュメントは、NSLocalizedString の Foundations Functions Reference でkey
「文字列ファイル内の初期値はになりますkey
。」という質問に答えます。
次に、この質問は私の検索で上位にランクされているので、母国語/ロケールで文字列ファイルを作成する状況を 1 つ追加したいと思います。
私の母国語/ロケールは英語です。私は時々複数形にする必要があるプログラムで生成された単数名詞用の文字列ファイルを作成します。例:
@interface XYZFeline : NSObject
...
@interface XYZCanine : NSObject
...
@implementation XYZAnimalController
NSDictionary *classToWord = @{ @"XYZFeline": @"cat", @"XYZCanine" : @"dog" };
- (NSString *)describeQuantityOfAnimal:(id)animal
{
NSString *typeWord = classToWord[NSStringFromClass(animal)];
NSString *sentence = [NSString stringWithFormat:@"%@ %lu %@.",
NSLocalizedStringFromTable(@"You have", @"phrases.strings", nil),
animal.count,
[animal.count == 1
? NSLocalizedStringFromTable(typeWord, @"nouns.strings", nil)
: NSLocalizedStringFromTable(typeWord, @"nouns-plural.strings", nil),
];
return sentence;
}
英語nouns.strings
用の は存在しませんが、英語のnouns-plural.strings
ファイルは次のようになります。
"dog" = "dogs";
"cat" = "cats";
出力例:
You have 3 dogs.
You have 1 cat.
これにより、コードに言語規則を入れなくても、適切な単数形または複数形の名詞を出力に含めることができます。
注:主語、述語、目的語、名詞の前の形容詞のコード化された文の構造が一部のインドヨーロッパ語に限定されていることは承知していますが、それは別の質問で解決する問題です。