4

私は共有コードの podspec を持っていて、すべてのロケールを含めていましたが、Podspec のユーザーは、サブセットだけが必要な場合にすべての言語にローカライズされたアプリを取得します。

たとえば英語だけなど、サブセットのみの指定を許可したいと思います。しかし、この種の動作を機能させることはできないようです。何かアドバイス?

サンプル 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
4

1 に答える 1

2

ネストされたサブスペックを使用したいと思うでしょう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'

もっと:

  1. CocoaPod ドキュメント

  2. サブスペックを含むポッドスペックの例

ボーナスハック

%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
}
于 2013-08-22T09:49:44.323 に答える