覆盖基本localizable.strings文件

时间:2014-04-14 14:42:33

标签: ios file localizable.strings

是否有办法在项目中为多个目标设置一个base localizable.strings文件,并为每个目标设置第二个localizable.string文件,该文件将覆盖并将单个值附加到基本文件中?

修改

我希望我的应用有两个.strings文件 - Localizable.string和Override.strings。如果在OverrideLocalizable.strings中找不到字符串Title.Welcome,那么我希望该应用程序在Localizable.strings中搜索Title.Welcome。实质上,将Localizable指定为回退,但默认情况下使用OverrideLocalizable.strings。

2 个答案:

答案 0 :(得分:5)

以下是我找到的解决方案:

NSString *PSILocalizedString(NSString *key, NSString *comment)
{
    return NSLocalizedStringWithDefaultValue(key,
                                             @"OverrideLocalizable",
                                             [NSBundle mainBundle],
                                             NSLocalizedString(key, nil),
                                             comment);
}

这样做是为OverrideLocalizable.strings搜索名为key的文件。如果在key中找不到OverrideLocalizable.strings的值,则会在localizable.strings中搜索key。默认情况下,NSLocalizedString(key, nil)会搜索localizable.strings

非常简单优雅的解决方案

答案 1 :(得分:0)

对于遇到此问题的4个快速用户...

    func get_overridable_string_for_key(string_key: String)-> String{
    return NSLocalizedString(string_key, tableName: "OverrideLocalizable", bundle: Bundle.main, value: NSLocalizedString(string_key, comment: ""), comment: "");
}