| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @license | 
					
						
							|  |  |  |  * Copyright Google Inc. All Rights Reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Use of this source code is governed by an MIT-style license that can be | 
					
						
							|  |  |  |  * found in the LICENSE file at https://angular.io/license
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import {NgLocalization} from '@angular/common'; | 
					
						
							|  |  |  | import {ResourceLoader} from '@angular/compiler'; | 
					
						
							|  |  |  | import {MessageBundle} from '@angular/compiler/src/i18n/message_bundle'; | 
					
						
							|  |  |  | import {Xliff} from '@angular/compiler/src/i18n/serializers/xliff'; | 
					
						
							|  |  |  | import {HtmlParser} from '@angular/compiler/src/ml_parser/html_parser'; | 
					
						
							|  |  |  | import {DEFAULT_INTERPOLATION_CONFIG} from '@angular/compiler/src/ml_parser/interpolation_config'; | 
					
						
							|  |  |  | import {DebugElement, TRANSLATIONS, TRANSLATIONS_FORMAT} from '@angular/core'; | 
					
						
							|  |  |  | import {ComponentFixture, TestBed, async} from '@angular/core/testing'; | 
					
						
							|  |  |  | import {expect} from '@angular/platform-browser/testing/src/matchers'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import {SpyResourceLoader} from '../spies'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import {FrLocalization, HTML, I18nComponent, validateHtml} from './integration_common'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-16 14:42:55 -08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |   describe('i18n XLIFF integration spec', () => { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     beforeEach(async(() => { | 
					
						
							|  |  |  |       TestBed.configureCompiler({ | 
					
						
							|  |  |  |         providers: [ | 
					
						
							| 
									
										
											  
											
												perf: switch angular to use StaticInjector instead of ReflectiveInjector
This change allows ReflectiveInjector to be tree shaken resulting
in not needed Reflect polyfil and smaller bundles.
Code savings for HelloWorld using Closure:
Reflective: bundle.js:  105,864(34,190 gzip)
    Static: bundle.js:  154,889(33,555 gzip)
                            645( 2%)
BREAKING CHANGE:
`platformXXXX()` no longer accepts providers which depend on reflection.
Specifically the method signature when from `Provider[]` to
`StaticProvider[]`.
Example:
Before:
```
[
  MyClass,
  {provide: ClassA, useClass: SubClassA}
]
```
After:
```
[
  {provide: MyClass, deps: [Dep1,...]},
  {provide: ClassA, useClass: SubClassA, deps: [Dep1,...]}
]
```
NOTE: This only applies to platform creation and providers for the JIT
compiler. It does not apply to `@Compotent` or `@NgModule` provides
declarations.
Benchpress note: Previously Benchpress also supported reflective
provides, which now require static providers.
DEPRECATION:
- `ReflectiveInjector` is now deprecated as it will be remove. Use
  `Injector.create` as a replacement.
closes #18496
											
										 
											2017-08-03 12:33:29 -07:00
										 |  |  |           SpyResourceLoader.PROVIDE, | 
					
						
							|  |  |  |           FrLocalization.PROVIDE, | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |           {provide: TRANSLATIONS, useValue: XLIFF_TOMERGE}, | 
					
						
							|  |  |  |           {provide: TRANSLATIONS_FORMAT, useValue: 'xliff'}, | 
					
						
							|  |  |  |         ] | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       TestBed.configureTestingModule({declarations: [I18nComponent]}); | 
					
						
							|  |  |  |     })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it('should extract from templates', () => { | 
					
						
							|  |  |  |       const catalog = new MessageBundle(new HtmlParser, [], {}); | 
					
						
							|  |  |  |       const serializer = new Xliff(); | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |       catalog.updateFromTemplate(HTML, 'file.ts', DEFAULT_INTERPOLATION_CONFIG); | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |       expect(catalog.write(serializer)).toContain(XLIFF_EXTRACTED); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it('should translate templates', () => { | 
					
						
							|  |  |  |       const tb: ComponentFixture<I18nComponent> = | 
					
						
							|  |  |  |           TestBed.overrideTemplate(I18nComponent, HTML).createComponent(I18nComponent); | 
					
						
							|  |  |  |       const cmp: I18nComponent = tb.componentInstance; | 
					
						
							|  |  |  |       const el: DebugElement = tb.debugElement; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       validateHtml(tb, cmp, el); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const XLIFF_TOMERGE = `
 | 
					
						
							|  |  |  |       <trans-unit id="3cb04208df1c2f62553ed48e75939cf7107f9dad" datatype="html"> | 
					
						
							|  |  |  |         <source>i18n attribute on tags</source> | 
					
						
							|  |  |  |         <target>attributs i18n sur les balises</target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="52895b1221effb3f3585b689f049d2784d714952" datatype="html"> | 
					
						
							|  |  |  |         <source>nested</source> | 
					
						
							|  |  |  |         <target>imbriqué</target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="88d5f22050a9df477ee5646153558b3a4862d47e" datatype="html"> | 
					
						
							|  |  |  |         <source>nested</source> | 
					
						
							|  |  |  |         <target>imbriqué</target> | 
					
						
							|  |  |  |         <note priority="1" from="meaning">different meaning</note> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="34fec9cc62e28e8aa6ffb306fa8569ef0a8087fe" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source><x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>with placeholders<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/></source> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <target><x id="START_ITALIC_TEXT" ctype="x-i"/>avec des espaces réservés<x id="CLOSE_ITALIC_TEXT" ctype="x-i"/></target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |       <trans-unit id="651d7249d3a225037eb66f3433d98ad4a86f0a22" datatype="html"> | 
					
						
							|  |  |  |         <source><x id="START_TAG_DIV" ctype="x-div"/>with <x id="START_TAG_DIV" ctype="x-div"/>nested<x id="CLOSE_TAG_DIV" ctype="x-div"/> placeholders<x id="CLOSE_TAG_DIV" ctype="x-div"/></source> | 
					
						
							|  |  |  |         <target><x id="START_TAG_DIV" ctype="x-div"/>with <x id="START_TAG_DIV" ctype="x-div"/>nested<x id="CLOSE_TAG_DIV" ctype="x-div"/> placeholders<x id="CLOSE_TAG_DIV" ctype="x-div"/></target> | 
					
						
							|  |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							|  |  |  |           <context context-type="linenumber">11</context> | 
					
						
							|  |  |  |         </context-group> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       <trans-unit id="1fe4616cce80a57c7707bac1c97054aa8e244a67" datatype="html"> | 
					
						
							|  |  |  |         <source>on not translatable node</source> | 
					
						
							|  |  |  |         <target>sur des balises non traductibles</target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2018-03-28 22:10:08 -07:00
										 |  |  |       <trans-unit id="480aaeeea1570bc1dde6b8404e380dee11ed0759" datatype="html"> | 
					
						
							|  |  |  |         <source><b>bold</b></source> | 
					
						
							|  |  |  |         <target><b>gras</b></target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       <trans-unit id="67162b5af5f15fd0eb6480c88688dafdf952b93a" datatype="html"> | 
					
						
							|  |  |  |         <source>on translatable node</source> | 
					
						
							|  |  |  |         <target>sur des balises traductibles</target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="dc5536bb9e0e07291c185a0d306601a2ecd4813f" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source>{VAR_PLURAL, plural, =0 {zero} =1 {one} =2 {two} other {<x id="START_BOLD_TEXT" ctype="x-b" equiv-text="<b>"/>many<x id="CLOSE_BOLD_TEXT" ctype="x-b" equiv-text="</b>"/>} }</source> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <target>{VAR_PLURAL, plural, =0 {zero} =1 {un} =2 {deux} other {<x id="START_BOLD_TEXT" ctype="x-b"/>beaucoup<x id="CLOSE_BOLD_TEXT" ctype="x-b"/>} }</target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |       <trans-unit id="49feb201083cbd2c8bfc48a4ae11f105fb984876" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <source> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |         <x id="ICU" equiv-text="{sex, select, male {...} female {...}}"/> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |     </source> | 
					
						
							|  |  |  |         <target><x id="ICU"/></target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |       <trans-unit id="f3be30eb9a18f6e336cc3ca4dd66bbc3a35c5f97" datatype="html"> | 
					
						
							|  |  |  |         <source>{VAR_SELECT, select, other {other} male {m} female {f} }</source> | 
					
						
							|  |  |  |         <target>{VAR_SELECT, select, other {autre} male {homme} female {femme}}</target> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |       <trans-unit id="cc16e9745fa0b95b2ebc2f18b47ed8e64fe5f0f9" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <source> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <x id="ICU" equiv-text="{sexB, select, m {...} f {...}}"/> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |     </source> | 
					
						
							|  |  |  |         <target><x id="ICU"/></target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |       <trans-unit id="4573f2edb0329d69afc2ab8c73c71e2f8b08f807" datatype="html"> | 
					
						
							|  |  |  |         <source>{VAR_SELECT, select, male {m} female {f} }</source> | 
					
						
							|  |  |  |         <target>{VAR_SELECT, select, male {homme} female {femme} }</target> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="d9879678f727b244bc7c7e20f22b63d98cb14890" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source><x id="INTERPOLATION" equiv-text="{{ "count = " + count }}"/></source> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <target><x id="INTERPOLATION"/></target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="50dac33dc6fc0578884baac79d875785ed77c928" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source>sex = <x id="INTERPOLATION" equiv-text="{{ sex }}"/></source> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <target>sexe = <x id="INTERPOLATION"/></target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="a46f833b1fe6ca49e8b97c18f4b7ea0b930c9383" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source><x id="CUSTOM_NAME" equiv-text="{{ "custom name" //i18n(ph="CUSTOM_NAME") }}"/></source> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <target><x id="CUSTOM_NAME"/></target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="2ec983b4893bcd5b24af33bebe3ecba63868453c" datatype="html"> | 
					
						
							|  |  |  |         <source>in a translatable section</source> | 
					
						
							|  |  |  |         <target>dans une section traductible</target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |       <trans-unit id="7f6272480ea8e7ffab548da885ab8105ee2caa93" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <source> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |     <x id="START_HEADING_LEVEL1" ctype="x-h1" equiv-text="<h1>"/>Markers in html comments<x id="CLOSE_HEADING_LEVEL1" ctype="x-h1" equiv-text="</h1>"/> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |     <x id="START_TAG_DIV" ctype="x-div" equiv-text="<div>"/><x id="CLOSE_TAG_DIV" ctype="x-div" equiv-text="</div>"/> | 
					
						
							|  |  |  |     <x id="START_TAG_DIV_1" ctype="x-div" equiv-text="<div>"/><x id="ICU" equiv-text="{count, plural, =0 {...} =1 {...} =2 {...} other {...}}"/><x id="CLOSE_TAG_DIV" ctype="x-div" equiv-text="</div>"/> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  | </source> | 
					
						
							|  |  |  |         <target> | 
					
						
							| 
									
										
										
										
											2017-07-13 13:55:15 +02:00
										 |  |  |     <x id="START_HEADING_LEVEL1" ctype="x-h1"/>Balises dans les commentaires html<x id="CLOSE_HEADING_LEVEL1" ctype="x-h1"/> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |     <x id="START_TAG_DIV" ctype="x-div"/><x id="CLOSE_TAG_DIV" ctype="x-div"/> | 
					
						
							|  |  |  |     <x id="START_TAG_DIV_1" ctype="x-div"/><x id="ICU"/><x id="CLOSE_TAG_DIV" ctype="x-div"/> | 
					
						
							|  |  |  | </target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="93a30c67d4e6c9b37aecfe2ac0f2b5d366d7b520" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source>it <x id="START_BOLD_TEXT" ctype="x-b" equiv-text="<b>"/>should<x id="CLOSE_BOLD_TEXT" ctype="x-b" equiv-text="</b>"/> work</source> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <target>ca <x id="START_BOLD_TEXT" ctype="x-b"/>devrait<x id="CLOSE_BOLD_TEXT" ctype="x-b"/> marcher</target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="i18n16" datatype="html"> | 
					
						
							|  |  |  |         <source>with an explicit ID</source> | 
					
						
							|  |  |  |         <target>avec un ID explicite</target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="i18n17" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source>{VAR_PLURAL, plural, =0 {zero} =1 {one} =2 {two} other {<x id="START_BOLD_TEXT" ctype="x-b" equiv-text="<b>"/>many<x id="CLOSE_BOLD_TEXT" ctype="x-b" equiv-text="</b>"/>} }</source> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <target>{VAR_PLURAL, plural, =0 {zero} =1 {un} =2 {deux} other {<x id="START_BOLD_TEXT" ctype="x-b"/>beaucoup<x id="CLOSE_BOLD_TEXT" ctype="x-b"/>} }</target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="2370d995bdcc1e7496baa32df20654aff65c2d10" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source>{VAR_PLURAL, plural, =0 {Found no results} =1 {Found one result} other {Found <x id="INTERPOLATION" equiv-text="{{response.getItemsList().length}}"/> results} }</source> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <target>{VAR_PLURAL, plural, =0 {Pas de réponse} =1 {une réponse} other {Found <x id="INTERPOLATION"/> réponse} }</target> | 
					
						
							|  |  |  |         <note priority="1" from="description">desc</note> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="296ab5eab8d370822488c152586db3a5875ee1a2" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source>foo<x id="START_LINK" ctype="x-a" equiv-text="<a>"/>bar<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/></source> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <target>FOO<x id="START_LINK" ctype="x-a"/>BAR<x id="CLOSE_LINK" ctype="x-a"/></target> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="2e013b311caa0916478941a985887e091d8288b6" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source><x id="MAP NAME" equiv-text="{{ 'test' //i18n(ph="map name") }}"/></source> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <target><x id="MAP NAME"/></target> | 
					
						
							|  |  |  |       </trans-unit>`; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const XLIFF_EXTRACTED = `
 | 
					
						
							|  |  |  |       <trans-unit id="3cb04208df1c2f62553ed48e75939cf7107f9dad" datatype="html"> | 
					
						
							|  |  |  |         <source>i18n attribute on tags</source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							|  |  |  |           <context context-type="linenumber">3</context> | 
					
						
							|  |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="52895b1221effb3f3585b689f049d2784d714952" datatype="html"> | 
					
						
							|  |  |  |         <source>nested</source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							|  |  |  |           <context context-type="linenumber">5</context> | 
					
						
							|  |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="88d5f22050a9df477ee5646153558b3a4862d47e" datatype="html"> | 
					
						
							|  |  |  |         <source>nested</source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							|  |  |  |           <context context-type="linenumber">7</context> | 
					
						
							|  |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <note priority="1" from="meaning">different meaning</note> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="34fec9cc62e28e8aa6ffb306fa8569ef0a8087fe" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source><x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="<i>"/>with placeholders<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="</i>"/></source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							|  |  |  |           <context context-type="linenumber">9</context> | 
					
						
							|  |  |  |         </context-group> | 
					
						
							|  |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							|  |  |  |           <context context-type="linenumber">10</context> | 
					
						
							|  |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |       <trans-unit id="651d7249d3a225037eb66f3433d98ad4a86f0a22" datatype="html"> | 
					
						
							|  |  |  |         <source><x id="START_TAG_DIV" ctype="x-div" equiv-text="<div>"/>with <x id="START_TAG_DIV" ctype="x-div" equiv-text="<div>"/>nested<x id="CLOSE_TAG_DIV" ctype="x-div" equiv-text="</div>"/> placeholders<x id="CLOSE_TAG_DIV" ctype="x-div" equiv-text="</div>"/></source> | 
					
						
							|  |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							|  |  |  |           <context context-type="linenumber">11</context> | 
					
						
							|  |  |  |         </context-group> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       <trans-unit id="1fe4616cce80a57c7707bac1c97054aa8e244a67" datatype="html"> | 
					
						
							|  |  |  |         <source>on not translatable node</source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">14</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2018-03-28 22:10:08 -07:00
										 |  |  |       <trans-unit id="480aaeeea1570bc1dde6b8404e380dee11ed0759" datatype="html"> | 
					
						
							|  |  |  |         <source><b>bold</b></source> | 
					
						
							|  |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							|  |  |  |           <context context-type="linenumber">14</context> | 
					
						
							|  |  |  |         </context-group> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       <trans-unit id="67162b5af5f15fd0eb6480c88688dafdf952b93a" datatype="html"> | 
					
						
							|  |  |  |         <source>on translatable node</source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">15</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="dc5536bb9e0e07291c185a0d306601a2ecd4813f" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source>{VAR_PLURAL, plural, =0 {zero} =1 {one} =2 {two} other {<x id="START_BOLD_TEXT" ctype="x-b" equiv-text="<b>"/>many<x id="CLOSE_BOLD_TEXT" ctype="x-b" equiv-text="</b>"/>} }</source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">20</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							|  |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">37</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |       <trans-unit id="49feb201083cbd2c8bfc48a4ae11f105fb984876" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <source> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |         <x id="ICU" equiv-text="{sex, select, male {...} female {...} other {...}}"/> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |     </source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">22</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |       <trans-unit id="f3be30eb9a18f6e336cc3ca4dd66bbc3a35c5f97" datatype="html"> | 
					
						
							|  |  |  |         <source>{VAR_SELECT, select, male {m} female {f} other {other} }</source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">23</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |       <trans-unit id="cc16e9745fa0b95b2ebc2f18b47ed8e64fe5f0f9" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <source> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |         <x id="ICU" equiv-text="{sexB, select, male {...} female {...}}"/> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |     </source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">25</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |       <trans-unit id="4573f2edb0329d69afc2ab8c73c71e2f8b08f807" datatype="html"> | 
					
						
							|  |  |  |         <source>{VAR_SELECT, select, male {m} female {f} }</source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">26</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="d9879678f727b244bc7c7e20f22b63d98cb14890" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source><x id="INTERPOLATION" equiv-text="{{ "count = " + count }}"/></source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">29</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="50dac33dc6fc0578884baac79d875785ed77c928" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source>sex = <x id="INTERPOLATION" equiv-text="{{ sex }}"/></source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">30</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="a46f833b1fe6ca49e8b97c18f4b7ea0b930c9383" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source><x id="CUSTOM_NAME" equiv-text="{{ "custom name" //i18n(ph="CUSTOM_NAME") }}"/></source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">31</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="2ec983b4893bcd5b24af33bebe3ecba63868453c" datatype="html"> | 
					
						
							|  |  |  |         <source>in a translatable section</source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">36</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							|  |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">54</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |       <trans-unit id="7f6272480ea8e7ffab548da885ab8105ee2caa93" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <source> | 
					
						
							| 
									
										
										
										
											2018-01-22 12:23:10 -08:00
										 |  |  |     <x id="START_HEADING_LEVEL1" ctype="x-h1" equiv-text="<h1>"/>Markers in html comments<x id="CLOSE_HEADING_LEVEL1" ctype="x-h1" equiv-text="</h1>"/> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |     <x id="START_TAG_DIV" ctype="x-div" equiv-text="<div>"/><x id="CLOSE_TAG_DIV" ctype="x-div" equiv-text="</div>"/> | 
					
						
							|  |  |  |     <x id="START_TAG_DIV_1" ctype="x-div" equiv-text="<div>"/><x id="ICU" equiv-text="{count, plural, =0 {...} =1 {...} =2 {...} other {...}}"/><x id="CLOSE_TAG_DIV" ctype="x-div" equiv-text="</div>"/> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  | </source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">34</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="93a30c67d4e6c9b37aecfe2ac0f2b5d366d7b520" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source>it <x id="START_BOLD_TEXT" ctype="x-b" equiv-text="<b>"/>should<x id="CLOSE_BOLD_TEXT" ctype="x-b" equiv-text="</b>"/> work</source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">40</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="i18n16" datatype="html"> | 
					
						
							|  |  |  |         <source>with an explicit ID</source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">42</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="i18n17" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source>{VAR_PLURAL, plural, =0 {zero} =1 {one} =2 {two} other {<x id="START_BOLD_TEXT" ctype="x-b" equiv-text="<b>"/>many<x id="CLOSE_BOLD_TEXT" ctype="x-b" equiv-text="</b>"/>} }</source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">43</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="2370d995bdcc1e7496baa32df20654aff65c2d10" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source>{VAR_PLURAL, plural, =0 {Found no results} =1 {Found one result} other {Found <x id="INTERPOLATION" equiv-text="{{response.getItemsList().length}}"/> results} }</source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">46</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |         <note priority="1" from="description">desc</note> | 
					
						
							|  |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="296ab5eab8d370822488c152586db3a5875ee1a2" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source>foo<x id="START_LINK" ctype="x-a" equiv-text="<a>"/>bar<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/></source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">54</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit> | 
					
						
							|  |  |  |       <trans-unit id="2e013b311caa0916478941a985887e091d8288b6" datatype="html"> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |         <source><x id="MAP NAME" equiv-text="{{ 'test' //i18n(ph="map name") }}"/></source> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         <context-group purpose="location"> | 
					
						
							|  |  |  |           <context context-type="sourcefile">file.ts</context> | 
					
						
							| 
									
										
										
										
											2017-07-12 16:27:53 +02:00
										 |  |  |           <context context-type="linenumber">56</context> | 
					
						
							| 
									
										
										
										
											2017-04-14 18:06:25 +02:00
										 |  |  |         </context-group> | 
					
						
							| 
									
										
										
										
											2017-03-13 11:40:44 +01:00
										 |  |  |       </trans-unit>`; |