我有一个使用静态库(SL)的项目。在那个SL中,有一些我想要本地化的字符串,项目包括所有的本地化文件。将所有文本翻译存储在同一文件中时,本地化工作正常。问题是我想将SL字符串与其他字符串分开。我试图将两个不同的* .strings文件(Localizable.strings和Localizable2.strings)放在感兴趣的语言文件夹中但是没有用。我也尝试使用两个* .strings文件具有相同的名称(Localizable.strings)但具有不同的路径。它也没用。似乎只支持一个本地化文件,对吧?有谁能建议这样做的好方法?我正在使用SDK 3.2 beta 2。
答案 0 :(得分:15)
无法将其捆绑在静态库中,但您可以创建新的捆绑包,例如“ MyStaticLibraryName.bundle ”,放入所有本地化并使用下面的代码“ NSLocalizedString ()强>”。您需要做的就是:添加一个静态库和资源包。
NSString *MyLocalizedString(NSString* key, NSString* comment) {
static NSBundle* bundle = nil;
if (!bundle) {
NSString* path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MyStaticLibraryName.bundle"];
bundle = [[NSBundle bundleWithPath:path] retain];
}
return [bundle localizedStringForKey:key value:key table:nil];
}
答案 1 :(得分:6)
将具有相同名称的文件引入一个项目永远不会起作用,因为在生成的应用程序中,它们最终都位于同一位置。 (Xcode不保留您的目录结构。)
但您可以将部分本地化放入Localizable2.strings,然后使用:
NSLocalizedStringFromTable(@“key”,@“Localizable2”,@“”)
答案 2 :(得分:2)
为静态库创建可本地化的字符串,然后将该字符串文件放在“YourLibraryResource”文件夹中。 重命名文件夹“YourLibraryResource.bundle”。
现在,您还将此捆绑包与库一起包含在项目中。然后使用abuharsky给出的代码。