class IbtoolTranslation::Core
Public Instance Methods
addtionData(fileName)
click to toggle source
# File lib/ibtoolTranslation.rb, line 111 def addtionData(fileName) self.readFile(fileName).scan(/".*" *= *"(.*)";\n/).uniq.flatten end
baseDataForTransText(transText)
click to toggle source
# File lib/ibtoolTranslation.rb, line 105 def baseDataForTransText(transText) (transText.scan(/"(.*)"\s*=\s*".*";?\s*\n/) + transText.scan(/"(.*)";?\s*\n/)).flatten end
create(dirName, sourceDir, lps, string)
click to toggle source
# File lib/ibtoolTranslation.rb, line 10 def create(dirName, sourceDir, lps, string) lprojs = lps.map {|lp| dirName + lp + ".lproj"} sourceLproj = dirName + sourceDir + ".lproj" storyboards = self.storyboards sourceLproj if (string) self.deleteStringsFile(sourceLproj, lprojs) end self.makeDirectory(lprojs) self.createTranslation(sourceLproj, lprojs, storyboards) unless (string) self.deleteStringsFile(sourceLproj, lprojs) end end
createTranslation(sourceDir, lprojs, storyboards)
click to toggle source
# File lib/ibtoolTranslation.rb, line 43 def createTranslation(sourceDir, lprojs, storyboards) lprojs.each {|lproj| transText = self.transText("#{lproj}/Translation.strings") baseData = self.baseDataForTransText(transText) storyboards.each { |fileName| `ibtool --generate-stringsfile #{lproj}/#{fileName}.strings #{sourceDir}/#{fileName}.storyboard` addtionData = self.addtionData("#{lproj}/#{fileName}.strings") aData = addtionData.select{|f| baseData.include?(f) == false} transText = transText + aData.map{|f| "\"#{f}\";\n"}.join("") } self.writeTransText("#{lproj}/Translation.strings", transText) } end
deleteDir(dir)
click to toggle source
# File lib/ibtoolTranslation.rb, line 122 def deleteDir(dir) Dir::glob(dir + "**/").sort { |a,b| b.split('/').size <=> a.split('/').size }.each {|d| Dir::foreach(d) {|f| File::delete(d+f) if ! (/\.+$/ =~ f) } Dir::rmdir(d) } end
deleteStringsFile(sourceDir, lprojs)
click to toggle source
# File lib/ibtoolTranslation.rb, line 72 def deleteStringsFile(sourceDir, lprojs) storyboards = self.storyboards sourceDir lprojs.each {|lproj| storyboards.each { |fileName| filePath = "#{lproj}/#{fileName}.strings" File::delete(filePath) if FileTest.exist?(filePath) } } end
makeDirectory(lprojs)
click to toggle source
# File lib/ibtoolTranslation.rb, line 40 def makeDirectory(lprojs) lprojs.each {|lproj| FileUtils.mkdir_p(lproj) } end
readFile(fileName)
click to toggle source
# File lib/ibtoolTranslation.rb, line 119 def readFile(fileName) FileTest.exist?(fileName) ? File.read(fileName, :mode => "rb", :encoding => "UTF-16LE").toutf8 : "" end
storyboards(sourceDir)
click to toggle source
# File lib/ibtoolTranslation.rb, line 114 def storyboards(sourceDir) Dir.open(sourceDir).map {|f| f.gsub(/(.*)\.storyboard/, '\1').gsub(/\w*\.\w*/, "") }.select {|f| f != "" } end
transText(fileName)
click to toggle source
# File lib/ibtoolTranslation.rb, line 108 def transText(fileName) self.readFile(fileName) end
translate(translationData, translationDict)
click to toggle source
# File lib/ibtoolTranslation.rb, line 91 def translate(translationData, translationDict) translationData.map{|arr| (translationDict.key? arr[1]) ? [arr[0], translationDict[arr[1]]] : arr } end
translateStoryboards(sourceDir, lprojs, storyboards)
click to toggle source
# File lib/ibtoolTranslation.rb, line 65 def translateStoryboards(sourceDir, lprojs, storyboards) lprojs.each {|lproj| storyboards.each { |fileName| `ibtool --write #{lproj}/#{fileName}.storyboard -d #{lproj}/#{fileName}.strings #{sourceDir}/#{fileName}.storyboard` } } end
translateStrings(sourceDir, lprojs, storyboards)
click to toggle source
# File lib/ibtoolTranslation.rb, line 56 def translateStrings(sourceDir, lprojs, storyboards) lprojs.each {|lproj| transText = self.transText("#{lproj}/Translation.strings") storyboards.each { |fileName| self.translateStringsFile(lproj, fileName, transText) puts fileName unless $debug } } end
translateStringsFile(lproj, fileName, transText)
click to toggle source
# File lib/ibtoolTranslation.rb, line 83 def translateStringsFile(lproj, fileName, transText) translationData = self.translationData("#{lproj}/#{fileName}.strings") translationDict = self.translationDict(transText) aData = translate(translationData, translationDict) transText = aData.map{|f| "\"#{f[0]}\" = \"#{f[1]}\";\n"}.join("") File.open("#{lproj}/#{fileName}.strings", "w:UTF-16"){|f| f.write transText} end
translationData(fileName)
click to toggle source
# File lib/ibtoolTranslation.rb, line 99 def translationData(fileName) self.readFile(fileName).scan(/"(.*)" *= *"(.*)";\n/).uniq end
translationDict(transText)
click to toggle source
# File lib/ibtoolTranslation.rb, line 96 def translationDict(transText) Hash[*(transText.scan(/"(.*)"\s*=\s*"(.*)";?\s*\n/).flatten)] end
update(dirName, sourceDir, lps, string)
click to toggle source
# File lib/ibtoolTranslation.rb, line 24 def update(dirName, sourceDir, lps, string) lprojs = lps.map {|lp| dirName + lp + ".lproj"} sourceLproj = dirName + sourceDir + ".lproj" storyboards = self.storyboards sourceLproj if (string) self.deleteStringsFile(sourceLproj, lprojs) end self.makeDirectory(lprojs) self.createTranslation(sourceLproj, lprojs, storyboards) self.translateStrings(sourceLproj, lprojs, storyboards) unless (string) self.translateStoryboards(sourceLproj, lprojs, storyboards) self.deleteStringsFile(sourceLproj, lprojs) end end
writeTransText(fileName, transText)
click to toggle source
# File lib/ibtoolTranslation.rb, line 102 def writeTransText(fileName, transText) File.open(fileName, "w:UTF-16"){|f| f.write transText} end