angular/aio/content/examples
Olivier Combe 079d884b6c feat(common): drop use of the Intl API to improve browser support (#18284)
BREAKING CHANGE: Because of multiple bugs and browser inconsistencies, we have dropped the intl api in favor of data exported from the Unicode Common Locale Data Repository (CLDR).
Unfortunately we had to change the i18n pipes (date, number, currency, percent) and there are some breaking changes.

1. I18n pipes
* Breaking change:
  - By default Angular now only contains locale data for the language `en-US`, if you set the value of `LOCALE_ID` to another locale, you will have to import new locale data for this language because we don't use the intl API anymore.

* Features:
  - you don't need to use the intl polyfill for Angular anymore.
  - all i18n pipes now have an additional last parameter `locale` which allows you to use a specific locale instead of the one defined in the token `LOCALE_ID` (whose value is `en-US` by default).
  - the new locale data extracted from CLDR are now available to developers as well and can be used through an API (which should be especially useful for library authors).
  - you can still use the old pipes for now, but their names have been changed and they are no longer included in the `CommonModule`. To use them, you will have to import the `DeprecatedI18NPipesModule` after the `CommonModule` (the order is important):

  ```ts
  import { NgModule } from '@angular/core';
  import { CommonModule, DeprecatedI18NPipesModule } from '@angular/common';

  @NgModule({
    imports: [
      CommonModule,
      // import deprecated module after
      DeprecatedI18NPipesModule
    ]
  })
  export class AppModule { }
  ```

  Dont forget that you will still need to import the intl API polyfill if you want to use those deprecated pipes.

2. Date pipe
* Breaking changes:
  - the predefined formats (`short`, `shortTime`, `shortDate`, `medium`, ...) now use the patterns given by CLDR (like it was in AngularJS) instead of the ones from the intl API. You might notice some changes, e.g. `shortDate` will be `8/15/17` instead of `8/15/2017` for `en-US`.
  - the narrow version of eras is now `GGGGG` instead of `G`, the format `G` is now similar to `GG` and `GGG`.
  - the narrow version of months is now `MMMMM` instead of `L`, the format `L` is now the short standalone version of months.
  - the narrow version of the week day is now `EEEEE` instead of `E`, the format `E` is now similar to `EE` and `EEE`.
  - the timezone `z` will now fallback to `O` and output `GMT+1` instead of the complete zone name (e.g. `Pacific Standard Time`), this is because the quantity of data required to have all the zone names in all of the existing locales is too big.
  - the timezone `Z` will now output the ISO8601 basic format, e.g. `+0100`, you should now use `ZZZZ` to get `GMT+01:00`.

  | Field type | Format        | Example value         | v4 | v5            |
  |------------|---------------|-----------------------|----|---------------|
  | Eras       | Narrow        | A for AD              | G  | GGGGG         |
  | Months     | Narrow        | S for September       | L  | MMMMM         |
  | Week day   | Narrow        | M for Monday          | E  | EEEEE         |
  | Timezone   | Long location | Pacific Standard Time | z  | Not available |
  | Timezone   | Long GMT      | GMT+01:00             | Z  | ZZZZ          |

* Features
  - new predefined formats `long`, `full`, `longTime`, `fullTime`.
  - the format `yyy` is now supported, e.g. the year `52` will be `052` and the year `2017` will be `2017`.
  - standalone months are now supported with the formats `L` to `LLLLL`.
  - week of the year is now supported with the formats `w` and `ww`, e.g. weeks `5` and `05`.
  - week of the month is now supported with the format `W`, e.g. week `3`.
  - fractional seconds are now supported with the format `S` to `SSS`.
  - day periods for AM/PM now supports additional formats `aa`, `aaa`, `aaaa` and `aaaaa`. The formats `a` to `aaa` are similar, while `aaaa` is the wide version if available (e.g. `ante meridiem` for `am`), or equivalent to `a` otherwise, and `aaaaa` is the narrow version (e.g. `a` for `am`).
  - extra day periods are now supported with the formats `b` to `bbbbb` (and `B` to `BBBBB` for the standalone equivalents), e.g. `morning`, `noon`, `afternoon`, ....
  - the short non-localized timezones are now available with the format `O` to `OOOO`. The formats `O` to `OOO` will output `GMT+1` while the format `OOOO` will be `GMT+01:00`.
  - the ISO8601 basic time zones are now available with the formats `Z` to `ZZZZZ`. The formats `Z` to `ZZZ` will output `+0100`, while the format `ZZZZ` will be `GMT+01:00` and `ZZZZZ` will be `+01:00`.

* Bug fixes
  - the date pipe will now work exactly the same across all browsers, which will fix a lot of bugs for safari and IE.
  - eras can now be used on their own without the date, e.g. the format `GG` will be `AD` instead of `8 15, 2017 AD`.

3. Currency pipe
* Breaking change:
  - the default value for `symbolDisplay` is now `symbol` instead of `code`. This means that by default you will see `$4.99` for `en-US` instead of `USD4.99` previously.

* Deprecation:
  - the second parameter of the currency pipe (`symbolDisplay`) is no longer a boolean, it now takes the values `code`, `symbol` or `symbol-narrow`. A boolean value is still valid for now, but it is deprecated and it will print a warning message in the console.

* Features:
  - you can now choose between `code`, `symbol` or `symbol-narrow` which gives you access to more options for some currencies (e.g. the canadian dollar with the code `CAD` has the symbol `CA$` and the symbol-narrow `$`).

4. Percent pipe
* Breaking change
  - if you don't specify the number of digits to round to, the local format will be used (and it usually rounds numbers to 0 digits, instead of not rounding previously), e.g. `{{ 3.141592 | percent }}` will output `314%` for the locale `en-US` instead of `314.1592%` previously.

Fixes #10809, #9524, #7008, #9324, #7590, #6724, #3429, #17576, #17478, #17319, #17200, #16838, #16624, #16625, #16591, #14131, #12632, #11376, #11187

PR Close #18284
2017-08-22 15:43:58 -05:00
..
ajs-quick-reference docs(aio): Update NgStyle and NgClass to use quoted keys 2017-07-07 16:17:33 -07:00
animations docs(aio): restore animation original value (#17385) 2017-06-09 18:27:11 -07:00
aot-compiler docs(aio): cleanup rollup-config script 2017-06-23 11:55:55 -07:00
architecture refactor: fix typos (#18000) 2017-07-07 16:55:17 -07:00
attribute-directives build(aio): lint examples 2017-05-03 13:44:41 -07:00
cli-quickstart docs(aio): update quickstart to latest cli 2017-07-03 08:25:19 +01:00
component-interaction refactor: fix typos (#18000) 2017-07-07 16:55:17 -07:00
component-styles docs(aio): update migrated content from anguar.io 2017-03-28 10:21:46 +01:00
dependency-injection build(aio): lint examples 2017-05-03 13:44:41 -07:00
dependency-injection-in-action build(aio): lint examples 2017-05-03 13:44:41 -07:00
deployment docs(aio): remove example specific .gitignore files 2017-06-09 14:33:21 +01:00
displaying-data docs(aio): update migrated content from anguar.io 2017-03-28 10:21:46 +01:00
docs-style-guide docs(aio): ward's changes 2017-06-21 16:21:20 -07:00
dynamic-component-loader docs(aio): remove "_" from private property name 2017-06-22 14:55:42 -07:00
dynamic-form build(aio): lint examples 2017-05-03 13:44:41 -07:00
form-validation docs(aio): tech edits to form validation 2017-08-03 13:57:31 -07:00
forms docs(aio): restore missing files (#16995) 2017-05-25 17:44:03 -06:00
hierarchical-dependency-injection refactor: fix typos (#18000) 2017-07-07 16:55:17 -07:00
http docs(aio): rename http guide 2017-04-20 16:01:44 +01:00
i18n feat(common): drop use of the Intl API to improve browser support (#18284) 2017-08-22 15:43:58 -05:00
lifecycle-hooks feat(aio): add e2e (#15976) 2017-04-19 22:36:23 -05:00
ngcontainer docs(aio): update migrated content from anguar.io 2017-03-28 10:21:46 +01:00
ngmodule docs(aio): change Angular Module to NgModule (#16964) 2017-07-11 15:05:20 -07:00
pipes feat(common): drop use of the Intl API to improve browser support (#18284) 2017-08-22 15:43:58 -05:00
quickstart docs(aio): remove js examples 2017-04-20 16:04:06 +01:00
reactive-forms docs(aio): change Angular Module to NgModule (#16964) 2017-07-11 15:05:20 -07:00
router docs: Updated router guide content and examples for paramMap 2017-06-29 09:35:39 -07:00
security build(aio): lint examples 2017-05-03 13:44:41 -07:00
set-document-title docs(aio): rename cb- files and a few others 2017-04-24 14:00:51 +01:00
setup fix(aio): switch from innerText to textContent to support older browsers 2017-06-19 10:32:36 -07:00
structural-directives docs(aio): Update NgStyle and NgClass to use quoted keys 2017-07-07 16:17:33 -07:00
styleguide docs(aio): fix host usage in styleguide (#17932) 2017-07-11 11:58:26 -07:00
template-syntax docs(aio): Update NgStyle and NgClass to use quoted keys 2017-07-07 16:17:33 -07:00
testing refactor: fix typos (#18000) 2017-07-07 16:55:17 -07:00
toh-pt1 build(aio): lint examples 2017-05-03 13:44:41 -07:00
toh-pt2 build(aio): lint examples 2017-05-03 13:44:41 -07:00
toh-pt3 build(aio): lint examples 2017-05-03 13:44:41 -07:00
toh-pt4 build(aio): lint examples 2017-05-03 13:44:41 -07:00
toh-pt5 docs: Updated router guide content and examples for paramMap 2017-06-29 09:35:39 -07:00
toh-pt6 docs(aio): remove generated styles.css file 2017-07-28 15:28:28 -07:00
universal docs: Updated router guide content and examples for paramMap 2017-06-29 09:35:39 -07:00
upgrade-module docs(aio): rework of the upgrade guide 2017-05-19 09:42:17 +01:00
upgrade-phonecat-1-typescript docs(aio): remove example specific .gitignore files 2017-06-09 14:33:21 +01:00
upgrade-phonecat-2-hybrid docs(aio): delay ngUpgrade e2e test to avoid flakes 2017-07-28 15:28:28 -07:00
upgrade-phonecat-3-final docs(aio): Update NgStyle and NgClass to use quoted keys 2017-07-07 16:17:33 -07:00
user-input docs(aio): final migration from old site 2017-04-12 21:01:55 +01:00
visual-studio-2015 docs(aio): remove example specific .gitignore files 2017-06-09 14:33:21 +01:00
webpack docs(aio): update typescript for examples/webpack to same as cli 2017-06-13 10:28:10 -07:00
.gitignore docs: remove TypeScript to JavaScript guide & sample 2017-08-15 16:31:31 -07:00
tsconfig.json build(aio): give intellisense to the examples 2017-04-15 22:15:54 +01:00
tslint.json build(aio): lint examples 2017-05-03 13:44:41 -07:00