From e13e630cd6e4fc0b1ff92098a28a770794c7bb9a Mon Sep 17 00:00:00 2001 From: gabrhr <73925454+gabrhr@users.noreply.github.com> Date: Wed, 20 Apr 2022 10:19:29 -0500 Subject: =?UTF-8?q?A=C3=B1adir=20plantilla?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Base para front --- .../generators/language/add-locale-data.hbs | 1 + .../internals/generators/language/app-locale.hbs | 1 + .../language/format-translation-messages.hbs | 1 + .../internals/generators/language/index.js | 92 ++++++++++++++++++++++ .../generators/language/intl-locale-data.hbs | 1 + .../generators/language/polyfill-intl-locale.hbs | 1 + .../generators/language/translation-messages.hbs | 1 + .../generators/language/translations-json.hbs | 1 + 8 files changed, 99 insertions(+) create mode 100644 front/odiparpack/internals/generators/language/add-locale-data.hbs create mode 100644 front/odiparpack/internals/generators/language/app-locale.hbs create mode 100644 front/odiparpack/internals/generators/language/format-translation-messages.hbs create mode 100644 front/odiparpack/internals/generators/language/index.js create mode 100644 front/odiparpack/internals/generators/language/intl-locale-data.hbs create mode 100644 front/odiparpack/internals/generators/language/polyfill-intl-locale.hbs create mode 100644 front/odiparpack/internals/generators/language/translation-messages.hbs create mode 100644 front/odiparpack/internals/generators/language/translations-json.hbs (limited to 'front/odiparpack/internals/generators/language') diff --git a/front/odiparpack/internals/generators/language/add-locale-data.hbs b/front/odiparpack/internals/generators/language/add-locale-data.hbs new file mode 100644 index 0000000..80727c7 --- /dev/null +++ b/front/odiparpack/internals/generators/language/add-locale-data.hbs @@ -0,0 +1 @@ +$1addLocaleData({{language}}LocaleData); diff --git a/front/odiparpack/internals/generators/language/app-locale.hbs b/front/odiparpack/internals/generators/language/app-locale.hbs new file mode 100644 index 0000000..08753eb --- /dev/null +++ b/front/odiparpack/internals/generators/language/app-locale.hbs @@ -0,0 +1 @@ +$1 '{{language}}', diff --git a/front/odiparpack/internals/generators/language/format-translation-messages.hbs b/front/odiparpack/internals/generators/language/format-translation-messages.hbs new file mode 100644 index 0000000..143601f --- /dev/null +++ b/front/odiparpack/internals/generators/language/format-translation-messages.hbs @@ -0,0 +1 @@ +$1 {{language}}: formatTranslationMessages('{{language}}', {{language}}TranslationMessages), diff --git a/front/odiparpack/internals/generators/language/index.js b/front/odiparpack/internals/generators/language/index.js new file mode 100644 index 0000000..aaf91e8 --- /dev/null +++ b/front/odiparpack/internals/generators/language/index.js @@ -0,0 +1,92 @@ +/** + * Language Generator + */ +const fs = require('fs'); +const { exec } = require('child_process'); + +function languageIsSupported(language) { + try { + fs.accessSync(`app/translations/${language}.json`, fs.F_OK); + return true; + } catch (e) { + return false; + } +} + +module.exports = { + description: 'Add a language', + prompts: [ + { + type: 'input', + name: 'language', + message: + 'What is the language you want to add i18n support for (e.g. "fr", "de")?', + default: 'fr', + validate: value => { + if (/.+/.test(value) && value.length === 2) { + return languageIsSupported(value) + ? `The language "${value}" is already supported.` + : true; + } + + return '2 character language specifier is required'; + }, + }, + ], + + actions: () => { + const actions = []; + actions.push({ + type: 'modify', + path: '../../app/i18n.js', + pattern: /(const ..LocaleData = require\('react-intl\/locale-data\/..'\);\n)+/g, + templateFile: './language/intl-locale-data.hbs', + }); + actions.push({ + type: 'modify', + path: '../../app/i18n.js', + pattern: /(\s+'[a-z]+',\n)(?!.*\s+'[a-z]+',)/g, + templateFile: './language/app-locale.hbs', + }); + actions.push({ + type: 'modify', + path: '../../app/i18n.js', + pattern: /(const ..TranslationMessages = require\('\.\/translations\/..\.json'\);\n)(?!const ..TranslationMessages = require\('\.\/translations\/..\.json'\);\n)/g, + templateFile: './language/translation-messages.hbs', + }); + actions.push({ + type: 'modify', + path: '../../app/i18n.js', + pattern: /(addLocaleData\([a-z]+LocaleData\);\n)(?!.*addLocaleData\([a-z]+LocaleData\);)/g, + templateFile: './language/add-locale-data.hbs', + }); + actions.push({ + type: 'modify', + path: '../../app/i18n.js', + pattern: /([a-z]+:\sformatTranslationMessages\('[a-z]+',\s[a-z]+TranslationMessages\),\n)(?!.*[a-z]+:\sformatTranslationMessages\('[a-z]+',\s[a-z]+TranslationMessages\),)/g, + templateFile: './language/format-translation-messages.hbs', + }); + actions.push({ + type: 'add', + path: '../../app/translations/{{language}}.json', + templateFile: './language/translations-json.hbs', + abortOnFail: true, + }); + actions.push({ + type: 'modify', + path: '../../app/app.js', + pattern: /(import\('intl\/locale-data\/jsonp\/[a-z]+\.js'\),\n)(?!.*import\('intl\/locale-data\/jsonp\/[a-z]+\.js'\),)/g, + templateFile: './language/polyfill-intl-locale.hbs', + }); + actions.push(() => { + const cmd = 'npm run extract-intl'; + exec(cmd, (err, result) => { + if (err) throw err; + process.stdout.write(result); + }); + return 'modify translation messages'; + }); + + return actions; + }, +}; diff --git a/front/odiparpack/internals/generators/language/intl-locale-data.hbs b/front/odiparpack/internals/generators/language/intl-locale-data.hbs new file mode 100644 index 0000000..7114f82 --- /dev/null +++ b/front/odiparpack/internals/generators/language/intl-locale-data.hbs @@ -0,0 +1 @@ +$&const {{language}}LocaleData = require('react-intl/locale-data/{{language}}'); diff --git a/front/odiparpack/internals/generators/language/polyfill-intl-locale.hbs b/front/odiparpack/internals/generators/language/polyfill-intl-locale.hbs new file mode 100644 index 0000000..139b74c --- /dev/null +++ b/front/odiparpack/internals/generators/language/polyfill-intl-locale.hbs @@ -0,0 +1 @@ +$1 import('intl/locale-data/jsonp/{{language}}.js'), diff --git a/front/odiparpack/internals/generators/language/translation-messages.hbs b/front/odiparpack/internals/generators/language/translation-messages.hbs new file mode 100644 index 0000000..6764c6c --- /dev/null +++ b/front/odiparpack/internals/generators/language/translation-messages.hbs @@ -0,0 +1 @@ +$1const {{language}}TranslationMessages = require('./translations/{{language}}.json'); diff --git a/front/odiparpack/internals/generators/language/translations-json.hbs b/front/odiparpack/internals/generators/language/translations-json.hbs new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/front/odiparpack/internals/generators/language/translations-json.hbs @@ -0,0 +1 @@ +[] -- cgit v1.2.3