我正在与我自己的荚中定义的本地化资源进行斗争。
这个pod对以下文件使用Base国际化:
Base.lproj
|- Localizable.strings
|- MyViewController.xib
fr.lproj
|- Localizable.strings
|- MyViewController.strings这就是在我的podspec中定义它们的方式
spec.resources = "MySDK/*.lproj/*"在我的应用程序的Podfile中,我的pod被定义为本地依赖项:
pod 'MySDK', :path => '../MySDK'在运行pod install之后,我可以在Development Pods/MySDK/Resources/MySDK中看到完全相同的 lproj文件夹。
MyViewController.xib是完美的加载和本地化,我可以改变我的手机上的语言和文字相应的变化。
为了使用本地化字符串,我在SDK中定义了一个函数:
public func NSLocalizedIntentString(key: String) -> String {
let sdkBundle = NSBundle(forClass: MySDKClass.self)
return NSLocalizedString(key, tableName: nil, bundle: sdkBundle, value: key, comment: "")
}它可以工作,除了,它只使用中定义的字符串,不管手机或模拟器上选择的语言是什么。
我把我的podspec改为:
spec.resource_bundles = {
"MySDK" => ["MySDK/*.lproj"]
}为了从代码中加载包,但现在没有任何工作,XIB无法加载。这很奇怪,因为在Development Pods中,我仍然可以看到与以前完全相同的结构,但使用的是蓝色文件夹图标而不是黄色。
下面是我如何从SDK加载XIB,而不是从我的应用程序加载XIB:
MyViewController.swift
public init(...) {
...
super.init(nibName: "MyViewController", bundle: NSBundle(forClass: MyViewController.self))
}我把它改成:
public init(...) {
...
super.init(nibName: "MyViewController", bundle: NSBundle(path: NSBundle.mainBundle().pathForResource("MySDK", ofType: "bundle")!))
}但它找不到包裹。
从今天早上开始,我已经阅读了大量的文档和论坛,但都没有成功,因此,任何帮助都是受欢迎的!)
发布于 2015-07-08 14:33:20
我终于想出来了。
spec.resources中切换到spec.resource_bundles而不是spec.resource_bundles,因为我无法访问生成的包。lproj目录之外。
我的新podspec:
spec.resources =“MySDK/*..lproj”,“MySDK/*..xib”
请注意,我复制lproj目录本身(*.lproj),而不是复制lproj目录(*.lproj/*)的内容,因为Localizable.strings将相互覆盖。我需要把他们放在他们的lang子目录里。我仍然没有100%满意,因为我没有设法使用新的spec.resource_bundles属性。但不管怎样,这很管用。
发布于 2016-12-14 20:14:05
一周来我一直在为这个不停地挣扎。
到目前为止,我发现的最能说明问题的是:https://github.com/CocoaPods/CocoaPods/pull/4635
上面的拉请求声明为了使用resource_bundle,您必须使用RESOURCEDIR/**/* glob模式。RESOURCEDIR是什么似乎并不重要。我一直在尝试各种方法,但是**/* glob会导致Xcode识别本地化目录。
你可以试着复制我的结果
pod lib create创建一个新项目Base.lproj目录s.resource_bundles部分,并将*.png更改为**/*pod install现在,在Xcode中,您应该可以看到带有Base.lproj文件夹的资产文件夹。
pod install以导入新文件这应该会产生一个XLIFF文件,您可以使用这个文件进行翻译,然后使用Editor > Import来导入翻译。
导入翻译后,您可能必须运行>。
Note看来,包含pod的项目也必须支持本地化。
https://stackoverflow.com/questions/31247664
复制相似问题