簡體   English   中英

iOS - 本地化字符串在 pod 中不起作用

[英]iOS - Localized string doesn't work in pod

我正在為我的公司創建 2 個新 pod,但其中一個決定采取行動並且根本不本地化字符串,而是返回鍵。 它們的 podspec 幾乎相同(我只是克隆了一個並更改了名稱)。 我設置了一個斷點並嘗試打印出 Bundle po Bundle(path: path) ,這就是我得到的:

- some : NSBundle </var/containers/Bundle/Application/62C0534D-6CRE-40AE-9C2A-574BF212A4AE/AppName.app/PodName.bundle/en.lproj> (not yet loaded)

用這個打印出字符串: po Bundle(path: path)?.localizedString(forKey: key, value: "", table: table)?? "" po Bundle(path: path)?.localizedString(forKey: key, value: "", table: table)?? ""給了我key的值(表 = PodName)。

打印出資源路徑po Bundle(path: path)?.path(forResource: "PodName", ofType: "strings")給我 nil (字符串文件名和 pod 名一樣)。 我擁有的另一個 pod 具有資源的有效路徑。

我檢查了另一個 pod,發現一切都完全相同,除了 pod 名稱,它工作正常。 其他團隊的 pod 也使用相同的模式來本地化字符串,並且它們都可以工作。 如果我將strings擴展名放入 resource_bundles,它不會第一次加載,但如果我再次加載屏幕,則會顯示正確的字符串。

在主項目中,我什至可以看到字符串文件被下載到 pod 的 Resource 文件夾中。

這是我擁有的 podspec:

Pod::Spec.new do |spec|

  # ―――  Spec Metadata  ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
  spec.name         = "PodName"
  spec.version      = "20.7.1"
  spec.summary      = "PodName"
  spec.description  = <<-DESC
PodName
                   DESC

  spec.homepage     = "example.com"

  # ―――  Spec License  ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
  spec.license      = { :type => "GNU GPLv3", :file => "LICENSE" }


  # ――― Author Metadata  ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
  spec.author             = { "My Name" => "my.email@example.com" }

  # ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
  spec.platform     = :ios, "10.0"

  # ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
  spec.source       = { :git => "the git url", :tag => "#{spec.version}" }

  # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
  spec.requires_arc = true
  spec.static_framework = true

  spec.subspec 'Core' do |sp|
    sp.source_files  = "PodName", "PodName/**/*.{h,m,swift}"
    sp.public_header_files = "PodName/**/*.h"
    sp.preserve_paths = 'PodName/**/*.lproj/*.strings'
    sp.resource_bundles = {
      'PodName' => ['PodName/**/*.{lproj,storyboard,xib,xcassets,json,imageset,png}']
    }
  end

  spec.subspec 'Device' do |sp|
    sp.dependency 'PodName/Core'
    sp.vendored_frameworks = "Device/FrameworkA.framework","Device/FrameworkB.framework"
  end

  spec.subspec 'Simulator' do |sp|
    sp.dependency 'PodName/Core'
    sp.vendored_frameworks = "Simulator/FrameworkA.framework","Simulator/FrameworkB.framework"
  end

spec.dependency 'A'
spec.dependency 'B'
spec.dependency 'C'
spec.dependency 'D'

end

您是否使用您的框架檢查了本地化文件的目標成員資格?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM