本地化不适用于 Xcode 6 和动态库 (jnilib)

Localization doesn't work with Xcode 6 and dynamic library (jnilib)

在我的公司,我需要本地化我们的 jni-library。 我们的主要应用程序是用 Java 和 JNI we are working with CEF3

编写的

(我知道,有一个 JCEF,但我需要解决 CEF3 的问题)

jnilib 像这张图片那样处理主菜单

我需要将此菜单本地化,英语和德语。

我做了什么:

但是每次我只得到键作为值。 如果我打印出 BundlePath,我会得到以下路径:(jdk home dir)

*/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin*

如果我将 en.lproj 和 de.lproj 复制到 bin 目录(用于测试目的),仍然没有使用本地化。

我不知道该怎么办:/

我正在使用 Xcode 6.3

使用 MacOsX 10.10.3

编辑: 代码被截断了,那也行不通。

    NSString *path = @"pathtobundle/JNILIB.bundle";
    bundle = [[NSBundle bundleWithPath:path] retain];

    NSString *tmp = NSLocalizedStringFromTableInBundle(key, nil, bundle, nil);

jnilib.bundle结构:

/JNILIB.bundle
   /en.lproj
      /Localized.strings
   /de.lproj
      /Localized.strings

我找到了解决方案。

这里的 link 对我帮助很大:static library and internationalization

这是我的代码:

NSString *MyLocalizedString(NSString* key, NSString* comment)
{

static NSBundle* bundle = nil;
if (!bundle) {

    NSString *path_tmp = @"pathToBundle/JNILIB.bundle";

    NSBundle *libraryBundle = [NSBundle bundleWithPath:path_tmp];
    NSString *langID        = [[NSLocale preferredLanguages] objectAtIndex:0];

    NSLog(@"preferredLanguage: %@", langID);

    NSString *path          = [libraryBundle pathForResource:langID ofType:@"lproj"];

    NSLog(@"libraryBundle : %@", path);

    bundle                  = [[NSBundle bundleWithPath:path] retain];
}

return [bundle localizedStringForKey:key value:@"Can't be found!" table:@"Localized"];
}

捆绑包结构:

foo.bundle/
   Contents/
      Resources/
         en.lproj/
            Localized.strings
         de.lproj/
            Localized.strings