summaryrefslogtreecommitdiffstats
path: root/front/odiparpack/internals/generators/language
diff options
context:
space:
mode:
authorgabrhr <[email protected]>2022-04-20 10:19:29 -0500
committergabrhr <[email protected]>2022-04-20 10:19:29 -0500
commite13e630cd6e4fc0b1ff92098a28a770794c7bb9a (patch)
treee68ad2f947d1b3ec454529b35f37ca2f223e5431 /front/odiparpack/internals/generators/language
parent457816ac1129fcc6019d2fc795b6693ee6776d59 (diff)
downloadDP1_project-e13e630cd6e4fc0b1ff92098a28a770794c7bb9a.tar.gz
DP1_project-e13e630cd6e4fc0b1ff92098a28a770794c7bb9a.tar.bz2
DP1_project-e13e630cd6e4fc0b1ff92098a28a770794c7bb9a.zip
AƱadir plantilla
Base para front
Diffstat (limited to 'front/odiparpack/internals/generators/language')
-rw-r--r--front/odiparpack/internals/generators/language/add-locale-data.hbs1
-rw-r--r--front/odiparpack/internals/generators/language/app-locale.hbs1
-rw-r--r--front/odiparpack/internals/generators/language/format-translation-messages.hbs1
-rw-r--r--front/odiparpack/internals/generators/language/index.js92
-rw-r--r--front/odiparpack/internals/generators/language/intl-locale-data.hbs1
-rw-r--r--front/odiparpack/internals/generators/language/polyfill-intl-locale.hbs1
-rw-r--r--front/odiparpack/internals/generators/language/translation-messages.hbs1
-rw-r--r--front/odiparpack/internals/generators/language/translations-json.hbs1
8 files changed, 99 insertions, 0 deletions
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 @@
+[]