我有一个podspec用于我的共享代码,我包含了所有语言环境,但是Podspec的用户只需要一个子集就可以将他们的应用程序本地化为所有语言.
我想仅允许指定子集,例如英语.但我似乎无法让这种行为发挥作用.有什么建议?
Sampe Podfile用法
# Just English languages
pod 'MyStuff', '2.4.0'
pod 'MyStuff/en', '2.4.0'
pod 'MyStuff/en-GB', '2.4.0'
MyStuff.podspec的示例Podspec
Pod::Spec.new do |s|
s.name = 'MyStuff'
s.version = '2.4.0'
s.summary = "MyStuff for iOS."
s.source = {
:git => 'somewhere',
:tag => s.version.to_s
}
s.public_header_files = ['**/**/MyView.h', ...]
s.source_files = ['MyStuff/*.{h,m}' ]
s.resources = ['MyStuff/Resources/*.{png,xib}',
'MyStuff/config.plist']
s.platform = :ios, '5.0'
s.requires_arc = true
s.frameworks = 'CoreGraphics', 'Foundation', 'QuartzCore', 'SystemConfiguration', 'UIKit'
# All locales
s.subspec "all" do |all|
all.resources = ['MyStuff/localization/**']
all.preserve_paths = ['MyStuff/localization/**']
end
# Just en locale
s.subspec "en" do |en|
en.resources = ['MyStuff/localization/en.lproj']
en.preserve_paths = ['MyStuff/localization/en.lproj']
end
# Just en-GB locale
s.subspec "en-GB" do |enGB|
enGB.resources = ['MyStuff/localization/en-GB.lproj']
enGB.preserve_paths = ['MyStuff/localization/en-GB.lproj']
end
# Just fr locale
s.subspec "fr" do |fr|
fr.resources = ['MyStuff/localization/fr.lproj']
fr.preserve_paths = ['MyStuff/localization/fr.lproj']
end
# I have many other locales left out here for brevity.
end
最佳答案 您将要使用带有default_subspec的嵌套子规范
# All is default (pod 'PodName/Locale' or pod 'PodName')
s.subspec "Locale" do |l|
l.default_subspec 'All'
l.subspec "All" do |en|
en.resources = 'MyStuff/localization'
en.preserve_paths = 'MyStuff/localization'
end
l.subspec "en" do |en|
en.resources = 'MyStuff/localization/en.lproj'
en.preserve_paths = 'MyStuff/localization/en.lproj'
end
l.subspec "en-GB" do |en|
en.resources = 'MyStuff/localization/en-GB.lproj'
en.preserve_paths = 'MyStuff/localization/en-GB.lproj'
end
l.subspec "en-US" do |en|
en.resources = 'MyStuff/localization/en-US.lproj'
en.preserve_paths = 'MyStuff/localization/en-US.lproj'
end
end
然后在应用程序的Podfile中:
pod 'PodName/Locale/en-GB'
pod 'PodName/Locale/Klingon'
pod 'PodName/Locale/Yoda'
更多:
> CocoaPod docs
> Example podspec with subspecs
奖金黑客
%w|en en-GB en-US|.map {|localename|
l.subspec localename do |loc|
loc.resources = "PodPath/To/Localization/#{localename}.lproj"
loc.preserve_paths = "PodPath/To/Localization/#{localename}.lproj"
end
}