为Xcode中的目标添加常规和特定的可本地化文件

时间:2016-03-17 10:39:00

标签: ios xcode swift

我的项目中有两个目标:target1和target2。他们每个人都使用他们的localizable.strings资源进行本地化。但是他们的localizable.strings文件在90%时是相同的。

我想要实现这样的行为:

  1. 使用通用字符串创建常规可本地化文件

  2. 为每个目标创建可本地化的文件,使用不同的特殊字符串(e.x. app_name)

  3. 应用程序应首先在target的localizable.strings文件中搜索字符串,如果此字符串不存在,请在公共文件中搜索

  4. 我尝试为每个目标添加localizable.string文件,然后创建常见的localizable.string文件(具有target1和target2的成员资格),但应用程序仅使用公共文件:(

    有人知道如何解决它吗?

    谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

也许你可以创建一个预构建脚本来连接全局字符串中的特定字符串。

或者另一种解决方案,您可以创建一个函数,首先在全局搜索,然后在特定文件中搜索(这是一个示例,未经测试):

- (NSString*) localizedString:(NSString*) key {
    //search in global file
    NSString *transcription = NSLocalizedString(key, "");
    if ([transcription isEqualToString:key]) {
        //search in specific file
        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"specific_file" ofType:@"strings"];
        NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:filePath];
        return [dict objectForKey:key];
    }

    return transcription;
}

答案 1 :(得分:1)

感谢lafalex,这里是swift 2的代码:

if let path = NSBundle.mainBundle().pathForResource("specific_file", ofType: "strings"), 
   let dict : NSDictionary = NSDictionary(contentsOfFile: path) {
   if let localizedString = dict.objectForKey(key) as? String {
       return localizedString
   }
}