CocoaPods add routines for locale

I have podspec for my generic code and I included all the locales, but then Podspec users get their application localized for all languages ​​when they just want a subset.

I would like to allow the specification of only a subset, for example, only English. But I cannot get this type of behavior to work. Any tips?

Using the Sampe Podcast

# Just English languages pod 'MyStuff', '2.4.0' pod 'MyStuff/en', '2.4.0' pod 'MyStuff/en-GB', '2.4.0' 

Podspec example for MyStuff.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 
+4
source share
1 answer

You will need to use nested routines with 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 

Then in the Subfile application:

 pod 'PodName/Locale/en-GB' pod 'PodName/Locale/Klingon' pod 'PodName/Locale/Yoda' 

More:

Bonus Hack

 %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 } 
+2
source

Source: https://habr.com/ru/post/1479643/


All Articles