yaml-locales-webpack-plugin

Converts a single YAML file to multiple message.json locale files.

Usage no npm install needed!

<script type="module">
  import yamlLocalesWebpackPlugin from 'https://cdn.skypack.dev/yaml-locales-webpack-plugin';
</script>

README

YAML to Locales plugin for Webpack

Plugin for Webpack, which creates localization files of Google Chrome extension from one YAML file.

Installation

# npm
npm install --save-dev yaml-locales-webpack-plugin

# yarn
yarn add --dev yaml-locales-webpack-plugin

Usage

webpack.config.js (simple usage)

const YamlLocalesWebpackPlugin = require('yaml-locales-webpack-plugin');

module.exports = {
  plugins: [new YamlLocalesWebpackPlugin()]
};

webpack.config.js (with beta build)

const YamlLocalesWebpackPlugin = require('yaml-locales-webpack-plugin');

module.exports = (env, argv) => {
  plugins: [
    new YamlLocalesWebpackPlugin({
      messageAdditions: argv.beta
        ? {
            extName: ' (beta)',
            extDescription: {
              en: ' Beta version.',
              uk: ' Бета версія.'
            }
          }
        : {}
    })
  ];
};

Options

new YamlLocalesWebpackPlugin(options?: object)
Name Type Default Description
yamlFile string './src/i18n-messages.yaml' Path to the YAML file with translations
defaultLanguage string 'en' Default language
onlySupportedLanguages boolean true Only supported Chrome Web Store languages
messageKeys string[] ['message', 'msg', 'm'] Keys in the YAML file to describe messages
descriptionKeys string[] ['description', 'desc', 'd'] Keys in the YAML file for descriptions
messageAdditions Object {} Additions for messages (see example in Usage section)

Example of a YAML file

key_1: Message for key_1 (language-independent)
key_2:
  message: Message for key_2 (language-independent)
  description: Description for key_2 (language-independent)
key_3:
  m: Message for key_3 (language-independent)
  d: Description for key_3 (language-independent)
key_4:
  en: Message for key_4 (EN)
  ru: Сообщение для key_4 (RU)
  uk: Повідомлення для key_4 (UK)
key_5:
  en:
    m: Message for key_5 (EN)
    d: Description for key_5 (EN)
  uk: Повідомлення для key_5 (UK)
key_6:
  description: Description for key_6 (language-independent)
  en: Message for key_6 (EN)
  uk: Повідомлення для key_6 (UK)
key_7:
  message: Message for key_6 (language-independent)
  en:
    description: Description for key_6 (EN)
  uk:
    description: Опис для key_6 (UK)