在 Xcode 中为目标添加通用和特定的可本地化文件
Posted
技术标签:
【中文标题】在 Xcode 中为目标添加通用和特定的可本地化文件【英文标题】:Adding general and specific localizable files for targets in Xcode 【发布时间】:2016-03-17 10:38:59 【问题描述】:我的项目中有两个目标:target1 和 target2。他们每个人都使用他们的 localizable.strings 资源进行本地化。但是它们的 localizable.strings 文件 90% 是相同的。
我想实现这样的行为:
使用通用字符串创建通用可本地化文件
使用不同的特殊字符串(例如 app_name)为每个目标创建可本地化的文件
应用程序应首先在目标的localizable.strings文件中搜索该字符串,如果该字符串不存在,则在公共文件中搜索它
我尝试为每个目标添加 localizable.string 文件,然后创建公共 localizable.string 文件(具有 target1 和 target2 的成员资格),但应用程序只使用公共文件:(
有人知道怎么解决吗?
感谢您的帮助!
【问题讨论】:
【参考方案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;
【讨论】:
【参考方案2】:感谢 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
【讨论】:
以上是关于在 Xcode 中为目标添加通用和特定的可本地化文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的 podfile 中为我的 Xcode 项目指定多个目标?
如何在 iOS 中为通用应用程序添加新的两个 XIB 文件?
Xcode 为通用应用程序构建名称后缀不正确的 nib 文件