我有一个包含
的可本地化字符串文件"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
来组合这两种方法来制作一个句子......
我怎样才能轻松实现这一目标?有什么想法吗?
答案 0 :(得分:4)
不要尝试将两个单独的本地化字符串组合成一个字符串。正确的句子形成不容易在语言中推广。有些语言是从右到左,有些是从左到右。此外,某些单词在组合时可能具有不同的含义,尤其是在中文等语言中。
如果您需要"请"在某些地方分开,你需要"再试一次"在其他一些地方分开,你需要"请再试一次"在其他不同的地方分别使用三个不同的琴键作为三个不同的琴弦。
如果您只需要"请再试一次"并且你不需要"请"或者"再试一次"单独,然后只有一个键为"请再试一次"。
话虽如此,问题的解决方案是将第三个字符串定义为:
"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");
}
这使您可以最灵活地将此字符串翻译成任何其他语言。