我的项目中有两个目标:target1和target2。他们每个人都使用他们的localizable.strings资源进行本地化。但是他们的localizable.strings文件在90%时是相同的。
我想要实现这样的行为:
使用通用字符串创建常规可本地化文件
为每个目标创建可本地化的文件,使用不同的特殊字符串(e.x. app_name)
应用程序应首先在target的localizable.strings文件中搜索字符串,如果此字符串不存在,请在公共文件中搜索
我尝试为每个目标添加localizable.string文件,然后创建常见的localizable.string文件(具有target1和target2的成员资格),但应用程序仅使用公共文件:(
有人知道如何解决它吗?
谢谢你的帮助!
答案 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
}
}