如果您是一名英语程序员并编写您的代码,例如...
NSLocalizedString(@"Hello", ...)
...您是否创建了一个en.lproj/Localizable.strings
与 NSLocalizedString 宏中的字符串相同的字符串?
如果您是一名英语程序员并编写您的代码,例如...
NSLocalizedString(@"Hello", ...)
...您是否创建了一个en.lproj/Localizable.strings
与 NSLocalizedString 宏中的字符串相同的字符串?
一般来说,不,如果您使用字符串作为NSLocalizedString
. 但是您随后可以使用该Localizable.strings
文件替换 UI 中的字符串,而无需更改代码文件。
此外,您不必使用实际的字符串作为 的键NSLocalizedString
,您可以使用一组通用标识符来达到目的(就像注释参数旨在提供帮助一样)。然后您需要该Localizable.strings
文件来填写真实的 UI 值。
我找到的关于本地化的最佳教程是 Ray Wenderlich:How to localize an iphone app
首先,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
for English 不存在,但英文文件nouns-plural.strings
如下所示:
"dog" = "dogs";
"cat" = "cats";
示例输出:
You have 3 dogs.
You have 1 cat.
这将允许您在输出中获得正确的单数或复数名词,而无需在代码中添加语言规则。
注意:我知道我的主语、谓语、宾语和名词前形容词的编码句子结构仅限于某些印欧语系,但这是另一个问题需要解决的问题。