diff --git a/scripts/copy-i18n-tags.coffee b/scripts/copy-i18n-tags.coffee index c7f49b975..42df476ea 100644 --- a/scripts/copy-i18n-tags.coffee +++ b/scripts/copy-i18n-tags.coffee @@ -1,5 +1,28 @@ fs = require 'fs' +path = require 'path' en = require('../app/locale/en').translation + +enSource = fs.readFileSync(path.join(__dirname, '../app/locale/en.coffee'), encoding='utf8') +commentsMap = {} + +categorySplitPattern = /^[\s\n]*(?=[^:\n]+:\s*$)/gm +categoryCapturePattern = /^[\s\n]*([^:\n]+):\s*$/gm +commentPattern = /^[\s\n]*([^:\n]+):\s*"[^#\n"]+"\s*#(.*)$/gm + +splitByCategories = enSource.split(categorySplitPattern) + +for section in splitByCategories + categoryMatch = categoryCapturePattern.exec section + + if categoryMatch? + category = categoryMatch[1] + comment = [] + + commentsMap[category] ?= {} + + while (comment = commentPattern.exec section)? + commentsMap[category][comment[1]] = comment[2] + dir = fs.readdirSync 'app/locale' for file in dir when not (file in ['locale.coffee', 'en.coffee']) contents = require('../app/locale/' + file) @@ -16,6 +39,11 @@ for file in dir when not (file in ['locale.coffee', 'en.coffee']) tagMissing = not cat[enTag]? tag = (cat[enTag] ?= enString) tag = tag.replace /"/g, '\\"' - lines.push "#{if tagMissing then '#' else ''} #{enTag}: \"#{tag}\"" + + comment = "" + if commentsMap[enCat]? and commentsMap[enCat][enTag]? + comment = " \##{commentsMap[enCat][enTag]}" + + lines.push "#{if tagMissing then '#' else ''} #{enTag}: \"#{tag}\"#{comment}" newContents = lines.join('\n') + '\n' fs.writeFileSync 'app/locale/' + file, newContents