{"action":"created","issue":{"url":"https://api.github.com/repos/angular/angular/issues/26794","repository_url":"https://api.github.com/repos/angular/angular","labels_url":"https://api.github.com/repos/angular/angular/issues/26794/labels{/name}","comments_url":"https://api.github.com/repos/angular/angular/issues/26794/comments","events_url":"https://api.github.com/repos/angular/angular/issues/26794/events","html_url":"https://github.com/angular/angular/pull/26794","id":374584799,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI2MjU0OTE5","number":26794,"title":" feat(ivy): ICU support for Ivy (compiler side)","user":{"login":"AndrewKushnir","id":43554145,"node_id":"MDQ6VXNlcjQzNTU0MTQ1","avatar_url":"https://avatars1.githubusercontent.com/u/43554145?v=4","gravatar_id":"","url":"https://api.github.com/users/AndrewKushnir","html_url":"https://github.com/AndrewKushnir","followers_url":"https://api.github.com/users/AndrewKushnir/followers","following_url":"https://api.github.com/users/AndrewKushnir/following{/other_user}","gists_url":"https://api.github.com/users/AndrewKushnir/gists{/gist_id}","starred_url":"https://api.github.com/users/AndrewKushnir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AndrewKushnir/subscriptions","organizations_url":"https://api.github.com/users/AndrewKushnir/orgs","repos_url":"https://api.github.com/users/AndrewKushnir/repos","events_url":"https://api.github.com/users/AndrewKushnir/events{/privacy}","received_events_url":"https://api.github.com/users/AndrewKushnir/received_events","type":"User","site_admin":false},"labels":[{"id":217969169,"node_id":"MDU6TGFiZWwyMTc5NjkxNjk=","url":"https://api.github.com/repos/angular/angular/labels/PR%20action:%20review","name":"PR action: review","color":"fbca04","default":false},{"id":149476251,"node_id":"MDU6TGFiZWwxNDk0NzYyNTE=","url":"https://api.github.com/repos/angular/angular/labels/cla:%20yes","name":"cla: yes","color":"009800","default":false},{"id":799860804,"node_id":"MDU6TGFiZWw3OTk4NjA4MDQ=","url":"https://api.github.com/repos/angular/angular/labels/comp:%20ivy","name":"comp: ivy","color":"c5def5","default":false},{"id":130606845,"node_id":"MDU6TGFiZWwxMzA2MDY4NDU=","url":"https://api.github.com/repos/angular/angular/labels/type:%20feature","name":"type: feature","color":"EEEEEE","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/angular/angular/milestones/83","html_url":"https://github.com/angular/angular/milestone/83","labels_url":"https://api.github.com/repos/angular/angular/milestones/83/labels","id":3143880,"node_id":"MDk6TWlsZXN0b25lMzE0Mzg4MA==","number":83,"title":"needsTriage","description":"Milestone for all issues that haven't been triaged yet","creator":{"login":"ocombe","id":265378,"node_id":"MDQ6VXNlcjI2NTM3OA==","avatar_url":"https://avatars0.githubusercontent.com/u/265378?v=4","gravatar_id":"","url":"https://api.github.com/users/ocombe","html_url":"https://github.com/ocombe","followers_url":"https://api.github.com/users/ocombe/followers","following_url":"https://api.github.com/users/ocombe/following{/other_user}","gists_url":"https://api.github.com/users/ocombe/gists{/gist_id}","starred_url":"https://api.github.com/users/ocombe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ocombe/subscriptions","organizations_url":"https://api.github.com/users/ocombe/orgs","repos_url":"https://api.github.com/users/ocombe/repos","events_url":"https://api.github.com/users/ocombe/events{/privacy}","received_events_url":"https://api.github.com/users/ocombe/received_events","type":"User","site_admin":false},"open_issues":289,"closed_issues":794,"state":"open","created_at":"2018-02-26T14:22:18Z","updated_at":"2018-11-05T19:39:39Z","due_on":null,"closed_at":null},"comments":17,"created_at":"2018-10-27T00:11:36Z","updated_at":"2018-11-05T20:16:40Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/angular/angular/pulls/26794","html_url":"https://github.com/angular/angular/pull/26794","diff_url":"https://github.com/angular/angular/pull/26794.diff","patch_url":"https://github.com/angular/angular/pull/26794.patch"},"body":"The goal of this PR is to add [I18n ICU](https://angular.io/guide/i18n#pluralization) support to IVY compiler. In order to satisfy the backwards (and forward) compatibility requirement, the logic of producing translation messages (`goog.getMsg` at this moment) mimics existing `ng xi18n` machinery output, specifically:\r\n\r\n- each ICU takes a separate translation call/unit\r\n- nested ICUs are *not* presented as top-level translations, they remain a part of the parent ICU\r\n- attribute translation also takes a separate call/unit\r\n\r\nThe I18n AST (which is used to power `ng xi18n` mechanics) was employed to minimize discrepancies between the `ng xi18n` output and IVY compiler output. Nodes within I18n sections now have references to their canonical representation in i18n AST, which helps maintain output consistency.\r\n\r\n**Next steps (in separate PRs)**\r\n\r\n- implement post-processing for `goog.getMsg` output, since the placeholders might not be unique (for ex. `CLOSE_TAG_DIV` can be used multiple times, but we have to have different references/indices). Right now in such cases we put a specially-formatted string that contains these combinations (for ex. `[�/#1�|�/#4:3�|�7:4�]`). The post-processing step will assemble the final string at runtime, based on this information.\r\n- improve ConstanlPool API to support `i18n` blocks (as they [will contain more logic](https://github.com/angular/angular/blob/master/packages/core/src/render3/i18n.md#translation-message-retrieval))\r\n\r\n\r\n## PR Type\r\nWhat kind of change does this PR introduce?\r\n\r\n- [ ] Bugfix\r\n- [x] Feature\r\n- [ ] Code style update (formatting, local variables)\r\n\r\n## Does this PR introduce a breaking change?\r\n\r\n- [ ] Yes\r\n- [x] No"},"comment":{"url":"https://api.github.com/repos/angular/angular/issues/comments/436019858","html_url":"https://github.com/angular/angular/pull/26794#issuecomment-436019858","issue_url":"https://api.github.com/repos/angular/angular/issues/26794","id":436019858,"node_id":"MDEyOklzc3VlQ29tbWVudDQzNjAxOTg1OA==","user":{"login":"mary-poppins","id":4871841,"node_id":"MDQ6VXNlcjQ4NzE4NDE=","avatar_url":"https://avatars3.githubusercontent.com/u/4871841?v=4","gravatar_id":"","url":"https://api.github.com/users/mary-poppins","html_url":"https://github.com/mary-poppins","followers_url":"https://api.github.com/users/mary-poppins/followers","following_url":"https://api.github.com/users/mary-poppins/following{/other_user}","gists_url":"https://api.github.com/users/mary-poppins/gists{/gist_id}","starred_url":"https://api.github.com/users/mary-poppins/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mary-poppins/subscriptions","organizations_url":"https://api.github.com/users/mary-poppins/orgs","repos_url":"https://api.github.com/users/mary-poppins/repos","events_url":"https://api.github.com/users/mary-poppins/events{/privacy}","received_events_url":"https://api.github.com/users/mary-poppins/received_events","type":"User","site_admin":false},"created_at":"2018-11-05T20:16:40Z","updated_at":"2018-11-05T20:16:40Z","author_association":"NONE","body":"You can preview 47e7e46 at https://pr26794-47e7e46.ngbuilds.io/."}}
{"actor":{"display_login":"mary-poppins"}}