Iphone 静态库中字符串的本地化

Iphone 静态库中字符串的本地化,iphone,xcode,localization,static-libraries,Iphone,Xcode,Localization,Static Libraries,我有一个使用静态库(SL)的项目。在这个SL中,有几个字符串我想本地化,项目包括所有本地化文件。将所有文本翻译存储在同一个文件中时,本地化工作正常。问题是我想把SL字符串和其他字符串分开。我曾尝试将两个不同的*.strings文件(Localizable.strings和Localizable2.strings)放在感兴趣的语言文件夹中,但没有成功。我还尝试使用两个同名的*.strings文件(Localizable.strings),但路径不同。它也不起作用。似乎只支持一个本地化文件,对吗?有

我有一个使用静态库(SL)的项目。在这个SL中,有几个字符串我想本地化,项目包括所有本地化文件。将所有文本翻译存储在同一个文件中时,本地化工作正常。问题是我想把SL字符串和其他字符串分开。我曾尝试将两个不同的*.strings文件(Localizable.strings和Localizable2.strings)放在感兴趣的语言文件夹中,但没有成功。我还尝试使用两个同名的*.strings文件(Localizable.strings),但路径不同。它也不起作用。似乎只支持一个本地化文件,对吗?有人能提出一个好的方法吗?我使用的是SDK 3.2 beta 2。

不可能将其捆绑在静态库中,但您可以创建新的捆绑包,如“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];
}

为静态库生成可本地化的字符串,然后将该字符串文件放在“YourLibraryResource”文件夹中。 重命名文件夹“YourLibraryResource.bundle”


现在,您还可以将此捆绑包与库一起包含在项目中。然后使用abuharsky给出的代码

将同名文件放在一个项目中是行不通的,因为在生成的应用程序中,它们最终都位于同一位置。(Xcode不会保留您的目录结构。)

但您可以将部分本地化放在Localizable2.strings中,然后使用:


NSLocalizedStringFromTable(@“key”、@“Localizable2”、@“”)

要使genstring使用此设置,必须使用-s参数。