10

是否可以从特定的本地化.strings 文件中获取本地化字符串,而不是从系统选择的本地化.strings 文件中获取,只有一次。我不需要更改所有本地化文本,只需更改其中的一些。

我想要做的是从语言偏好和本地化定义本地化字符串。因此,来自巴西的具有英语语言的用户将获得英语应用程序,但某些文本将特定于该地区,因此我希望它们使用葡萄牙语。

但是来自阿根廷的用户,也使用英语的 iPhone 将获得英语的应用程序,但一些文本将是西班牙语。

就像是

 NSLocalizedStringFromTable("string.key","pt_BR",nil)

我认为将其发送到table参数会起作用,但它没有寻找文件名而不是语言。

4

3 回答 3

8

您可以使用不同的捆绑包来选择特定的语言:

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];

斯威夫特 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)
于 2013-06-18T14:27:43.013 回答
3

也许您想使用 NSBundlelocalizedStringForKey:value:table:而不是NSLocalizedString(). 此方法将使您有机会指定不同的表。

[[NSBundle mainBundle] localizedStringForKey:@"stringKey" 
  value:defaultString table:tableName];

顺便说一句,不要忘记你@在 Objective-C 字符串前面 ;-)。

于 2012-05-31T21:36:39.667 回答
1

你的意思是NSLocalizedStringFromTable

记录在这里:http: //developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#jumpTo_112

于 2012-05-31T21:43:35.190 回答