npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

babel-plugin-i18n-tag-translate

v2.0.0

Published

Translates i18n tagged template literals based on a json configuration

Downloads

917

Readme

i18n Tagged Template Literals - Babel Plugin Build Status npm version

NPM

i18n Tagged Template Literals

Overview

This babel plugin can be used to bake translations into your release build, to add predefined i18n configuration or to add i18n Tag global variables to your output.

The i18n babel plugin can also be used to generate File Module Groups to group your translations by the file-path of the related JavaScript module. This can be very useful to keep track of the translations within your source code.

Features

Installation

$ npm install babel-plugin-i18n-tag-translate --save-dev

Example

In

i18n`Hello ${ name }, you have ${ amount }:c in your bank account.`;

translation.json

{
    "Hello ${0}, you have ${1} in your bank account.": "Sie haben ${1} auf Ihrem Bankkonto, ${0}."
}

Out

i18n`Sie haben ${ amount }:c auf Ihrem Bankkonto, ${ name }.`;

Usage

Via .babelrc (Recommended)

.babelrc

{
  "plugins": [
    ["i18n-tag-translate", {
      "verbose": false, // Disable verbose logging
      "translation": "./translations/translation.de.json",
      "globalImport": true, // Adds import i18n, { i18nConfig, i18nGroup } from "es2015-i18n-tag"; to your modules
      "groupDir": "./src", // Adds file group name to each module. e.g. const __translationGroup = "components/index.js";
      "config": { // Adds i18nConfig({"locale": "en-US", "translations": { "key": "value" }, "number": { ... }, "date": { ... }}); to the output
        "locales": "en-US",
        "translations": { "key": "value" },
        "number": { 
          ...options
          // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat#Parameters
        },
        "date": { 
          ...options
          // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat#Parameters
        }
      }  
    }]
  ]
}

Note: You need to include es2015-i18n-tag in your exported script for i18n runtime support. You can do this in the entry point of your javascript application or set globalImport flag to true.

Via Node API

require("babel-core").transform("code", {
  plugins: [
    ["i18n-tag-translate", {
      "translation": "./translations/translation.de.json"      
    }]
  ]
});

Via Gulp

const gulp = require('gulp')
const sourcemaps = require('gulp-sourcemaps')
const source = require('vinyl-source-stream')
const buffer = require('vinyl-buffer')
const browserify = require('browserify')

gulp.task('build-release-de', () => {
  // build a german release
  browserify('./src/index.js').transform('babelify', {
    'presets': [
      'es2015',
      'stage-0'
    ],
    'plugins': [
      ['i18n-tag-translate', {
        'translation': './translations/translation.de.json'
      }]
    ]
  }).bundle()
    .on('error', function (err) { console.error(err); this.emit('end'); })
    .pipe(source('bundle.js'))
    .pipe(buffer())
    .pipe(sourcemaps.init({ loadMaps: true }))
    .pipe(sourcemaps.write('./'))
    .pipe(gulp.dest('./dist'))
})

Tools

Run time translation and localization

  • es2015-i18n-tag: ES2015 template literal tag for i18n and l10n (translation and internationalization) using Intl npm version

Schema based translations

License

Copyright (c) 2016 Steffen Kolmer

This software is licensed under the MIT license. See the LICENSE file accompanying this software for terms of use.