我正在使用
Xcode 4开发自己的框架,我在两个示例应用程序(控制台和Mac OS X Cocoa应用程序)中使用它.
我正在尝试向框架添加本地化,所以我创建了两个版本的Localizable.strings文件(en和fr版本),但每次我尝试从示例应用程序打印本地化字符串时,我只得到它的技术名称.例如,在框架代码中包含以下行:
NSLog(NSLocalizedString(@"LOC_TEST",nil));
我只在输出中显示“LOC_TEST”…
然而,本地化与Cocoa应用程序本身一起工作正常(意味着Cocoa应用程序的本地化字符串被正确显示).
在this article之后,我尝试在框架的plist文件中添加本地化:
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>fr</string>
</array>
但它没有改变任何东西……
我错过了什么?
解决方法
不通过框架选择正确的.strings文件的原因是在NSLocalizedString宏中:
#define NSLocalizedString(key,comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
Framework的.strings文件的位置不是宏中指定的[NSBundle mainBundle].
从我看到的,您需要使用NSLocalizedStringFromTableInBundle来指定框架的包位置.