test(compiler-cli): migrate i18n compliance tests (#39661)
This commit provides the machinery for the new file-based compliance test approach for i18n tests, and migrates the i18n tests to this new format. PR Close #39661
This commit is contained in:
parent
63dcfb2913
commit
2786292780
|
@ -38,6 +38,7 @@ Each test-case can specify:
|
|||
* A `description` of the test.
|
||||
* The `inputFiles` that will be compiled.
|
||||
* Additional `compilerOptions` and `angularCompilerOptions` that are passed to the compiler.
|
||||
* Whether to exclude this test-case from partial compilation tests (`excludeFromPartialTests`).
|
||||
* A collection of `expectations` definitions that will be checked against the generated files.
|
||||
|
||||
Note that there is a JSON schema for the `TEST_CASES.json` file stored at `test_cases/test_case_schema.json`.
|
||||
|
@ -77,24 +78,53 @@ The paths are relative to the `TEST_CASES.json` file.
|
|||
|
||||
If no `inputFiles` property is provided, the default is `["test.ts"]`.
|
||||
|
||||
Note that test-cases can share input files, but you should only do this if these input files are
|
||||
going to be compiled using the same options. This is because only one version of the compiled input
|
||||
file is retrieved from the golden partial file to be used in the linker tests. This can cause the
|
||||
linker tests to fail if they are provided with a compiled file (from the golden partial) that was
|
||||
compiled with different options to what are expected for that test-case.
|
||||
|
||||
|
||||
### Expectations
|
||||
|
||||
An expectation consists of a collection of expected `files` pairs, and a `failureMessage`, which
|
||||
is displayed if the expectation check fails.
|
||||
An expectation consists of a `failureMessage`, which is displayed if the expectation check fails,
|
||||
a collection of expected `files` pairs and/or a collection of `expectedErrors`.
|
||||
|
||||
Each file-pair consists of a path to a `generated` file (relative to the build output folder),
|
||||
Each expected file-pair consists of a path to a `generated` file (relative to the build output folder),
|
||||
and a path to an `expected` file (relative to the test case).
|
||||
|
||||
The `generated` file is checked to see if it "matches" the `expected` file. The matching is
|
||||
resilient to whitespace and variable name changes.
|
||||
|
||||
If no `failureMessage` property is provided, the default is `"Incorrect generated output."`.
|
||||
|
||||
If no `files` property is provided, the default is a a collection of objects `{expected, generated}`,
|
||||
where `expected` and `generated` are computed by taking each path in the `inputFiles` collection
|
||||
and replacing the `.ts` extension with `.js`.
|
||||
|
||||
Each expected error must have a `message` property and, optionally, a `location` property. These are
|
||||
parsed as regular expressions (so `.` and `(` etc must be escaped) and tested against the errors that
|
||||
are returned as diagnostics from the compilation.
|
||||
|
||||
If no `failureMessage` property is provided, the default is `"Incorrect generated output."`.
|
||||
|
||||
|
||||
### Expected file format
|
||||
|
||||
The expected files look like JavaScript but are actually specially formatted to allow matching
|
||||
with the generated output. The generated and expected files are tokenized and then the tokens
|
||||
are intelligently matched to check whether they are equivalent.
|
||||
|
||||
* Whitespace tolerant - the tokens can be separated by any amount of whitespace
|
||||
* Code skipping - you can skip sections of code in the generated output by adding an ellipsis
|
||||
(…) to the expectation file.
|
||||
* Identifier tolerant - identifiers in the expectation file that start and end with a dollar
|
||||
(e.g. `$r3$`) will be matched against any identifier. But the matching will ensure that the
|
||||
same identifier name appears consistently elsewhere in the file.
|
||||
* Macro expansion - we can add macros to the expected files that will be expanded to blocks
|
||||
of code dynamically. The following macros are defined in the
|
||||
`test_helpers/expected_file_macros.ts` file:
|
||||
* I18n messages - for example:
|
||||
`__i18nMsg__('message string', [ ['placeholder', 'pair] ], { meta: 'properties'})`.
|
||||
* Attribute markers - for example: `__AttributeMarker.Bindings__`.
|
||||
|
||||
## Running tests
|
||||
|
||||
|
@ -153,6 +183,18 @@ To debug generating the partial golden output use the following form of Bazel co
|
|||
yarn bazel run //packages/compiler-cli/test/compliance/test_cases:generate_partial_for_<path/to/test_case>.debug
|
||||
```
|
||||
|
||||
The `path/to/test_case` is relative to the `test_cases` directory. So for this `TEST_CASES.json` file at:
|
||||
|
||||
```
|
||||
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_directives/directives/matching/TEST_CASES.json
|
||||
```
|
||||
|
||||
The command to debug the test-cases would be:
|
||||
|
||||
```
|
||||
yarn bazel run //packages/compiler-cli/test/compliance/test_cases:generate_partial_for_r3_view_compiler_directives/directives/matching.debug
|
||||
```
|
||||
|
||||
|
||||
### Focusing test-cases
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
import {FileSystem} from '../../../src/ngtsc/file_system';
|
||||
import {compileTest} from '../test_helpers/compile_test';
|
||||
import {CompileResult, compileTest} from '../test_helpers/compile_test';
|
||||
import {ComplianceTest} from '../test_helpers/get_compliance_tests';
|
||||
import {runTests} from '../test_helpers/test_runner';
|
||||
|
||||
|
@ -18,6 +18,6 @@ runTests('full compile', compileTests);
|
|||
* @param fs The mock file-system where the input files can be found.
|
||||
* @param test The compliance test whose input files should be compiled.
|
||||
*/
|
||||
function compileTests(fs: FileSystem, test: ComplianceTest): void {
|
||||
compileTest(fs, test.inputFiles, test.compilerOptions, test.angularCompilerOptions);
|
||||
function compileTests(fs: FileSystem, test: ComplianceTest): CompileResult {
|
||||
return compileTest(fs, test.inputFiles, test.compilerOptions, test.angularCompilerOptions);
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ import {PluginObj, transformSync} from '@babel/core';
|
|||
|
||||
import {createEs2015LinkerPlugin} from '../../../linker/babel';
|
||||
import {AbsoluteFsPath, FileSystem} from '../../../src/ngtsc/file_system';
|
||||
import {getBuildOutputDirectory} from '../test_helpers/compile_test';
|
||||
import {CompileResult, getBuildOutputDirectory} from '../test_helpers/compile_test';
|
||||
import {ComplianceTest} from '../test_helpers/get_compliance_tests';
|
||||
import {parseGoldenPartial} from '../test_helpers/golden_partials';
|
||||
import {runTests} from '../test_helpers/test_runner';
|
||||
|
@ -22,9 +22,13 @@ runTests('partial compile + link', linkPartials);
|
|||
* @param fs The mock file-system to use for linking the partials.
|
||||
* @param test The compliance test whose partials will be linked.
|
||||
*/
|
||||
function linkPartials(fs: FileSystem, test: ComplianceTest): void {
|
||||
function linkPartials(fs: FileSystem, test: ComplianceTest): CompileResult {
|
||||
const builtDirectory = getBuildOutputDirectory(fs);
|
||||
const linkerPlugin = createEs2015LinkerPlugin(test.angularCompilerOptions);
|
||||
const linkerPlugin = createEs2015LinkerPlugin({
|
||||
// By default we don't render legacy message ids in compliance tests.
|
||||
enableI18nLegacyMessageIdFormat: false,
|
||||
...test.angularCompilerOptions
|
||||
});
|
||||
const goldenPartialPath = fs.resolve('/GOLDEN_PARTIAL.js');
|
||||
if (!fs.exists(goldenPartialPath)) {
|
||||
throw new Error(
|
||||
|
@ -40,6 +44,7 @@ function linkPartials(fs: FileSystem, test: ComplianceTest): void {
|
|||
applyLinker({fileName: partial.path, source: partial.content}, linkerPlugin);
|
||||
safeWrite(fs, fs.resolve(builtDirectory, partial.path), linkedSource);
|
||||
}
|
||||
return {emittedFiles: [], errors: []};
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -36,9 +36,10 @@ export function generateGoldenPartial(testConfigPath: string): void {
|
|||
*/
|
||||
function* compilePartials(fs: FileSystem, test: ComplianceTest): Generator<PartiallyCompiledFile> {
|
||||
const builtDirectory = getBuildOutputDirectory(fs);
|
||||
for (const generatedPath of compileTest(
|
||||
fs, test.inputFiles, test.compilerOptions,
|
||||
{compilationMode: 'partial', ...test.angularCompilerOptions})) {
|
||||
for (const generatedPath of compileTest(fs, test.inputFiles, test.compilerOptions, {
|
||||
compilationMode: 'partial',
|
||||
...test.angularCompilerOptions
|
||||
}).emittedFiles) {
|
||||
yield {
|
||||
path: fs.relative(builtDirectory, generatedPath),
|
||||
content: fs.readFile(generatedPath),
|
||||
|
|
|
@ -0,0 +1,690 @@
|
|||
/****************************************************************************************************
|
||||
* PARTIAL FILE: meaning_description.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n="meaningA|descA@@idA">Content A</div>
|
||||
<div i18n-title="meaningB|descB@@idB" title="Title B">Content B</div>
|
||||
<div i18n-title="meaningC|" title="Title C">Content C</div>
|
||||
<div i18n-title="meaningD|descD" title="Title D">Content D</div>
|
||||
<div i18n-title="meaningE@@idE" title="Title E">Content E</div>
|
||||
<div i18n-title="@@idF" title="Title F">Content F</div>
|
||||
<div i18n-title="[BACKUP_$\{MESSAGE}_ID:idH]\`desc@@idG" title="Title G">Content G</div>
|
||||
<div i18n="Some text \\' [BACKUP_MESSAGE_ID: xxx]">Content H</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n="meaningA|descA@@idA">Content A</div>
|
||||
<div i18n-title="meaningB|descB@@idB" title="Title B">Content B</div>
|
||||
<div i18n-title="meaningC|" title="Title C">Content C</div>
|
||||
<div i18n-title="meaningD|descD" title="Title D">Content D</div>
|
||||
<div i18n-title="meaningE@@idE" title="Title E">Content E</div>
|
||||
<div i18n-title="@@idF" title="Title F">Content F</div>
|
||||
<div i18n-title="[BACKUP_$\{MESSAGE}_ID:idH]\`desc@@idG" title="Title G">Content G</div>
|
||||
<div i18n="Some text \\' [BACKUP_MESSAGE_ID: xxx]">Content H</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: meaning_description.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: ng-template_basic.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<ng-template i18n-title title="Hello"></ng-template>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<ng-template i18n-title title="Hello"></ng-template>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: ng-template_basic.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: ng-template_structural.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<ng-template *ngIf="visible" i18n-title title="Hello">Test</ng-template>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<ng-template *ngIf="visible" i18n-title title="Hello">Test</ng-template>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: ng-template_structural.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: ng-template_interpolation.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<ng-template i18n-title title="Hello {{ name }}"></ng-template>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<ng-template i18n-title title="Hello {{ name }}"></ng-template>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: ng-template_interpolation.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: ng-template_interpolation_structural.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<ng-template *ngIf="true" i18n-title title="Hello {{ name }}"></ng-template>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<ng-template *ngIf="true" i18n-title title="Hello {{ name }}"></ng-template>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: ng-template_interpolation_structural.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: empty_attributes.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div id="static" i18n-title="m|d" title></div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div id="static" i18n-title="m|d" title></div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: empty_attributes.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: bound_attributes.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div
|
||||
[title]="title" i18n-title
|
||||
[attr.label]="label" i18n-attr.label>
|
||||
</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div
|
||||
[title]="title" i18n-title
|
||||
[attr.label]="label" i18n-attr.label>
|
||||
</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: bound_attributes.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: static_attributes.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div id="static" i18n-title="m|d" title="introduction"></div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div id="static" i18n-title="m|d" title="introduction"></div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: static_attributes.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: interpolation_basic.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div id="dynamic-1"
|
||||
i18n-title="m|d" title="intro {{ valueA | uppercase }}"
|
||||
i18n-aria-label="m1|d1" aria-label="{{ valueB }}"
|
||||
i18n-aria-roledescription aria-roledescription="static text"
|
||||
></div>
|
||||
<div id="dynamic-2"
|
||||
i18n-title="m2|d2" title="{{ valueA }} and {{ valueB }} and again {{ valueA + valueB }}"
|
||||
i18n-aria-roledescription aria-roledescription="{{ valueC }}"
|
||||
></div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div id="dynamic-1"
|
||||
i18n-title="m|d" title="intro {{ valueA | uppercase }}"
|
||||
i18n-aria-label="m1|d1" aria-label="{{ valueB }}"
|
||||
i18n-aria-roledescription aria-roledescription="static text"
|
||||
></div>
|
||||
<div id="dynamic-2"
|
||||
i18n-title="m2|d2" title="{{ valueA }} and {{ valueB }} and again {{ valueA + valueB }}"
|
||||
i18n-aria-roledescription aria-roledescription="{{ valueC }}"
|
||||
></div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: interpolation_basic.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: interpolation_custom_config.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n-title="m|d" title="intro {% valueA | uppercase %}"></div>
|
||||
`, isInline: true }, interpolation: ["{%", "%}"] });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n-title="m|d" title="intro {% valueA | uppercase %}"></div>
|
||||
`,
|
||||
interpolation: ['{%', '%}'],
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: interpolation_custom_config.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: interpolation_nested_context.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div *ngFor="let outer of items">
|
||||
<div i18n-title="m|d" title="different scope {{ outer | uppercase }}"></div>
|
||||
</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div *ngFor="let outer of items">
|
||||
<div i18n-title="m|d" title="different scope {{ outer | uppercase }}"></div>
|
||||
</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: interpolation_nested_context.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: interpolation_complex_expressions.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n-title title="{{valueA.getRawValue()?.getTitle()}} title"></div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n-title title="{{valueA.getRawValue()?.getTitle()}} title"></div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: interpolation_complex_expressions.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: interpolation_complex_expressions.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n-title title="{{valueA.getRawValue()?.getTitle()}} title"></div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n-title title="{{valueA.getRawValue()?.getTitle()}} title"></div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: interpolation_complex_expressions.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: i18n_root_node.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n i18n-title="m|d" title="Element title">Some content</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n i18n-title="m|d" title="Element title">Some content</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: i18n_root_node.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: invalid_i18n_meta.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n="@@ID.WITH.INVALID.CHARS.2" i18n-title="@@ID.WITH.INVALID.CHARS" title="Element title">
|
||||
Some content
|
||||
</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n="@@ID.WITH.INVALID.CHARS.2" i18n-title="@@ID.WITH.INVALID.CHARS" title="Element title">
|
||||
Some content
|
||||
</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: invalid_i18n_meta.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
|
@ -0,0 +1,218 @@
|
|||
{
|
||||
"$schema": "../../test_case_schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "should add the meaning and description as JsDoc comments and metadata blocks",
|
||||
"inputFiles": [
|
||||
"meaning_description.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should support i18n attributes on explicit <ng-template> elements",
|
||||
"inputFiles": [
|
||||
"ng-template_basic.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should support i18n attributes on explicit <ng-template> with structural directives",
|
||||
"inputFiles": [
|
||||
"ng-template_structural.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should support i18n attributes with interpolations on explicit <ng-template> elements",
|
||||
"inputFiles": [
|
||||
"ng-template_interpolation.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should support i18n attributes with interpolations on explicit <ng-template> elements with structural directives",
|
||||
"inputFiles": [
|
||||
"ng-template_interpolation_structural.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should not create translations for empty attributes",
|
||||
"inputFiles": [
|
||||
"empty_attributes.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should not create translations for bound attributes",
|
||||
"inputFiles": [
|
||||
"bound_attributes.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should translate static attributes",
|
||||
"inputFiles": [
|
||||
"static_attributes.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should support interpolation",
|
||||
"inputFiles": [
|
||||
"interpolation_basic.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should support interpolation with custom interpolation config",
|
||||
"inputFiles": [
|
||||
"interpolation_custom_config.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should correctly bind to context in nested template",
|
||||
"inputFiles": [
|
||||
"interpolation_nested_context.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should support complex expressions in interpolation",
|
||||
"inputFiles": [
|
||||
"interpolation_complex_expressions.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should support complex expressions in interpolation",
|
||||
"inputFiles": [
|
||||
"interpolation_complex_expressions.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should work correctly when placed on i18n root node",
|
||||
"inputFiles": [
|
||||
"i18n_root_node.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should sanitize ids and generate proper variable names",
|
||||
"inputFiles": [
|
||||
"invalid_i18n_meta.ts"
|
||||
],
|
||||
"angularCompilerOptions": {
|
||||
"i18nUseExternalIds": false
|
||||
},
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
consts: [[3, "title"]],
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelement(0, "div", 0);
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵproperty("title", ctx.title);
|
||||
$r3$.ɵɵattribute("label", ctx.label);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div
|
||||
[title]="title" i18n-title
|
||||
[attr.label]="label" i18n-attr.label>
|
||||
</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
consts: [["id", "static", "title", ""]],
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelement(0, "div", 0);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div id="static" i18n-title="m|d" title></div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
consts: function() {
|
||||
__i18nMsg__('Element title', [], {meaning: 'm', desc: 'd'})
|
||||
__i18nMsg__('Some content', [], {})
|
||||
return [
|
||||
["title", $i18n_0$],
|
||||
$i18n_1$
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div", 0);
|
||||
$r3$.ɵɵi18n(1, 1);
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n i18n-title="m|d" title="Element title">Some content</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
decls: 5,
|
||||
vars: 8,
|
||||
consts: function() {
|
||||
__i18nMsg__('static text', [], {})
|
||||
__i18nMsg__('intro {$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]], {meaning: 'm', desc: 'd'})
|
||||
__i18nMsg__('{$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]], {meaning: 'm1', desc: 'd1'})
|
||||
__i18nMsg__('{$interpolation} and {$interpolation_1} and again {$interpolation_2}', [['interpolation', String.raw`\uFFFD0\uFFFD`],['interpolation_1', String.raw`\uFFFD1\uFFFD`],['interpolation_2', String.raw`\uFFFD2\uFFFD`]], {meaning: 'm2', desc: 'd2'})
|
||||
__i18nMsg__('{$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]], {})
|
||||
return [
|
||||
["id", "dynamic-1", "aria-roledescription", $i18n_0$, __AttributeMarker.I18n__,
|
||||
"title", "aria-label"],
|
||||
["title", $i18n_1$, "aria-label", $i18n_2$],
|
||||
["id", "dynamic-2", __AttributeMarker.I18n__, "title", "aria-roledescription"],
|
||||
["title", $i18n_3$, "aria-roledescription", $i18n_4$]
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div", 0);
|
||||
$r3$.ɵɵpipe(1, "uppercase");
|
||||
$r3$.ɵɵi18nAttributes(2, 1);
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵelementStart(3, "div", 2);
|
||||
$r3$.ɵɵi18nAttributes(4, 3);
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(1, 6, ctx.valueA))(ctx.valueB);
|
||||
$r3$.ɵɵi18nApply(2);
|
||||
$r3$.ɵɵadvance(3);
|
||||
$r3$.ɵɵi18nExp(ctx.valueA)(ctx.valueB)(ctx.valueA + ctx.valueB)(ctx.valueC);
|
||||
$r3$.ɵɵi18nApply(4);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div id="dynamic-1"
|
||||
i18n-title="m|d" title="intro {{ valueA | uppercase }}"
|
||||
i18n-aria-label="m1|d1" aria-label="{{ valueB }}"
|
||||
i18n-aria-roledescription aria-roledescription="static text"
|
||||
></div>
|
||||
<div id="dynamic-2"
|
||||
i18n-title="m2|d2" title="{{ valueA }} and {{ valueB }} and again {{ valueA + valueB }}"
|
||||
i18n-aria-roledescription aria-roledescription="{{ valueC }}"
|
||||
></div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
decls: 2,
|
||||
vars: 1,
|
||||
consts: function() {
|
||||
__i18nMsg__('{$interpolation} title', [['interpolation', String.raw`\uFFFD0\uFFFD`]], {})
|
||||
return [
|
||||
[__AttributeMarker.I18n__, "title"],
|
||||
["title", $i18n_0$]
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div", 0);
|
||||
$r3$.ɵɵi18nAttributes(1, 1);
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
let $tmp_0_0$ = null;
|
||||
$r3$.ɵɵi18nExp(($tmp_0_0$ = ctx.valueA.getRawValue()) == null ? null : $tmp_0_0$.getTitle());
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n-title title="{{valueA.getRawValue()?.getTitle()}} title"></div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
consts: function() {
|
||||
__i18nMsg__('intro {$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]], {meaning: 'm', desc: 'd'})
|
||||
return [
|
||||
[__AttributeMarker.I18n__, "title"],
|
||||
["title", $i18n_0$]
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div", 0);
|
||||
$r3$.ɵɵpipe(1, "uppercase");
|
||||
$r3$.ɵɵi18nAttributes(2, 1);
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(1, 1, ctx.valueA));
|
||||
$r3$.ɵɵi18nApply(2);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n-title="m|d" title="intro {% valueA | uppercase %}"></div>
|
||||
`,
|
||||
interpolation: ['{%', '%}'],
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
function MyComponent_div_0_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div");
|
||||
$r3$.ɵɵelementStart(1, "div", 1);
|
||||
$r3$.ɵɵpipe(2, "uppercase");
|
||||
$r3$.ɵɵi18nAttributes(3, 2);
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
const $outer_r1$ = ctx.$implicit;
|
||||
$r3$.ɵɵadvance(1);
|
||||
$r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(2, 1, $outer_r1$));
|
||||
$r3$.ɵɵi18nApply(3);
|
||||
}
|
||||
}
|
||||
…
|
||||
decls: 1,
|
||||
vars: 1,
|
||||
consts: function() {
|
||||
__i18nMsg__('different scope {$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]], {meaning: 'm', desc: 'd'})
|
||||
return [
|
||||
[__AttributeMarker.Template__, "ngFor", "ngForOf"],
|
||||
[__AttributeMarker.I18n__, "title"],
|
||||
["title", $i18n_0$]
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵtemplate(0, MyComponent_div_0_Template, 4, 3, "div", 0);
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵproperty("ngForOf", ctx.items);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div *ngFor="let outer of items">
|
||||
<div i18n-title="m|d" title="different scope {{ outer | uppercase }}"></div>
|
||||
</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
// NOTE: Keeping raw content (avoiding `__i18nMsg__` macro) to illustrate message id sanitization.
|
||||
let $I18N_0$;
|
||||
if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
||||
const $MSG_EXTERNAL_ID_WITH_INVALID_CHARS$$APP_SPEC_TS_1$ = goog.getMsg("Element title");
|
||||
$I18N_0$ = $MSG_EXTERNAL_ID_WITH_INVALID_CHARS$$APP_SPEC_TS_1$;
|
||||
} else {
|
||||
$I18N_0$ = $localize`:@@ID.WITH.INVALID.CHARS:Element title`;
|
||||
}
|
||||
|
||||
…
|
||||
|
||||
let $I18N_2$;
|
||||
if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
||||
const $MSG_EXTERNAL_ID_WITH_INVALID_CHARS_2$$APP_SPEC_TS_4$ = goog.getMsg(" Some content ");
|
||||
$I18N_2$ = $MSG_EXTERNAL_ID_WITH_INVALID_CHARS_2$$APP_SPEC_TS_4$;
|
||||
} else {
|
||||
$I18N_2$ = $localize`:@@ID.WITH.INVALID.CHARS.2: Some content `;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n="@@ID.WITH.INVALID.CHARS.2" i18n-title="@@ID.WITH.INVALID.CHARS" title="Element title">
|
||||
Some content
|
||||
</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
consts:
|
||||
function() {
|
||||
__i18nMsg__('Content A', [], {id: 'idA', meaning: 'meaningA', desc: 'descA'})
|
||||
__i18nMsg__('Title B', [], {id: 'idB', meaning: 'meaningB', desc: 'descB'})
|
||||
__i18nMsg__('Title C', [], {meaning: 'meaningC'})
|
||||
__i18nMsg__('Title D', [], {meaning: 'meaningD', desc: 'descD'})
|
||||
__i18nMsg__('Title E', [], {id: 'idE', desc: 'meaningE'})
|
||||
__i18nMsg__('Title F', [], {id: 'idF'})
|
||||
|
||||
// NOTE: Keeping this block as a raw string, since it checks escaping of special chars.
|
||||
let $i18n_23$;
|
||||
if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
||||
/**
|
||||
* @desc [BACKUP_${MESSAGE}_ID:idH]`desc
|
||||
*/
|
||||
const $MSG_EXTERNAL_idG$$APP_SPEC_TS_24$ = goog.getMsg("Title G");
|
||||
$i18n_23$ = $MSG_EXTERNAL_idG$$APP_SPEC_TS_24$;
|
||||
} else {
|
||||
$i18n_23$ = $localize`:[BACKUP_$\{MESSAGE}_ID\:idH]\`desc@@idG:Title G`;
|
||||
}
|
||||
|
||||
// NOTE: Keeping this block as a raw string, since it checks escaping of special chars.
|
||||
let $i18n_7$;
|
||||
if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
||||
/**
|
||||
* @desc Some text \' [BACKUP_MESSAGE_ID: xxx]
|
||||
*/
|
||||
const $MSG_EXTERNAL_idG$$APP_SPEC_TS_21$ = goog.getMsg("Content H");
|
||||
$i18n_7$ = $MSG_EXTERNAL_idG$$APP_SPEC_TS_21$;
|
||||
} else {
|
||||
$i18n_7$ = $localize`:Some text \\' [BACKUP_MESSAGE_ID\: xxx]:Content H`;
|
||||
}
|
||||
|
||||
return [
|
||||
$i18n_0$, ["title", $i18n_1$], ["title", $i18n_2$], ["title", $i18n_3$],
|
||||
["title", $i18n_4$], ["title", $i18n_5$], ["title", $i18n_6$], $i18n_7$
|
||||
];
|
||||
},
|
||||
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div");
|
||||
$r3$.ɵɵi18n(1, 0);
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵelementStart(2, "div", 1);
|
||||
$r3$.ɵɵtext(3, "Content B");
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵelementStart(4, "div", 2);
|
||||
$r3$.ɵɵtext(5, "Content C");
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵelementStart(6, "div", 3);
|
||||
$r3$.ɵɵtext(7, "Content D");
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵelementStart(8, "div", 4);
|
||||
$r3$.ɵɵtext(9, "Content E");
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵelementStart(10, "div", 5);
|
||||
$r3$.ɵɵtext(11, "Content F");
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵelementStart(12, "div", 6);
|
||||
$r3$.ɵɵtext(13, "Content G");
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵelementStart(14, "div");
|
||||
$r3$.ɵɵi18n(15, 7);
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n="meaningA|descA@@idA">Content A</div>
|
||||
<div i18n-title="meaningB|descB@@idB" title="Title B">Content B</div>
|
||||
<div i18n-title="meaningC|" title="Title C">Content C</div>
|
||||
<div i18n-title="meaningD|descD" title="Title D">Content D</div>
|
||||
<div i18n-title="meaningE@@idE" title="Title E">Content E</div>
|
||||
<div i18n-title="@@idF" title="Title F">Content F</div>
|
||||
<div i18n-title="[BACKUP_$\{MESSAGE}_ID:idH]\`desc@@idG" title="Title G">Content G</div>
|
||||
<div i18n="Some text \\' [BACKUP_MESSAGE_ID: xxx]">Content H</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
consts: function () {
|
||||
__i18nMsg__('Hello', [], {})
|
||||
return [
|
||||
["title", $i18n_0$]
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵtemplate(0, MyComponent_ng_template_0_Template, 0, 0, "ng-template", 0);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<ng-template i18n-title title="Hello"></ng-template>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
consts: function() {
|
||||
__i18nMsg__('Hello {$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]], {})
|
||||
return [
|
||||
[__AttributeMarker.Bindings__, "title"],
|
||||
["title", $i18n_0$]
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵtemplate(0, MyComponent_ng_template_0_Template, 0, 0, "ng-template", 0);
|
||||
$r3$.ɵɵi18nAttributes(1, 1);
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵi18nExp(ctx.name);
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<ng-template i18n-title title="Hello {{ name }}"></ng-template>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
function MyComponent_0_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵtemplate(0, MyComponent_0_ng_template_0_Template, 0, 0, "ng-template", 1);
|
||||
$r3$.ɵɵi18nAttributes(1, 2);
|
||||
}
|
||||
if (rf & 2) {
|
||||
const $ctx_r2$ = $r3$.ɵɵnextContext();
|
||||
$r3$.ɵɵi18nExp($ctx_r2$.name);
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
}
|
||||
}
|
||||
…
|
||||
consts: function() {
|
||||
__i18nMsg__('Hello {$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]], {})
|
||||
return [
|
||||
[__AttributeMarker.Template__, "ngIf"],
|
||||
[__AttributeMarker.Bindings__, "title"],
|
||||
["title", $i18n_0$]
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵtemplate(0, MyComponent_0_Template, 2, 1, undefined, 0);
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵproperty("ngIf", true);
|
||||
}
|
||||
},
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<ng-template *ngIf="true" i18n-title title="Hello {{ name }}"></ng-template>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
function MyComponent_0_ng_template_0_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵtext(0, "Test");
|
||||
}
|
||||
}
|
||||
function MyComponent_0_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵtemplate(0, MyComponent_0_ng_template_0_Template, 1, 0, "ng-template", 1);
|
||||
}
|
||||
}
|
||||
…
|
||||
consts: function() {
|
||||
__i18nMsg__('Hello', [], {})
|
||||
return [
|
||||
// NOTE: AttributeMarker.Template = 4
|
||||
[4, "ngIf"],
|
||||
["title", $i18n_0$]
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵtemplate(0, MyComponent_0_Template, 1, 0, undefined, 0);
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵproperty("ngIf", ctx.visible);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<ng-template *ngIf="visible" i18n-title title="Hello">Test</ng-template>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
consts: function() {
|
||||
__i18nMsg__('introduction', [], {meaning: 'm', desc: 'd'})
|
||||
return [
|
||||
["id", "static", "title", $i18n_0$]
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelement(0, "div", 0);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div id="static" i18n-title="m|d" title="introduction"></div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
"$schema": "../../test_case_schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "should throw on nested i18n sections",
|
||||
"inputFiles": [
|
||||
"nested_i18n_msg.ts"
|
||||
],
|
||||
"excludeFromPartialTests": true,
|
||||
"expectations": [
|
||||
{
|
||||
"expectedErrors": [
|
||||
{
|
||||
"message": "Cannot mark an element as translatable inside of a translatable section\\. Please remove the nested i18n marker\\.",
|
||||
"location": "nested_i18n_msg\\.ts \\(7,5\\)"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should throw on nested i18n sections with tags in between",
|
||||
"inputFiles": [
|
||||
"nested_i18n_msg_with_tags.ts"
|
||||
],
|
||||
"excludeFromPartialTests": true,
|
||||
"expectations": [
|
||||
{
|
||||
"expectedErrors": [
|
||||
{
|
||||
"message": "Cannot mark an element as translatable inside of a translatable section\\. Please remove the nested i18n marker\\.",
|
||||
"location": "nested_i18n_msg_with_tags\\.ts \\(8,7\\)"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should throw on nested i18n sections represented with <ng-container>s",
|
||||
"inputFiles": [
|
||||
"nested_i18n_msg_with_ng-containers.ts"
|
||||
],
|
||||
"excludeFromPartialTests": true,
|
||||
"expectations": [
|
||||
{
|
||||
"expectedErrors": [
|
||||
{
|
||||
"message": "Cannot mark an element as translatable inside of a translatable section\\. Please remove the nested i18n marker\\.",
|
||||
"location": "nested_i18n_msg_with_ng-containers\\.ts \\(8,7\\)"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
<div i18n>Some content</div>
|
||||
</div>
|
||||
`,
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<ng-container i18n>
|
||||
<div>
|
||||
<ng-container i18n>Some content</ng-container>
|
||||
</div>
|
||||
</ng-container>
|
||||
`,
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
<div>
|
||||
<div i18n>Some content</div>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
/****************************************************************************************************
|
||||
* PARTIAL FILE: test.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
var MyComponent = /** @class */ (function () {
|
||||
function MyComponent() {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: '<div i18n="meaning:A|descA@@idA">Content A</div>', isInline: true } });
|
||||
return MyComponent;
|
||||
}());
|
||||
export { MyComponent };
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: '<div i18n="meaning:A|descA@@idA">Content A</div>',
|
||||
}]
|
||||
}], null, null); })();
|
||||
var MyModule = /** @class */ (function () {
|
||||
function MyModule() {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
return MyModule;
|
||||
}());
|
||||
export { MyModule };
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: test.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"$schema": "../../test_case_schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "should generate ES5 compliant localized messages if the target is ES5",
|
||||
"compilerOptions": {
|
||||
"target": "ES5"
|
||||
},
|
||||
"excludeFromPartialTests": true,
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
var $I18N_0$;
|
||||
…
|
||||
$I18N_0$ = $localize(…__makeTemplateObject([":meaning:A|descA@@idA:Content A"], [":meaning\\:A|descA@@idA:Content A"])…);
|
|
@ -0,0 +1,12 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: '<div i18n="meaning:A|descA@@idA">Content A</div>',
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,795 @@
|
|||
/****************************************************************************************************
|
||||
* PARTIAL FILE: single_icu.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>{gender, select, male {male} female {female} other {other}}</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>{gender, select, male {male} female {female} other {other}}</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: single_icu.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: escape_quotes.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>{gender, select, single {'single quotes'} double {"double quotes"} other {other}}</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>{gender, select, single {'single quotes'} double {"double quotes"} other {other}}</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: escape_quotes.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: icu_only.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
{age, select, 10 {ten} 20 {twenty} other {other}}
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
{age, select, 10 {ten} 20 {twenty} other {other}}
|
||||
`,
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: icu_only.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: bare_icu.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div>{gender, select, male {male} female {female} other {other}}</div>
|
||||
<div *ngIf="visible" title="icu only">
|
||||
{age, select, 10 {ten} 20 {twenty} other {other}}
|
||||
</div>
|
||||
<div *ngIf="available" title="icu and text">
|
||||
You have {count, select, 0 {no emails} 1 {one email} other {{{count}} emails}}.
|
||||
</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div>{gender, select, male {male} female {female} other {other}}</div>
|
||||
<div *ngIf="visible" title="icu only">
|
||||
{age, select, 10 {ten} 20 {twenty} other {other}}
|
||||
</div>
|
||||
<div *ngIf="available" title="icu and text">
|
||||
You have {count, select, 0 {no emails} 1 {one email} other {{{count}} emails}}.
|
||||
</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: bare_icu.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: custom_interpolation.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>{age, select, 10 {ten} 20 {twenty} other {{% other %}}}</div>
|
||||
`, isInline: true }, interpolation: ["{%", "%}"] });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>{age, select, 10 {ten} 20 {twenty} other {{% other %}}}</div>
|
||||
`,
|
||||
interpolation: ['{%', '%}'],
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: custom_interpolation.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: html_content.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>
|
||||
{gender, select, male {male - <b>male</b>} female {female <b>female</b>} other {<div class="other"><i>other</i></div>}}
|
||||
<b>Other content</b>
|
||||
<div class="other"><i>Another content</i></div>
|
||||
</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
{gender, select, male {male - <b>male</b>} female {female <b>female</b>} other {<div class="other"><i>other</i></div>}}
|
||||
<b>Other content</b>
|
||||
<div class="other"><i>Another content</i></div>
|
||||
</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: html_content.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: expressions.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>{gender, select, male {male of age: {{ ageA + ageB + ageC }}} female {female} other {other}}</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>{gender, select, male {male of age: {{ ageA + ageB + ageC }}} female {female} other {other}}</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: expressions.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: multiple_icus.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
{age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}
|
||||
</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
{age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}
|
||||
</div>
|
||||
`,
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: multiple_icus.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: shared_placeholder.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
<div>
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
</div>
|
||||
<div *ngIf="visible">
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
</div>
|
||||
</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
<div>
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
</div>
|
||||
<div *ngIf="visible">
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: shared_placeholder.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: nested_icus.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>
|
||||
{gender, select,
|
||||
male {male of age: {age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}}
|
||||
female {female}
|
||||
other {other}
|
||||
}
|
||||
</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
{gender, select,
|
||||
male {male of age: {age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}}
|
||||
female {female}
|
||||
other {other}
|
||||
}
|
||||
</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: nested_icus.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: nested_icu_in_other_block.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>{count, plural,
|
||||
=0 {zero}
|
||||
=2 {{{count}} {name, select,
|
||||
cat {cats}
|
||||
dog {dogs}
|
||||
other {animals}} !}
|
||||
other {other - {{count}}}
|
||||
}</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>{count, plural,
|
||||
=0 {zero}
|
||||
=2 {{{count}} {name, select,
|
||||
cat {cats}
|
||||
dog {dogs}
|
||||
other {animals}} !}
|
||||
other {other - {{count}}}
|
||||
}</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: nested_icu_in_other_block.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: different_contexts.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
<span *ngIf="ageVisible">
|
||||
{age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}
|
||||
</span>
|
||||
</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
<span *ngIf="ageVisible">
|
||||
{age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}
|
||||
</span>
|
||||
</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: different_contexts.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: icu_with_interpolations.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>
|
||||
{gender, select, male {male {{ weight }}} female {female {{ height }}} other {other}}
|
||||
<span *ngIf="ageVisible">
|
||||
{age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other: {{ otherAge }}}}
|
||||
</span>
|
||||
</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
{gender, select, male {male {{ weight }}} female {female {{ height }}} other {other}}
|
||||
<span *ngIf="ageVisible">
|
||||
{age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other: {{ otherAge }}}}
|
||||
</span>
|
||||
</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: icu_with_interpolations.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: named_interpolations.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>{
|
||||
gender,
|
||||
select,
|
||||
male {male {{ weight // i18n(ph="PH_A") }}}
|
||||
female {female {{ height // i18n(ph="PH_B") }}}
|
||||
other {other {{ age // i18n(ph="PH WITH SPACES") }}}
|
||||
}</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>{
|
||||
gender,
|
||||
select,
|
||||
male {male {{ weight // i18n(ph="PH_A") }}}
|
||||
female {female {{ height // i18n(ph="PH_B") }}}
|
||||
other {other {{ age // i18n(ph="PH WITH SPACES") }}}
|
||||
}</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: named_interpolations.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: metadata.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n="meaningA|descA@@idA">{count, select, 1 {one} other {more than one}}</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n="meaningA|descA@@idA">{count, select, 1 {one} other {more than one}}</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: metadata.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: keyword_spaces.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>
|
||||
{count, select , 1 {one} other {more than one}}
|
||||
{count, plural , =1 {one} other {more than one}}
|
||||
</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
{count, select , 1 {one} other {more than one}}
|
||||
{count, plural , =1 {one} other {more than one}}
|
||||
</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: keyword_spaces.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
|
@ -0,0 +1,229 @@
|
|||
{
|
||||
"$schema": "../../test_case_schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "should handle single icus",
|
||||
"inputFiles": [
|
||||
"single_icu"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should properly escape quotes in content",
|
||||
"inputFiles": [
|
||||
"escape_quotes.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should support ICU-only templates",
|
||||
"inputFiles": [
|
||||
"icu_only.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should generate i18n instructions for icus generated outside of i18n blocks",
|
||||
"inputFiles": [
|
||||
"bare_icu.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should support interpolation with custom interpolation config",
|
||||
"inputFiles": [
|
||||
"custom_interpolation.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should handle icus with html",
|
||||
"inputFiles": [
|
||||
"html_content.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should handle icus with expressions",
|
||||
"inputFiles": [
|
||||
"expressions.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should handle multiple icus in one block",
|
||||
"inputFiles": [
|
||||
"multiple_icus.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should handle multiple icus that share same placeholder",
|
||||
"inputFiles": [
|
||||
"shared_placeholder.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should handle nested icus",
|
||||
"inputFiles": [
|
||||
"nested_icus.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "nested with interpolations in \"other\" blocks",
|
||||
"inputFiles": [
|
||||
"nested_icu_in_other_block.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should handle icus in different contexts",
|
||||
"inputFiles": [
|
||||
"different_contexts.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should handle icus with interpolations",
|
||||
"inputFiles": [
|
||||
"icu_with_interpolations.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should handle icus with named interpolations",
|
||||
"inputFiles": [
|
||||
"named_interpolations.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should attach metadata in case an ICU represents the whole message",
|
||||
"inputFiles": [
|
||||
"metadata.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should produce proper messages when `select` or `plural` keywords have spaces after them",
|
||||
"inputFiles": [
|
||||
"keyword_spaces.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
function $MyComponent_div_2_Template$(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div", 3);
|
||||
$r3$.ɵɵtext(1, " ");
|
||||
$r3$.ɵɵi18n(2, 4);
|
||||
$r3$.ɵɵtext(3, " ");
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
const $ctx_r0$ = $r3$.ɵɵnextContext();
|
||||
$r3$.ɵɵadvance(2);
|
||||
$r3$.ɵɵi18nExp($ctx_r0$.age);
|
||||
$r3$.ɵɵi18nApply(2);
|
||||
}
|
||||
}
|
||||
…
|
||||
function $MyComponent_div_3_Template$(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div", 5);
|
||||
$r3$.ɵɵtext(1, " You have ");
|
||||
$r3$.ɵɵi18n(2, 6);
|
||||
$r3$.ɵɵtext(3, ". ");
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
const $ctx_r1$ = $r3$.ɵɵnextContext();
|
||||
$r3$.ɵɵadvance(2);
|
||||
$r3$.ɵɵi18nExp($ctx_r1$.count)($ctx_r1$.count);
|
||||
$r3$.ɵɵi18nApply(2);
|
||||
}
|
||||
}
|
||||
…
|
||||
decls: 4,
|
||||
vars: 3,
|
||||
consts: function() {
|
||||
__i18nIcuMsg__('{VAR_SELECT, select, male {male} female {female} other {other}}', [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]]) __i18nIcuMsg__('{VAR_SELECT, select, 10 {ten} 20 {twenty} other {other}}', [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]])
|
||||
__i18nIcuMsg__('{VAR_SELECT, select, 0 {no emails} 1 {one email} other {{INTERPOLATION} emails}}', [ ['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], ['INTERPOLATION', String.raw`\uFFFD1\uFFFD`]])
|
||||
return [
|
||||
$i18n_0$,
|
||||
["title", "icu only", __AttributeMarker.Template__, "ngIf"],
|
||||
["title", "icu and text", __AttributeMarker.Template__, "ngIf"],
|
||||
["title", "icu only"],
|
||||
$i18n_1$,
|
||||
["title", "icu and text"],
|
||||
$i18n_2$
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div");
|
||||
$r3$.ɵɵi18n(1, 0);
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵtemplate(2, $MyComponent_div_2_Template$, 4, 1, "div", 1);
|
||||
$r3$.ɵɵtemplate(3, $MyComponent_div_3_Template$, 4, 2, "div", 2);
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵadvance(1);
|
||||
$r3$.ɵɵi18nExp(ctx.gender);
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
$r3$.ɵɵadvance(1);
|
||||
$r3$.ɵɵproperty("ngIf", ctx.visible);
|
||||
$r3$.ɵɵadvance(1);
|
||||
$r3$.ɵɵproperty("ngIf", ctx.available);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div>{gender, select, male {male} female {female} other {other}}</div>
|
||||
<div *ngIf="visible" title="icu only">
|
||||
{age, select, 10 {ten} 20 {twenty} other {other}}
|
||||
</div>
|
||||
<div *ngIf="available" title="icu and text">
|
||||
You have {count, select, 0 {no emails} 1 {one email} other {{{count}} emails}}.
|
||||
</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
consts: function() {
|
||||
__i18nIcuMsg__('{VAR_SELECT, select, 10 {ten} 20 {twenty} other {{INTERPOLATION}}}', [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], ['INTERPOLATION', String.raw`\uFFFD1\uFFFD`]])
|
||||
return [
|
||||
$i18n_0$
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div");
|
||||
$r3$.ɵɵi18n(1, 0);
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵadvance(1);
|
||||
$r3$.ɵɵi18nExp(ctx.age)(ctx.other);
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>{age, select, 10 {ten} 20 {twenty} other {{% other %}}}</div>
|
||||
`,
|
||||
interpolation: ['{%', '%}'],
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
function MyComponent_span_2_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵi18nStart(0, 0, 1);
|
||||
$r3$.ɵɵelement(1, "span");
|
||||
$r3$.ɵɵi18nEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
const $ctx_r0$ = $r3$.ɵɵnextContext();
|
||||
$r3$.ɵɵadvance(1);
|
||||
$r3$.ɵɵi18nExp($ctx_r0$.age);
|
||||
$r3$.ɵɵi18nApply(0);
|
||||
}
|
||||
}
|
||||
…
|
||||
decls: 3,
|
||||
vars: 2,
|
||||
consts: function() {
|
||||
__i18nIcuMsg__('{VAR_SELECT, select, male {male} female {female} other {other}}', [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]])
|
||||
__i18nIcuMsg__('{VAR_SELECT, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}', [['VAR_SELECT', String.raw`\uFFFD0:1\uFFFD`]])
|
||||
__i18nMsg__(' {$icu} {$startTagSpan} {$icu_1} {$closeTagSpan}', [['startTagSpan', String.raw`\uFFFD*2:1\uFFFD\uFFFD#1:1\uFFFD`], ['closeTagSpan', String.raw`\uFFFD/#1:1\uFFFD\uFFFD/*2:1\uFFFD`], ['icu', '$i18n_0$'], ['icu_1', '$i18n_1$']], {})
|
||||
return [
|
||||
$i18n_2$,
|
||||
[__AttributeMarker.Template__, "ngIf"]
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div");
|
||||
$r3$.ɵɵi18nStart(1, 0);
|
||||
$r3$.ɵɵtemplate(2, MyComponent_span_2_Template, 2, 1, "span", 1);
|
||||
$r3$.ɵɵi18nEnd();
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵadvance(2);
|
||||
$r3$.ɵɵproperty("ngIf", ctx.ageVisible);
|
||||
$r3$.ɵɵi18nExp(ctx.gender);
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
<span *ngIf="ageVisible">
|
||||
{age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}
|
||||
</span>
|
||||
</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
let $I18N_0$;
|
||||
if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
||||
const $MSG_EXTERNAL_4166854826696768832$$APP_SPEC_TS_0$ = goog.getMsg("{VAR_SELECT, select, single {'single quotes'} double {\"double quotes\"} other {other}}");
|
||||
$I18N_0$ = $MSG_EXTERNAL_4166854826696768832$$APP_SPEC_TS_0$;
|
||||
}
|
||||
else {
|
||||
$I18N_0$ = $localize `{VAR_SELECT, select, single {'single quotes'} double {"double quotes"} other {other}}`;
|
||||
}
|
||||
$I18N_0$ = $r3$.ɵɵi18nPostprocess($I18N_0$, {
|
||||
"VAR_SELECT": "\uFFFD0\uFFFD"
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>{gender, select, single {'single quotes'} double {"double quotes"} other {other}}</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
decls: 2,
|
||||
vars: 2,
|
||||
consts: function() {
|
||||
__i18nIcuMsg__('{VAR_SELECT, select, male {male of age: {INTERPOLATION}} female {female} other {other}}', [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], ['INTERPOLATION', String.raw`\uFFFD1\uFFFD`],])
|
||||
return [
|
||||
$i18n_0$
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div");
|
||||
$r3$.ɵɵi18n(1, 0);
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵadvance(1);
|
||||
$r3$.ɵɵi18nExp(ctx.gender)(ctx.ageA + ctx.ageB + ctx.ageC);
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>{gender, select, male {male of age: {{ ageA + ageB + ageC }}} female {female} other {other}}</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
decls: 5,
|
||||
vars: 1,
|
||||
consts: function() {
|
||||
__i18nIcuMsg__('{VAR_SELECT, select, male {male - {START_BOLD_TEXT}male{CLOSE_BOLD_TEXT}} female {female {START_BOLD_TEXT}female{CLOSE_BOLD_TEXT}} other {{START_TAG_DIV}{START_ITALIC_TEXT}other{CLOSE_ITALIC_TEXT}{CLOSE_TAG_DIV}}}', [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], ['START_BOLD_TEXT', '<b>'], ['CLOSE_BOLD_TEXT', '</b>'], ['START_ITALIC_TEXT', '<i>'], ['CLOSE_ITALIC_TEXT', '</i>'], ['START_TAG_DIV', '<div class=\\"other\\">'], ['CLOSE_TAG_DIV', '</div>'],])
|
||||
__i18nMsg__(' {$icu} {$startBoldText}Other content{$closeBoldText}{$startTagDiv}{$startItalicText}Another content{$closeItalicText}{$closeTagDiv}', [['startBoldText', String.raw`\uFFFD#2\uFFFD`], ['closeBoldText', String.raw`\uFFFD/#2\uFFFD`], ['startTagDiv', String.raw`\uFFFD#3\uFFFD`], ['startItalicText', String.raw`\uFFFD#4\uFFFD`], ['closeItalicText', String.raw`\uFFFD/#4\uFFFD`], ['closeTagDiv', String.raw`\uFFFD/#3\uFFFD`], ['icu', '$I18N_0$']], {})
|
||||
return [
|
||||
$i18n_1$,
|
||||
[__AttributeMarker.Classes__, "other"]
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div");
|
||||
$r3$.ɵɵi18nStart(1, 0);
|
||||
$r3$.ɵɵelement(2, "b");
|
||||
$r3$.ɵɵelementStart(3, "div", 1);
|
||||
$r3$.ɵɵelement(4, "i");
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵi18nEnd();
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵadvance(4);
|
||||
$r3$.ɵɵi18nExp(ctx.gender);
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
{gender, select, male {male - <b>male</b>} female {female <b>female</b>} other {<div class="other"><i>other</i></div>}}
|
||||
<b>Other content</b>
|
||||
<div class="other"><i>Another content</i></div>
|
||||
</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
decls: 1,
|
||||
vars: 1,
|
||||
consts: function() {
|
||||
__i18nIcuMsg__('{VAR_SELECT, select, 10 {ten} 20 {twenty} other {other}}', [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]])
|
||||
return [
|
||||
$i18n_0$
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵi18n(0, 0);
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵi18nExp(ctx.age);
|
||||
$r3$.ɵɵi18nApply(0);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
{age, select, 10 {ten} 20 {twenty} other {other}}
|
||||
`,
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
function MyComponent_span_2_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵi18nStart(0, 0, 1);
|
||||
$r3$.ɵɵelement(1, "span");
|
||||
$r3$.ɵɵi18nEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
const $ctx_r0$ = $r3$.ɵɵnextContext();
|
||||
$r3$.ɵɵadvance(1);
|
||||
$r3$.ɵɵi18nExp($ctx_r0$.age)($ctx_r0$.otherAge);
|
||||
$r3$.ɵɵi18nApply(0);
|
||||
}
|
||||
}
|
||||
…
|
||||
decls: 3,
|
||||
vars: 4,
|
||||
consts: function() {
|
||||
__i18nIcuMsg__('{VAR_SELECT, select, male {male {INTERPOLATION}} female {female {INTERPOLATION_1}} other {other}}',[ ['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], ['INTERPOLATION', String.raw`\uFFFD1\uFFFD`], ['INTERPOLATION_1', String.raw`\uFFFD2\uFFFD`]])
|
||||
__i18nIcuMsg__('{VAR_SELECT, select, 10 {ten} 20 {twenty} 30 {thirty} other {other: {INTERPOLATION}}}', [['VAR_SELECT', String.raw`\uFFFD0:1\uFFFD`], ['INTERPOLATION', String.raw`\uFFFD1:1\uFFFD`]])
|
||||
__i18nMsg__(' {$icu} {$startTagSpan} {$icu_1} {$closeTagSpan}', [['startTagSpan', String.raw`\uFFFD*2:1\uFFFD\uFFFD#1:1\uFFFD`], ['closeTagSpan', String.raw`\uFFFD/#1:1\uFFFD\uFFFD/*2:1\uFFFD`], ['icu', '$i18n_0$'], ['icu_1', '$i18n_1$']], {})
|
||||
return [
|
||||
$i18n_2$,
|
||||
[__AttributeMarker.Template__, "ngIf"]
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div");
|
||||
$r3$.ɵɵi18nStart(1, 0);
|
||||
$r3$.ɵɵtemplate(2, MyComponent_span_2_Template, 2, 2, "span", 1);
|
||||
$r3$.ɵɵi18nEnd();
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵadvance(2);
|
||||
$r3$.ɵɵproperty("ngIf", ctx.ageVisible);
|
||||
$r3$.ɵɵi18nExp(ctx.gender)(ctx.weight)(ctx.height);
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
{gender, select, male {male {{ weight }}} female {female {{ height }}} other {other}}
|
||||
<span *ngIf="ageVisible">
|
||||
{age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other: {{ otherAge }}}}
|
||||
</span>
|
||||
</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
__i18nIcuMsg__('{VAR_SELECT , select , 1 {one} other {more than one}}', [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]])
|
||||
__i18nIcuMsg__('{VAR_PLURAL , plural , =1 {one} other {more than one}}', [['VAR_PLURAL', String.raw`\uFFFD1\uFFFD`]])
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
{count, select , 1 {one} other {more than one}}
|
||||
{count, plural , =1 {one} other {more than one}}
|
||||
</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
__i18nMsgWithPostprocess__('{VAR_SELECT, select, 1 {one} other {more than one}}', [], {meaning: 'meaningA', desc: 'descA', id: 'idA'}, [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]])
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n="meaningA|descA@@idA">{count, select, 1 {one} other {more than one}}</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
decls: 2,
|
||||
vars: 2,
|
||||
consts: function() {
|
||||
__i18nIcuMsg__('{VAR_SELECT, select, male {male} female {female} other {other}}', [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]])
|
||||
__i18nIcuMsg__('{VAR_SELECT, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}', [['VAR_SELECT', String.raw`\uFFFD1\uFFFD`]])
|
||||
__i18nMsg__(' {$icu} {$icu_1} ', [['icu', '$i18n_0$'], ['icu_1', '$i18n_1$']], {})
|
||||
return [
|
||||
$i18n_2$
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div");
|
||||
$r3$.ɵɵi18n(1, 0);
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵadvance(1);
|
||||
$r3$.ɵɵi18nExp(ctx.gender)(ctx.age);
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
{age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}
|
||||
</div>
|
||||
`,
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
decls: 2,
|
||||
vars: 4,
|
||||
consts: function() {
|
||||
__i18nIcuMsg__('{VAR_SELECT, select, male {male {PH_A}} female {female {PH_B}} other {other {PH_WITH_SPACES}}}', [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], ['PH_A', String.raw`\uFFFD1\uFFFD`], ['PH_B', String.raw`\uFFFD2\uFFFD`], ['PH_WITH_SPACES', String.raw`\uFFFD3\uFFFD`]])
|
||||
return [
|
||||
$i18n_0$
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div");
|
||||
$r3$.ɵɵi18n(1, 0);
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵadvance(1);
|
||||
$r3$.ɵɵi18nExp(ctx.gender)(ctx.weight)(ctx.height)(ctx.age);
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>{
|
||||
gender,
|
||||
select,
|
||||
male {male {{ weight // i18n(ph="PH_A") }}}
|
||||
female {female {{ height // i18n(ph="PH_B") }}}
|
||||
other {other {{ age // i18n(ph="PH WITH SPACES") }}}
|
||||
}</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
decls: 2,
|
||||
vars: 3,
|
||||
consts: function() {
|
||||
__i18nIcuMsg__('{VAR_PLURAL, plural, =0 {zero} =2 {{INTERPOLATION} {VAR_SELECT, select, cat {cats} dog {dogs} other {animals}} !} other {other - {INTERPOLATION}}}', [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], ['VAR_PLURAL', String.raw`\uFFFD1\uFFFD`], ['INTERPOLATION', String.raw`\uFFFD2\uFFFD`]])
|
||||
return [
|
||||
$i18n_0$
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div");
|
||||
$r3$.ɵɵi18n(1, 0);
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵadvance(1);
|
||||
$r3$.ɵɵi18nExp(ctx.name)(ctx.count)(ctx.count);
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>{count, plural,
|
||||
=0 {zero}
|
||||
=2 {{{count}} {name, select,
|
||||
cat {cats}
|
||||
dog {dogs}
|
||||
other {animals}} !}
|
||||
other {other - {{count}}}
|
||||
}</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
decls: 2,
|
||||
vars: 2,
|
||||
consts: function() {
|
||||
__i18nIcuMsg__('{VAR_SELECT_1, select, male {male of age: {VAR_SELECT, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}} female {female} other {other}}', [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], ['VAR_SELECT_1', String.raw`\uFFFD1\uFFFD`]])
|
||||
__i18nMsg__(' {$icu} ', [['icu', '$i18n_0$']], {})
|
||||
return [
|
||||
$i18n_1$
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div");
|
||||
$r3$.ɵɵi18n(1, 0);
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵadvance(1);
|
||||
$r3$.ɵɵi18nExp(ctx.age)(ctx.gender);
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
{gender, select,
|
||||
male {male of age: {age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}}
|
||||
female {female}
|
||||
other {other}
|
||||
}
|
||||
</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,95 @@
|
|||
function MyComponent_div_3_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵi18nStart(0, 0, 1);
|
||||
$r3$.ɵɵelement(1, "div");
|
||||
$r3$.ɵɵi18nEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
const $ctx_r0$ = $r3$.ɵɵnextContext();
|
||||
$r3$.ɵɵadvance(1);
|
||||
$r3$.ɵɵi18nExp($ctx_r0$.gender);
|
||||
$r3$.ɵɵi18nApply(0);
|
||||
}
|
||||
}
|
||||
…
|
||||
decls: 4,
|
||||
vars: 3,
|
||||
consts: function() {
|
||||
// NOTE: Keeping raw content here to illustrate the difference in placeholders generated for goog.getMsg and $localize calls (see last i18n block).
|
||||
let $I18N_1$;
|
||||
if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
||||
const $MSG_APP_SPEC_TS_1$ = goog.getMsg("{VAR_SELECT, select, male {male} female {female} other {other}}");
|
||||
$I18N_1$ = $MSG_APP_SPEC_TS_1$;
|
||||
}
|
||||
else {
|
||||
$I18N_1$ = $localize `{VAR_SELECT, select, male {male} female {female} other {other}}`;
|
||||
}
|
||||
$I18N_1$ = $r3$.ɵɵi18nPostprocess($I18N_1$, {
|
||||
"VAR_SELECT": "\uFFFD0\uFFFD"
|
||||
});
|
||||
|
||||
let $I18N_2$;
|
||||
if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
||||
const $MSG_APP_SPEC_TS_2$ = goog.getMsg("{VAR_SELECT, select, male {male} female {female} other {other}}");
|
||||
$I18N_2$ = $MSG_APP_SPEC_TS_2$;
|
||||
}
|
||||
else {
|
||||
$I18N_2$ = $localize `{VAR_SELECT, select, male {male} female {female} other {other}}`;
|
||||
}
|
||||
$I18N_2$ = $r3$.ɵɵi18nPostprocess($I18N_2$, {
|
||||
"VAR_SELECT": "\uFFFD1\uFFFD"
|
||||
});
|
||||
|
||||
let $I18N_4$;
|
||||
if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
||||
const $MSG_APP_SPEC_TS__4$ = goog.getMsg("{VAR_SELECT, select, male {male} female {female} other {other}}");
|
||||
$I18N_4$ = $MSG_APP_SPEC_TS__4$;
|
||||
}
|
||||
else {
|
||||
$I18N_4$ = $localize `{VAR_SELECT, select, male {male} female {female} other {other}}`;
|
||||
}
|
||||
$I18N_4$ = $r3$.ɵɵi18nPostprocess($I18N_4$, {
|
||||
"VAR_SELECT": "\uFFFD0:1\uFFFD"
|
||||
});
|
||||
|
||||
let $I18N_0$;
|
||||
if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
||||
const $MSG_APP_SPEC_TS_0$ = goog.getMsg(" {$icu} {$startTagDiv} {$icu} {$closeTagDiv}{$startTagDiv_1} {$icu} {$closeTagDiv}", {
|
||||
"startTagDiv": "\uFFFD#2\uFFFD",
|
||||
"closeTagDiv": "[\uFFFD/#2\uFFFD|\uFFFD/#1:1\uFFFD\uFFFD/*3:1\uFFFD]",
|
||||
"startTagDiv_1": "\uFFFD*3:1\uFFFD\uFFFD#1:1\uFFFD",
|
||||
"icu": "\uFFFDI18N_EXP_ICU\uFFFD"
|
||||
});
|
||||
$I18N_0$ = $MSG_APP_SPEC_TS_0$;
|
||||
}
|
||||
else {
|
||||
$I18N_0$ = $localize ` ${"\uFFFDI18N_EXP_ICU\uFFFD"}:ICU: ${"\uFFFD#2\uFFFD"}:START_TAG_DIV: ${"\uFFFDI18N_EXP_ICU\uFFFD"}:ICU: ${"[\uFFFD/#2\uFFFD|\uFFFD/#1:1\uFFFD\uFFFD/*3:1\uFFFD]"}:CLOSE_TAG_DIV:${"\uFFFD*3:1\uFFFD\uFFFD#1:1\uFFFD"}:START_TAG_DIV_1: ${"\uFFFDI18N_EXP_ICU\uFFFD"}:ICU: ${"[\uFFFD/#2\uFFFD|\uFFFD/#1:1\uFFFD\uFFFD/*3:1\uFFFD]"}:CLOSE_TAG_DIV:`;
|
||||
}
|
||||
|
||||
$I18N_0$ = $r3$.ɵɵi18nPostprocess($I18N_0$, {
|
||||
"ICU": [$I18N_1$, $I18N_2$, $I18N_4$]
|
||||
});
|
||||
return [
|
||||
$i18n_0$,
|
||||
[__AttributeMarker.Template__, "ngIf"]
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div");
|
||||
$r3$.ɵɵi18nStart(1, 0);
|
||||
$r3$.ɵɵelement(2, "div");
|
||||
$r3$.ɵɵtemplate(3, MyComponent_div_3_Template, 2, 1, "div", 1);
|
||||
$r3$.ɵɵi18nEnd();
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵadvance(3);
|
||||
$r3$.ɵɵproperty("ngIf", ctx.visible);
|
||||
$r3$.ɵɵi18nExp(ctx.gender)(ctx.gender);
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE: TODO(FW-635): this use-case is currently supported with file-based prefix for translation const names.
|
||||
// NOTE: Translation statements caching is required to support this use-case with id-based consts.
|
|
@ -0,0 +1,22 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
<div>
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
</div>
|
||||
<div *ngIf="visible">
|
||||
{gender, select, male {male} female {female} other {other}}
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
decls: 2,
|
||||
vars: 1,
|
||||
consts: function() {
|
||||
__i18nIcuMsg__('{VAR_SELECT, select, male {male} female {female} other {other}}',[['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]])
|
||||
return [
|
||||
$i18n_0$
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵelementStart(0, "div");
|
||||
$r3$.ɵɵi18n(1, 0);
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵadvance(1);
|
||||
$r3$.ɵɵi18nExp(ctx.gender);
|
||||
$r3$.ɵɵi18nApply(1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>{gender, select, male {male} female {female} other {other}}</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,408 @@
|
|||
/****************************************************************************************************
|
||||
* PARTIAL FILE: inline_template_non_legacy.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div title="abc
|
||||
def" i18n-title i18n>
|
||||
Some Message
|
||||
{
|
||||
value,
|
||||
select,
|
||||
=0 {
|
||||
zero
|
||||
}
|
||||
}</div>`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
// NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real
|
||||
// `\r\n` line-ending chars when loaded from the test file-system.
|
||||
template: `
|
||||
<div title="abc
|
||||
def" i18n-title i18n>
|
||||
Some Message
|
||||
{
|
||||
value,
|
||||
select,
|
||||
=0 {
|
||||
zero
|
||||
}
|
||||
}</div>`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: inline_template_non_legacy.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: inline_template_non_legacy.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div title="abc
|
||||
def" i18n-title i18n>
|
||||
Some Message
|
||||
{
|
||||
value,
|
||||
select,
|
||||
=0 {
|
||||
zero
|
||||
}
|
||||
}</div>`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
// NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real
|
||||
// `\r\n` line-ending chars when loaded from the test file-system.
|
||||
template: `
|
||||
<div title="abc
|
||||
def" i18n-title i18n>
|
||||
Some Message
|
||||
{
|
||||
value,
|
||||
select,
|
||||
=0 {
|
||||
zero
|
||||
}
|
||||
}</div>`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: inline_template_non_legacy.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: external_template_non_legacy.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: "<!-- NOTE: This template has escaped `\\r\\n` line-endings markers that will be converted to real `\\r\\n` line-ending chars when loaded from the test file-system. -->\n<div title=\"abc\r\ndef\" i18n-title i18n>\r\nSome Message\r\n{\r\n value,\r\n select,\r\n =0 {\r\n zero\r\n }\r\n}</div>", isInline: false } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
// NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real
|
||||
// `\r\n` line-ending chars when loaded from the test file-system.
|
||||
templateUrl: 'template.html'
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: external_template_non_legacy.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: external_template_non_legacy.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: "<!-- NOTE: This template has escaped `\\r\\n` line-endings markers that will be converted to real `\\r\\n` line-ending chars when loaded from the test file-system. -->\n<div title=\"abc\r\ndef\" i18n-title i18n>\r\nSome Message\r\n{\r\n value,\r\n select,\r\n =0 {\r\n zero\r\n }\r\n}</div>", isInline: false } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
// NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real
|
||||
// `\r\n` line-ending chars when loaded from the test file-system.
|
||||
templateUrl: 'template.html'
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: external_template_non_legacy.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: inline_template_legacy.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div title="abc
|
||||
def" i18n-title i18n>
|
||||
Some Message
|
||||
{
|
||||
value,
|
||||
select,
|
||||
=0 {
|
||||
zero
|
||||
}
|
||||
}</div>`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
// NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real
|
||||
// `\r\n` line-ending chars when loaded from the test file-system.
|
||||
template: `
|
||||
<div title="abc
|
||||
def" i18n-title i18n>
|
||||
Some Message
|
||||
{
|
||||
value,
|
||||
select,
|
||||
=0 {
|
||||
zero
|
||||
}
|
||||
}</div>`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: inline_template_legacy.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: inline_template_legacy.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div title="abc
|
||||
def" i18n-title i18n>
|
||||
Some Message
|
||||
{
|
||||
value,
|
||||
select,
|
||||
=0 {
|
||||
zero
|
||||
}
|
||||
}</div>`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
// NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real
|
||||
// `\r\n` line-ending chars when loaded from the test file-system.
|
||||
template: `
|
||||
<div title="abc
|
||||
def" i18n-title i18n>
|
||||
Some Message
|
||||
{
|
||||
value,
|
||||
select,
|
||||
=0 {
|
||||
zero
|
||||
}
|
||||
}</div>`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: inline_template_legacy.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: external_template_legacy_normalized.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: "<!-- NOTE: This template has escaped `\\r\\n` line-endings markers that will be converted to real `\\r\\n` line-ending chars when loaded from the test file-system. -->\n<div title=\"abc\r\ndef\" i18n-title i18n>\r\nSome Message\r\n{\r\n value,\r\n select,\r\n =0 {\r\n zero\r\n }\r\n}</div>", isInline: false } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
// NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real
|
||||
// `\r\n` line-ending chars when loaded from the test file-system.
|
||||
templateUrl: 'template.html'
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: external_template_legacy_normalized.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: external_template_legacy.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: "<!-- NOTE: This template has escaped `\\r\\n` line-endings markers that will be converted to real `\\r\\n` line-ending chars when loaded from the test file-system. -->\n<div title=\"abc\r\ndef\" i18n-title i18n>\r\nSome Message\r\n{\r\n value,\r\n select,\r\n =0 {\r\n zero\r\n }\r\n}</div>", isInline: false } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
// NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real
|
||||
// `\r\n` line-ending chars when loaded from the test file-system.
|
||||
templateUrl: 'template.html'
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: external_template_legacy.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
|
@ -0,0 +1,197 @@
|
|||
{
|
||||
"$schema": "../../test_case_schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "should normalize non-legacy message line endings in inline templates where i18nNormalizeLineEndingsInICUs is true",
|
||||
"inputFiles": [
|
||||
"inline_template_non_legacy.ts"
|
||||
],
|
||||
"angularCompilerOptions": {
|
||||
"i18nNormalizeLineEndingsInICUs": true,
|
||||
"enableI18nLegacyMessageIdFormat": false
|
||||
},
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "inline_template_non_legacy.js",
|
||||
"expected": "non_legacy.js"
|
||||
}
|
||||
],
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should normalize non-legacy message line endings in inline templates where i18nNormalizeLineEndingsInICUs is false",
|
||||
"inputFiles": [
|
||||
"inline_template_non_legacy.ts"
|
||||
],
|
||||
"angularCompilerOptions": {
|
||||
"i18nNormalizeLineEndingsInICUs": false,
|
||||
"enableI18nLegacyMessageIdFormat": false
|
||||
},
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "inline_template_non_legacy.js",
|
||||
"expected": "non_legacy.js"
|
||||
}
|
||||
],
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should normalize non-legacy message line endings in external templates where i18nNormalizeLineEndingsInICUs is true",
|
||||
"inputFiles": [
|
||||
"external_template_non_legacy.ts"
|
||||
],
|
||||
"angularCompilerOptions": {
|
||||
"i18nNormalizeLineEndingsInICUs": true,
|
||||
"enableI18nLegacyMessageIdFormat": false
|
||||
},
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "external_template_non_legacy.js",
|
||||
"expected": "non_legacy.js"
|
||||
}
|
||||
],
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should normalize non-legacy line endings in external templates where i18nNormalizeLineEndingsInICUs is false",
|
||||
"inputFiles": [
|
||||
"external_template_non_legacy.ts"
|
||||
],
|
||||
"angularCompilerOptions": {
|
||||
"i18nNormalizeLineEndingsInICUs": false,
|
||||
"enableI18nLegacyMessageIdFormat": false
|
||||
},
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "external_template_non_legacy.js",
|
||||
"expected": "non_legacy.js"
|
||||
}
|
||||
],
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should compute normalized legacy ids for messages in inline templates where i18nNormalizeLineEndingsInICUs is true",
|
||||
"inputFiles": [
|
||||
"inline_template_legacy.ts"
|
||||
],
|
||||
"angularCompilerOptions": {
|
||||
"i18nNormalizeLineEndingsInICUs": true,
|
||||
"enableI18nLegacyMessageIdFormat": true
|
||||
},
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "inline_template_legacy.js",
|
||||
"expected": "legacy_normalized.js"
|
||||
}
|
||||
],
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should compute normalized legacy ids for messages in inline templates where i18nNormalizeLineEndingsInICUs is false",
|
||||
"inputFiles": [
|
||||
"inline_template_legacy.ts"
|
||||
],
|
||||
"angularCompilerOptions": {
|
||||
"i18nNormalizeLineEndingsInICUs": false,
|
||||
"enableI18nLegacyMessageIdFormat": true
|
||||
},
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "inline_template_legacy.js",
|
||||
"expected": "legacy_normalized.js"
|
||||
}
|
||||
],
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should compute normalized legacy ids for messages in external templates where i18nNormalizeLineEndingsInICUs is true",
|
||||
"inputFiles": [
|
||||
"external_template_legacy_normalized.ts"
|
||||
],
|
||||
"angularCompilerOptions": {
|
||||
"i18nNormalizeLineEndingsInICUs": true,
|
||||
"enableI18nLegacyMessageIdFormat": true
|
||||
},
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "external_template_legacy_normalized.js",
|
||||
"expected": "legacy_normalized.js"
|
||||
}
|
||||
],
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should compute non-normalized legacy ids for messages in external templates where i18nNormalizeLineEndingsInICUs is false",
|
||||
"inputFiles": [
|
||||
"external_template_legacy.ts"
|
||||
],
|
||||
"angularCompilerOptions": {
|
||||
"i18nNormalizeLineEndingsInICUs": false,
|
||||
"enableI18nLegacyMessageIdFormat": true
|
||||
},
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "external_template_legacy.js",
|
||||
"expected": "legacy_nonnormalized.js"
|
||||
}
|
||||
],
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
// NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real
|
||||
// `\r\n` line-ending chars when loaded from the test file-system.
|
||||
templateUrl: 'template.html'
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
// NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real
|
||||
// `\r\n` line-ending chars when loaded from the test file-system.
|
||||
templateUrl: 'template.html'
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
// NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real
|
||||
// `\r\n` line-ending chars when loaded from the test file-system.
|
||||
templateUrl: 'template.html'
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
// NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real
|
||||
// `\r\n` line-ending chars when loaded from the test file-system.
|
||||
template: `
|
||||
<div title="abc\r\n
|
||||
def" i18n-title i18n>\r\n
|
||||
Some Message\r\n
|
||||
{\r\n
|
||||
value,\r\n
|
||||
select,\r\n
|
||||
=0 {\r\n
|
||||
zero\r\n
|
||||
}\r\n
|
||||
}</div>`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
// NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real
|
||||
// `\r\n` line-ending chars when loaded from the test file-system.
|
||||
template: `
|
||||
<div title="abc\r\n
|
||||
def" i18n-title i18n>\r\n
|
||||
Some Message\r\n
|
||||
{\r\n
|
||||
value,\r\n
|
||||
select,\r\n
|
||||
=0 {\r\n
|
||||
zero\r\n
|
||||
}\r\n
|
||||
}</div>`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
// NOTE: The ids generated by the compiler are different if the template is external and we are not explicitly normalizing the line endings.
|
||||
$I18N_0$ = $localize `:␟4f9ce2c66b187afd9898b25f6336d1eb2be8b5dc␟7326958852138509669:abc
|
||||
def`;
|
||||
…
|
||||
$I18N_4$ = $localize `:␟70a685282be2d956e4db234fa3d985970672faa0␟4863953183043480207:{VAR_SELECT, select, =0 {zero
|
||||
}}`
|
||||
…
|
||||
$I18N_3$ = $localize `:␟6a55b51b9bcf8f84b1b868c585ae09949668a72b␟2773178924738647105:
|
||||
Some Message
|
||||
${$I18N_4$}:ICU:`;
|
|
@ -0,0 +1,10 @@
|
|||
// NOTE: The ids generated by the compiler are different if the template is external and we are not explicitly normalizing the line endings.
|
||||
$I18N_0$ = $localize `:␟4f9ce2c66b187afd9898b25f6336d1eb2be8b5dc␟7326958852138509669:abc
|
||||
def`;
|
||||
…
|
||||
$I18N_4$ = $localize `:␟b5fe162f4e47ab5b3e534491d30b715e0dff0f52␟4863953183043480207:{VAR_SELECT, select, =0 {zero
|
||||
}}`
|
||||
…
|
||||
$I18N_3$ = $localize `:␟e31c7bc4db2f2e56dc40f005958055a02fd43a2e␟2773178924738647105:
|
||||
Some Message
|
||||
${$I18N_4$}:ICU:`;
|
|
@ -0,0 +1,9 @@
|
|||
$I18N_0$ = $localize `abc
|
||||
def`;
|
||||
…
|
||||
$I18N_4$ = $localize `{VAR_SELECT, select, =0 {zero
|
||||
}}`
|
||||
…
|
||||
$I18N_3$ = $localize `
|
||||
Some Message
|
||||
${$I18N_4$}:ICU:`;
|
|
@ -0,0 +1,11 @@
|
|||
<!-- NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real `\r\n` line-ending chars when loaded from the test file-system. -->
|
||||
<div title="abc\r\n
|
||||
def" i18n-title i18n>\r\n
|
||||
Some Message\r\n
|
||||
{\r\n
|
||||
value,\r\n
|
||||
select,\r\n
|
||||
=0 {\r\n
|
||||
zero\r\n
|
||||
}\r\n
|
||||
}</div>
|
|
@ -0,0 +1,86 @@
|
|||
/****************************************************************************************************
|
||||
* PARTIAL FILE: legacy_enabled.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>Some Message</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>Some Message</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: legacy_enabled.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: legacy_disabled.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<div i18n>Some Message</div>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>Some Message</div>
|
||||
`
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: legacy_disabled.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"$schema": "../../test_case_schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "should add legacy message ids if `enableI18nLegacyMessageIdFormat` is true",
|
||||
"inputFiles": [
|
||||
"legacy_enabled.ts"
|
||||
],
|
||||
"angularCompilerOptions": {
|
||||
"enableI18nLegacyMessageIdFormat": true
|
||||
},
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should not add legacy message ids if `enableI18nLegacyMessageIdFormat` is false",
|
||||
"inputFiles": [
|
||||
"legacy_disabled.ts"
|
||||
],
|
||||
"angularCompilerOptions": {
|
||||
"enableI18nLegacyMessageIdFormat": false
|
||||
},
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
let $I18N_0$;
|
||||
if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
||||
…
|
||||
} else {
|
||||
$I18N_0$ = $localize`Some Message`;
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>Some Message</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
let $I18N_0$;
|
||||
if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { … }
|
||||
else {
|
||||
$I18N_0$ = $localize `:␟ec93160d6d6a8822214060dd7938bf821c22b226␟6795333002533525253:Some Message`;
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<div i18n>Some Message</div>
|
||||
`
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,110 @@
|
|||
/****************************************************************************************************
|
||||
* PARTIAL FILE: foreign_object.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<foreignObject i18n>
|
||||
<xhtml:div xmlns="http://www.w3.org/1999/xhtml">
|
||||
Count: <span>5</span>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
</svg>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<foreignObject i18n>
|
||||
<xhtml:div xmlns="http://www.w3.org/1999/xhtml">
|
||||
Count: <span>5</span>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
</svg>
|
||||
`,
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: foreign_object.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: namespaced_div.js
|
||||
****************************************************************************************************/
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import * as i0 from "@angular/core";
|
||||
export class MyComponent {
|
||||
}
|
||||
MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };
|
||||
MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: 1, type: MyComponent, selector: "my-component", ngImport: i0, template: { source: `
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<foreignObject>
|
||||
<xhtml:div xmlns="http://www.w3.org/1999/xhtml" i18n>
|
||||
Count: <span>5</span>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
</svg>
|
||||
`, isInline: true } });
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyComponent, [{
|
||||
type: Component,
|
||||
args: [{
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<foreignObject>
|
||||
<xhtml:div xmlns="http://www.w3.org/1999/xhtml" i18n>
|
||||
Count: <span>5</span>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
</svg>
|
||||
`,
|
||||
}]
|
||||
}], null, null); })();
|
||||
export class MyModule {
|
||||
}
|
||||
MyModule.ɵmod = i0.ɵɵdefineNgModule({ type: MyModule });
|
||||
MyModule.ɵinj = i0.ɵɵdefineInjector({ factory: function MyModule_Factory(t) { return new (t || MyModule)(); } });
|
||||
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MyModule, { declarations: [MyComponent] }); })();
|
||||
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(MyModule, [{
|
||||
type: NgModule,
|
||||
args: [{ declarations: [MyComponent] }]
|
||||
}], null, null); })();
|
||||
|
||||
/****************************************************************************************************
|
||||
* PARTIAL FILE: namespaced_div.d.ts
|
||||
****************************************************************************************************/
|
||||
import * as i0 from "@angular/core";
|
||||
export declare class MyComponent {
|
||||
static ɵfac: i0.ɵɵFactoryDef<MyComponent, never>;
|
||||
static ɵcmp: i0.ɵɵComponentDefWithMeta<MyComponent, "my-component", never, {}, {}, never, never>;
|
||||
}
|
||||
export declare class MyModule {
|
||||
static ɵmod: i0.ɵɵNgModuleDefWithMeta<MyModule, [typeof MyComponent], never, never>;
|
||||
static ɵinj: i0.ɵɵInjectorDef<MyModule>;
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"$schema": "../../test_case_schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "should handle namespaces inside i18n blocks",
|
||||
"inputFiles": [
|
||||
"foreign_object.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "should handle namespaces on i18n block containers",
|
||||
"inputFiles": [
|
||||
"namespaced_div.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"extraChecks": [
|
||||
"verifyPlaceholdersIntegrity",
|
||||
"verifyUniqueConsts"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
|
||||
consts: function() {
|
||||
let $I18N_0$;
|
||||
if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
||||
const $MSG_EXTERNAL_7128002169381370313$$APP_SPEC_TS_1$ = goog.getMsg("{$startTagXhtmlDiv} Count: {$startTagXhtmlSpan}5{$closeTagXhtmlSpan}{$closeTagXhtmlDiv}", {
|
||||
"startTagXhtmlDiv": "\uFFFD#3\uFFFD",
|
||||
"startTagXhtmlSpan": "\uFFFD#4\uFFFD",
|
||||
"closeTagXhtmlSpan": "\uFFFD/#4\uFFFD",
|
||||
"closeTagXhtmlDiv": "\uFFFD/#3\uFFFD"
|
||||
});
|
||||
$I18N_0$ = $MSG_EXTERNAL_7128002169381370313$$APP_SPEC_TS_1$;
|
||||
}
|
||||
else {
|
||||
$I18N_0$ = $localize `${"\uFFFD#3\uFFFD"}:START_TAG__XHTML_DIV: Count: ${"\uFFFD#4\uFFFD"}:START_TAG__XHTML_SPAN:5${"\uFFFD/#4\uFFFD"}:CLOSE_TAG__XHTML_SPAN:${"\uFFFD/#3\uFFFD"}:CLOSE_TAG__XHTML_DIV:`;
|
||||
}
|
||||
return [
|
||||
["xmlns", "http://www.w3.org/2000/svg"],
|
||||
$i18n_0$,
|
||||
["xmlns", "http://www.w3.org/1999/xhtml"]
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵnamespaceSVG();
|
||||
$r3$.ɵɵelementStart(0, "svg", 0);
|
||||
$r3$.ɵɵelementStart(1, "foreignObject");
|
||||
$r3$.ɵɵi18nStart(2, 1);
|
||||
$r3$.ɵɵnamespaceHTML();
|
||||
$r3$.ɵɵelementStart(3, "div", 2);
|
||||
$r3$.ɵɵelement(4, "span");
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵi18nEnd();
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<foreignObject i18n>
|
||||
<xhtml:div xmlns="http://www.w3.org/1999/xhtml">
|
||||
Count: <span>5</span>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
</svg>
|
||||
`,
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
consts: function() {
|
||||
let $I18N_0$;
|
||||
if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
||||
const $MSG_EXTERNAL_7428861019045796010$$APP_SPEC_TS_1$ = goog.getMsg(" Count: {$startTagXhtmlSpan}5{$closeTagXhtmlSpan}", {
|
||||
"startTagXhtmlSpan": "\uFFFD#4\uFFFD",
|
||||
"closeTagXhtmlSpan": "\uFFFD/#4\uFFFD"
|
||||
});
|
||||
$I18N_0$ = $MSG_EXTERNAL_7428861019045796010$$APP_SPEC_TS_1$;
|
||||
}
|
||||
else {
|
||||
$I18N_0$ = $localize ` Count: ${"\uFFFD#4\uFFFD"}:START_TAG__XHTML_SPAN:5${"\uFFFD/#4\uFFFD"}:CLOSE_TAG__XHTML_SPAN:`;
|
||||
}
|
||||
return [
|
||||
["xmlns", "http://www.w3.org/2000/svg"],
|
||||
["xmlns", "http://www.w3.org/1999/xhtml"],
|
||||
$i18n_0$
|
||||
];
|
||||
},
|
||||
template: function MyComponent_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$r3$.ɵɵnamespaceSVG();
|
||||
$r3$.ɵɵelementStart(0, "svg", 0);
|
||||
$r3$.ɵɵelementStart(1, "foreignObject");
|
||||
$r3$.ɵɵnamespaceHTML();
|
||||
$r3$.ɵɵelementStart(2, "div", 1);
|
||||
$r3$.ɵɵi18nStart(3, 2);
|
||||
$r3$.ɵɵelement(4, "span");
|
||||
$r3$.ɵɵi18nEnd();
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵelementEnd();
|
||||
$r3$.ɵɵelementEnd();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
import {Component, NgModule} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'my-component',
|
||||
template: `
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<foreignObject>
|
||||
<xhtml:div xmlns="http://www.w3.org/1999/xhtml" i18n>
|
||||
Count: <span>5</span>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
</svg>
|
||||
`,
|
||||
})
|
||||
export class MyComponent {
|
||||
}
|
||||
|
||||
@NgModule({declarations: [MyComponent]})
|
||||
export class MyModule {
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue