1

如果您是一名英语程序员并编写您的代码,例如...

NSLocalizedString(@"Hello", ...)

...您是否创建了一个en.lproj/Localizable.strings与 NSLocalizedString 宏中的字符串相同的字符串?

4

3 回答 3

2

一般来说,不,如果您使用字符串作为NSLocalizedString. 但是您随后可以使用该Localizable.strings文件替换 UI 中的字符串,而无需更改代码文件。

此外,您不必使用实际的字符串作为 的键NSLocalizedString,您可以使用一组通用标识符来达到目的(就像注释参数旨在提供帮助一样)。然后您需要该Localizable.strings文件来填写真实的 UI 值。

于 2013-10-19T19:09:05.017 回答
0

我找到的关于本地化的最佳教程是 Ray Wenderlich:How to localize an iphone app

于 2013-10-19T20:39:02.040 回答
0

首先,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.stringsfor English 不存在,但英文文件nouns-plural.strings如下所示:

"dog" = "dogs";
"cat" = "cats";

示例输出:

You have 3 dogs.
You have 1 cat.

这将允许您在输出中获得正确的单数或复数名词,而无需在代码中添加语言规则。

注意:我知道我的主语、谓语、宾语和名词前形容词的编码句子结构仅限于某些印欧语系,但这是另一个问题需要解决的问题。

于 2014-08-22T14:40:44.953 回答