如何组合 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");
}
这为您将此字符串翻译成任何其他语言提供了最大的灵活性。
我有一个可本地化的字符串文件,其中包含
"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");
}
这为您将此字符串翻译成任何其他语言提供了最大的灵活性。