@ember-intl/polyfill

0.3.1 • Public • Published

@ember-intl/polyfill

npm Version Build Status

Automatically writes the Intl.js polyfill to assets/intl/ and optionally will insert script polyfill script tags into index.html at build time.

Using the polyfill is not required when targeting a modern set of browsers which natively implement the Intl API.

Configure

  • ember g @ember-intl/polyfill
  • Edit <project-root>/config/ember-intl.js

Options

  • locales Array

Locales that your application supports i.e., ['en-us', 'fr-fr', 'en-ca']

  • forcePolyfill Boolean

Overrides global.Intl.{NumberFormat,DateTimeFormat} with IntlPolyfill.{NumberFormat,DateTimeFormat} NOTE: if you are not vendoring the Intl polyfill, you must ensure the Intl polyfill is loaded before the vendor.js script tag.

  • disablePolyfill Boolean

Disables the addon.

  • autoPolyfill ?Object
    • locales ?Array Signals which locales to insert into head or vendor. If not provided, will default config.locales

    • complete Boolean Forces complete polyfill versus partial polyfill

    • strategy Symbol from @ember-intl/polyfill/lib/strategies

      • SCRIPT_TAGS includes necessary script tags into the head of index.html
      • VENDOR bundles polyfill within vendor.js

Change asset output path

/* <project-root>/ember-cli-build.js */
let app = new EmberApp({
  app: {
    intl: '/assets/intl' // default
  }
});

module.exports = app;

Insert script tags

/* <project-root>/config/ember-intl.js */

const { SCRIPT_TAGS } = require('@ember-intl/polyfill/lib/strategies');

module.exports = function(/* env */) {
  locales: ['en-us'],
  autoPolyfill: {
    /* adds Intl.min and en-us locale data script tags within index.html's head */
    strategy: SCRIPT_TAGS
  }
};

Vendor/bundle Intl polyfill

Vendor Partial Intl Polyfill

/* <project-root>/config/ember-intl.js */

const { VENDOR } = require('@ember-intl/polyfill/lib/strategies');

module.exports = function(/* env */) {
  locales: ['en-us', 'fr-fr'],
  autoPolyfill: {
    /* vendors Intl polyfill without locale data */
    strategy: VENDOR,
    /* vendors only en-us.  If `autoPolyfill.locales` is not set, it will use `config.locales` (en-us, fr-fr) */
    locales: ['en-us']
  }
};

Vendor Complete Polyfill

/* <project-root>/config/ember-intl.js */

const { VENDOR } = require('@ember-intl/polyfill/lib/strategies');

module.exports = function(/* env */) {
  locales: ['en-us'],
  autoPolyfill: {
    strategy: VENDOR,
    /* vendors *complete* Intl polyfill */
    complete: true
  }
};

Force polyfill

Since locale-data can vary between browser vendors & versions, you may want to override the global.Intl object with the polyfill to improve consistency. This replaces the global.Intl.{DateTimeFormat,NumberFormat} constructors with global.IntlPolyfill.{DateTimeFormat,NumberFormat}.

/* <project-root>/config/ember-intl.js */
module.exports = function(/* env */) {
  locales: ['en-us'],
  forcePolyfill: true
};

Manually assign Intl polyfill & data

Add the following tags to your index.html, or any mechanism in which you serve your your application payload. Note: these script tags should be set above the application's script tag.

<script src="{{rootURL}}assets/intl/intl.min.js"></script>
<script src="{{rootURL}}assets/intl/locales/en-us.js"></script>
<script src="{{rootURL}}assets/intl/locales/fr-fr.js"></script>
<script src="{{rootURL}}assets/intl/locales/es-es.js"></script>
<!--
You can view the full list of CLDR locales which can be accessed from the `/assets/intl` folder
of your application.  The CLDRs are automatically placed there at build time.  Typically this folder
on within your project is ``<project-root>/dist/assets/intl`

Full list: https://github.com/yahoo/formatjs-extract-cldr-data/tree/master/data/main
-->

Package Sidebar

Install

npm i @ember-intl/polyfill

Weekly Downloads

267

Version

0.3.1

License

MIT

Last publish

Collaborators

  • fsmanuel
  • ijlee2
  • jasonmit
  • buschtoens
  • snewcomer
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy