如何组合 2 个键以实现可本地化

How to combine 2 key for localizable

我有一个可本地化的字符串文件,其中包含

"please" = "Please";
"try.again" = "try again.";

在我的应用程序中,我想使用

"please" = "Please";
"try.again" = "try again.";

同时造句=$please + $try.again = Please try again.

所以,我试过这个方法

+ (NSString *)pleaseLocalizedString {
return NSLocalizedStringFromTableInBundle(@"please", @"Localizable",[Bundle bundle], @"Please button");
}

+ (NSString *)tryAgainLocalizedString {
return NSLocalizedStringFromTableInBundle(@"try.again", @"Localizable",[Bundle bundle], @"try again button");
}

但是再用这种方法我就得用stringWithFormat把这两种方法结合起来造一个句子... 我怎样才能简单地做到这一点?有什么想法吗?

请勿尝试将两个单独的本地化字符串合并为一个字符串。正确的句子结构不容易跨语言推广。有些语言是从右到左的,而有些是从左到右的。另外,某些单词组合起来可能会有不同的含义,尤其是在像中文这样的语言中。

如果有些地方需要单独"please",有些地方需要单独"try again",另外一些地方需要单独"please try again",那么用三个不同的key三个不同的字符串。

如果您只需要"please try again",不需要"please"或"try again",那么只有"please try again"一个键。

话虽如此,您所问问题的解决方案是将第三个字符串定义为:

"p.t.a" = "%1$@ %2$@";

然后在其他一些本地化中,右侧可能类似于 "%2$@, %1$@";

那么你会:

+ (NSString *)pleaseTryAgainLocalizedString {
    NSString *format = NSLocalizedStringFromTableInBundle(@"p.t.a", @"Localizable",[Bundle bundle], @"Please Try Again");
    return [NSString stringWithFormat:format, [self pleaseLocalizedString], [self tryAgainLocalizedString]];
}

但是,这又很愚蠢。简单定义:

"please.try.again" = "Please try again.";

和:

+ (NSString *)pleaseTryAgainLocalizedString {
    return NSLocalizedStringFromTableInBundle(@"please.try.again", @"Localizable",[Bundle bundle], @"Please Try Again");
}

这为您将此字符串翻译成任何其他语言提供了最大的灵活性。