Class: IbtoolTranslation::Core
- Inherits:
-
Object
- Object
- IbtoolTranslation::Core
- Defined in:
- lib/ibtoolTranslation.rb
Instance Method Summary collapse
- #addtionData(fileName) ⇒ Object
- #baseDataForTransText(transText) ⇒ Object
- #create(dirName, sourceDir, lps, string) ⇒ Object
- #createTranslation(sourceDir, lprojs, storyboards) ⇒ Object
- #deleteDir(dir) ⇒ Object
- #deleteStringsFile(sourceDir, lprojs) ⇒ Object
- #makeDirectory(lprojs) ⇒ Object
- #readFile(fileName) ⇒ Object
- #storyboards(sourceDir) ⇒ Object
- #translate(translationData, translationDict) ⇒ Object
- #translateStoryboards(sourceDir, lprojs, storyboards) ⇒ Object
- #translateStrings(sourceDir, lprojs, storyboards) ⇒ Object
- #translateStringsFile(lproj, fileName, transText) ⇒ Object
- #translationData(fileName) ⇒ Object
- #translationDict(transText) ⇒ Object
- #transText(fileName) ⇒ Object
- #update(dirName, sourceDir, lps, string) ⇒ Object
- #writeTransText(fileName, transText) ⇒ Object
Instance Method Details
#addtionData(fileName) ⇒ Object
111 112 113 |
# File 'lib/ibtoolTranslation.rb', line 111 def addtionData(fileName) self.readFile(fileName).scan(/".*" *= *"(.*)";\n/).uniq.flatten end |
#baseDataForTransText(transText) ⇒ Object
105 106 107 |
# 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) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# 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) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 |
# 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) ⇒ Object
122 123 124 125 126 127 128 129 130 131 |
# 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) ⇒ Object
72 73 74 75 76 77 78 79 80 81 |
# 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) ⇒ Object
40 41 42 |
# File 'lib/ibtoolTranslation.rb', line 40 def makeDirectory(lprojs) lprojs.each {|lproj| FileUtils.mkdir_p(lproj) } end |
#readFile(fileName) ⇒ Object
119 120 121 |
# File 'lib/ibtoolTranslation.rb', line 119 def readFile(fileName) FileTest.exist?(fileName) ? File.read(fileName, :mode => "rb", :encoding => "UTF-16LE").toutf8 : "" end |
#storyboards(sourceDir) ⇒ Object
114 115 116 117 118 |
# 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 |
#translate(translationData, translationDict) ⇒ Object
91 92 93 94 95 |
# 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) ⇒ Object
65 66 67 68 69 70 71 |
# 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) ⇒ Object
56 57 58 59 60 61 62 63 64 |
# 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) ⇒ Object
83 84 85 86 87 88 89 90 |
# 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) ⇒ Object
99 100 101 |
# File 'lib/ibtoolTranslation.rb', line 99 def translationData(fileName) self.readFile(fileName).scan(/"(.*)" *= *"(.*)";\n/).uniq end |
#translationDict(transText) ⇒ Object
96 97 98 |
# File 'lib/ibtoolTranslation.rb', line 96 def translationDict(transText) Hash[*(transText.scan(/"(.*)"\s*=\s*"(.*)";?\s*\n/).flatten)] end |
#transText(fileName) ⇒ Object
108 109 110 |
# File 'lib/ibtoolTranslation.rb', line 108 def transText(fileName) self.readFile(fileName) end |
#update(dirName, sourceDir, lps, string) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# 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) ⇒ Object
102 103 104 |
# File 'lib/ibtoolTranslation.rb', line 102 def writeTransText(fileName, transText) File.open(fileName, "w:UTF-16"){|f| f.write transText} end |