Iphone sdk - 从特定的localized.strings文件中获取本地化文本

hta*_*oya 10 iphone localization localized ios

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

我想要做的是从语言首选项定义本地化字符串,但也定位本地化.因此,来自巴西地区的英语用户将获得英语应用程序,但有些文本将特定于该地区,所以我想用葡萄牙语.

但是来自阿根廷的用户以及使用英语的iPhone将获得英语应用程序,但有些文本将使用西班牙语.

就像是

 NSLocalizedStringFromTable("string.key","pt_BR",nil)
Run Code Online (Sandbox Code Playgroud)

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

SoV*_*Va_ 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];
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)


Mun*_*ndi 3

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

[[NSBundle mainBundle] localizedStringForKey:@"stringKey" 
  value:defaultString table:tableName];
Run Code Online (Sandbox Code Playgroud)

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