簡體   English   中英

如何通過Fastlane腳本添加Xcode本地化語言

[英]How to add a Xcode localization language via Fastlane script

我有一個包含多個應用程序目標的項目,需要能夠將現有的英語本地化字符串文件添加到其中一個目標中,僅供開發使用。

這是我的場景:

  1. 目標A使用英語+多個非英語本地化字符串文件。
  2. 目標B僅使用1個非英語本地化字符串文件。
  3. 目標B不能包含App Store版本中的英文字符串。

但是,為了在開發過程中提供幫助,我們目前手動將英文字符串添加到Target B的本地化文件(在提示時使用目標A中的現有文件) ,並在App Store提交之前將其刪除。

由於我們已經運行Fastlane安裝/拆卸腳本,我想自動添加/刪除腳本中的英文字符串,這樣我們就不必每次都手動執行。

在Fastfile中,我知道如何將文件添加到目標B,但由於本地化文件/引用在Xcode中的結構與常規文件略有不同,我不確定正確的方法是什么。

這是我到目前為止:

def add_english_localization()
    require 'xcodeproj'

    project = Xcodeproj::Project.open("../Code/#{XCODE_PROJ}")

    app_target = project.targets.first #Target B
    english_file_ref = project.main_group.new_file('../Code/TargetA/Application/Supporting Files/en.lproj') #Existing english file in Target A's directory
    app_target.add_file_references([english_file_ref]) #This adds the file but doesn't properly update Xcode's Localization references...?

    project.save
  end

截圖:

在此輸入圖像描述
在此輸入圖像描述


在此輸入圖像描述
在此輸入圖像描述

這是一個小ruby腳本,使用xcodeproj刪除和添加本地化:

刪除語言(本例中為法語):

require 'xcodeproj'
project_path = './Whatever.xcodeproj'
project = Xcodeproj::Project.open(project_path)

for o in project.objects do 
    if o.is_a? Xcodeproj::Project::Object::PBXGroup
        if o.hierarchy_path == "/TargetA/Localizable.strings"
            group = o
            break
        end
    end
end


files = group.files
for file in files do

    if file.path == "fr.lproj/Localizable.strings"
        file.remove_from_project
        puts "Removed " + file.path
    end
end

project.save

添加語言(也是法語):

require 'xcodeproj'
project_path = './Whatever.xcodeproj'
project = Xcodeproj::Project.open(project_path)

for o in project.objects do 
    if o.is_a? Xcodeproj::Project::Object::PBXGroup
        if o.hierarchy_path == "/TargetA/Localizable.strings"
            group = o
            break
        end
    end
end

file = project.new_file("fr.lproj/Localizable.strings")
file.move(group)
file.name = "fr"

project.save

你應該可以在fastfile中調用它,但我沒有檢查...你可以使用sh("ruby ./name.rb")直接調用它sh("ruby ./name.rb")

暫無
暫無

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

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