1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #!/usr/bin/env node
- import sh from 'shelljs'
- import fs from 'node:fs/promises'
- import * as vars from './vars.mjs'
- import log from 'npmlog'
- import { GettextExtractor, JsExtractors, HtmlExtractors } from 'gettext-extractor'
- let extractor = new GettextExtractor()
- const tempOutput = 'locale/app.new.pot'
- const pot = 'locale/app.pot'
- const tempHtml = 'locale/tmp-html'
- ;(async () => {
- sh.mkdir('-p', tempHtml)
- for (const plugin of vars.builtinPlugins) {
- log.info('compile-pug', plugin)
- sh.exec(`yarn pug --doctype html -s --pretty -O '{require: function(){}}' -o ${tempHtml}/${plugin} ${plugin}`, { fatal: true })
- }
- log.info('extract-ts')
- extractor.createJsParser([
- JsExtractors.callExpression('this.translate.instant', {
- arguments: { text: 0 },
- }),
- JsExtractors.callExpression('translate.instant', {
- arguments: { text: 0 },
- }),
- JsExtractors.callExpression('_', {
- arguments: { text: 0 },
- }),
- ]).parseFilesGlob('./tabby-*/src/**/*.ts')
- log.info('extract-pug')
- const options = {
- attributes: {
- context: 'translatecontext',
- },
- }
- extractor.createHtmlParser([
- HtmlExtractors.elementContent('translate, [translate=""]', options),
- HtmlExtractors.elementAttribute('[translate*=" "]', 'translate', options),
- ]).parseFilesGlob(`${tempHtml}/**/*.html`)
- extractor.savePotFile(tempOutput)
- extractor.printStats()
- sh.rm('-r', tempHtml)
- sh.exec(`msgcat -s ${tempOutput} > ${pot}`, { fatal: true })
- await fs.rename(tempOutput, pot)
- })()
|