是否可以从特定的localized.strings文件中获取本地化字符串,而不是从系统选择的localized.strings文件中获取一次。我不需要更改所有本地化文本,只需更改其中一些。
我想要做的是根据语言首选项定义本地化字符串,还要定位本地化。因此,来自巴西地区的英语用户将获得英语应用程序,但有些文本将特定于该地区,因此我希望用葡萄牙语。
但是来自阿根廷的用户以及使用英语的iPhone将获得英语应用程序,但有些文本将使用西班牙语。
像
这样的东西 NSLocalizedStringFromTable("string.key","pt_BR",nil)
我认为将其发送到表参数会起作用,但它不会查找文件名而不是语言名称。
答案 0 :(得分:7)
您可以使用其他捆绑选择特定语言:
NSString * path = [[NSBundle mainBundle] pathForResource:@"pt-PT" ofType:@"lproj"];
NSBundle * bundle = nil;
if(path == nil){
bundle = [NSBundle mainBundle];
}else{
bundle = [NSBundle bundleWithPath:path];
}
NSString * str = [bundle localizedStringForKey:@"a string" value:@"comment" table:nil];
Swift 3.0:
extension Bundle {
static let base: Bundle = {
if let path = Bundle.main.path(forResource: "Base", ofType: "lproj") {
if let baseBundle = Bundle(path: path) {
return baseBundle
}
}
return Bundle.main
}()
}
let localizedStr = Bundle.base.localizedString(forKey: key, value: nil, table: table)
答案 1 :(得分:3)
也许你想使用NSBundle的localizedStringForKey:value:table:
而不是NSLocalizedString()
。此方法将为您提供指定其他表的机会。
[[NSBundle mainBundle] localizedStringForKey:@"stringKey"
value:defaultString table:tableName];
顺便说一句,不要忘记在Objective-C字符串前面的@
; - )。
答案 2 :(得分:1)
您的意思是NSLocalizedStringFromTable
吗?