iOS本地化:为母语创建字符串文件?

时间:2013-10-19 19:05:28

标签: iphone ios xcode string localization

如果您是英语程序员,请编写代码,如......

NSLocalizedString(@"Hello", ...)

...你创建一个en.lproj/Localizable.strings虽然在那里有与NSLocalizedString宏中相同的字符串吗?

3 个答案:

答案 0 :(得分:2)

通常,不,如果您使用字符串作为NSLocalizedString的键,则不需要。但是,您可以使用Localizable.strings文件替换UI中的字符串,而无需更改代码文件。

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

答案 1 :(得分:0)

我发现的最佳本地化教程是Ray Wenderlich:How to localize an iphone app

答案 2 :(得分:0)

首先,Apple文档在Foundations Functions Reference for NSLocalizedString读取&#34时回答您的问题;字符串文件中key的初始值为key。"

其次,这个问题在我的搜索中排名很高,所以我想添加一种情况,其中我以我的母语/语言环境创建一个字符串文件。

我的母语/语言环境是英语。我为程序生成的单数名词创建了一个字符串文件,我有时需要复数。例如:

@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.

这样您就可以在输出中输入正确的单数或复数名词,而无需在代码中添加语言规则。

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