Xcode 4:框架本地化不起作用

Rom*_*ain 7 xcode frameworks localization xcode4 ios-frameworks

我正在使用Xcode 4开发自己的框架,我在两个示例应用程序(一个控制台和Mac OS X Cocoa应用程序)中使用它.

我正在尝试向框架添加本地化,​​所以我创建了两个版本的Localizable.strings文件(en和fr版本),但每次我尝试从示例应用程序打印本地化字符串时,我只会获得其技术名称.例如,在框架代码中包含以下行:

NSLog(NSLocalizedString(@"LOC_TEST", nil));
Run Code Online (Sandbox Code Playgroud)

我只"LOC_TEST"在输出中显示...

然而,本地化与Cocoa应用程序本身一起工作正常(意味着Cocoa应用程序的本地化字符串被正确显示).

本文之后,我尝试在框架的plist文件中添加本地化:

<key>CFBundleLocalizations</key>
<array>
    <string>en</string>
    <string>fr</string>
</array>
Run Code Online (Sandbox Code Playgroud)

但它没有改变任何东西......

我错过了什么?

Pio*_*zia 11

不通过框架选择正确的.strings文件的原因是NSLocalizedString宏:

#define NSLocalizedString(key, comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
Run Code Online (Sandbox Code Playgroud)

Framework的.strings文件的位置不是[NSBundle mainBundle]宏中指定的.

从我看到的,您需要使用NSLocalizedStringFromTableInBundle而是指定框架的捆绑位置.


Ale*_*sco 5

接受的答案是正确的,NSLocalizedString 将无法正常工作,[NSBundle mainBundle]所以我在我的框架中使用了这个宏

#define LOCALIZED_STRING(key) [[NSBundle bundleForClass:[self class]] localizedStringForKey:(key) value:@"" table:nil]
Run Code Online (Sandbox Code Playgroud)