我有一个可本地化的字符串文件,其中包含
"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
将这两种方法结合起来造一个句子......
我怎样才能简单地做到这一点?有什么想法吗?
最佳答案
不要尝试将两个单独的本地化字符串合并为一个字符串。正确的句子结构不容易跨语言推广。有些语言是从右到左的,而有些是从左到右的。此外,某些单词在组合时可能具有不同的含义,尤其是在中文等语言中。
如果你在某些地方单独需要“请”,而在其他一些地方需要单独“再试一次”,并且在其他不同的地方需要单独“请再试一次”,那么对三个不同的字符串使用三个不同的键。
如果只需要“请再试一次”,不需要“请”和“再试一次”,那么就只有“请再试一次”一个键。
话虽如此,所问问题的解决方案是将第三个字符串定义为:
"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");
}
这为您提供了将此字符串翻译成任何其他语言的最大灵 active 。
关于ios - 如何组合 2 个键以实现可本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48140135/