[英]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.