diff options
| author | Dayana31 <[email protected]> | 2022-04-21 17:27:08 -0500 | 
|---|---|---|
| committer | Dayana31 <[email protected]> | 2022-04-21 17:27:08 -0500 | 
| commit | 67c50667678dd0ce4709b29a854f6a47093a1ac5 (patch) | |
| tree | b6f9f39092ad54bf6b815984d32b37d7c7ca67ab /front/odiparpack/internals/generators/language | |
| parent | 91140b24f0d49a9f89a080ee063e9eb023a4b73a (diff) | |
| parent | e13e630cd6e4fc0b1ff92098a28a770794c7bb9a (diff) | |
| download | DP1_project-67c50667678dd0ce4709b29a854f6a47093a1ac5.tar.gz DP1_project-67c50667678dd0ce4709b29a854f6a47093a1ac5.tar.bz2 DP1_project-67c50667678dd0ce4709b29a854f6a47093a1ac5.zip | |
Merge branch 'gabshr' into dayana
Diffstat (limited to 'front/odiparpack/internals/generators/language')
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 @@ +[] | 
