mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
Now that the `$localize` translations are `MessageId` based the
compiler must render `MessageId`s in its generated `$localize` code.
This is because the `MessageId` used by the compiler is computed
from information that does not get passed through to the `$localize`
tagged string.
For example, the generated code for the following template
```html
<div id="static" i18n-title="m|d" title="introduction"></div>
```
will contain these localization statements
```ts
if (ngI18nClosureMode) {
/**
* @desc d
* @meaning m
*/
const MSG_EXTERNAL_8809028065680254561$$APP_SPEC_TS_1 = goog.getMsg("introduction");
I18N_1 = MSG_EXTERNAL_8809028065680254561$$APP_SPEC_TS_1;
}
else {
I18N_1 = $localize \`:m|d@@8809028065680254561:introduction\`;
}
```
Since `$localize` is not able to accurately regenerate the source-message
(and so the `MessageId`) from the generated code, it must rely upon the
`MessageId` being provided explicitly in the generated code.
The compiler now prepends all localized messages with a "metadata block"
containing the id (and the meaning and description if defined).
Note that this metadata block will also allow translation file extraction
from the compiled code - rather than relying on the legacy ViewEngine
extraction code. (This will be implemented post-v9).
Although these metadata blocks add to the initial code size, compile-time
inlining will completely remove these strings and so will not impact on
production bundle size.
PR Close #32594
|
||
|---|---|---|
| .. | ||
| aot | ||
| css_parser | ||
| expression_parser | ||
| i18n | ||
| ml_parser | ||
| output | ||
| render3 | ||
| schema | ||
| selector | ||
| template_parser | ||
| BUILD.bazel | ||
| compiler_facade_interface_spec.ts | ||
| config_spec.ts | ||
| core_spec.ts | ||
| directive_lifecycle_spec.ts | ||
| directive_normalizer_spec.ts | ||
| directive_resolver_mock_spec.ts | ||
| directive_resolver_spec.ts | ||
| integration_spec.ts | ||
| metadata_resolver_fixture.ts | ||
| metadata_resolver_spec.ts | ||
| ng_module_resolver_mock_spec.ts | ||
| ng_module_resolver_spec.ts | ||
| parse_util_spec.ts | ||
| pipe_resolver_mock_spec.ts | ||
| pipe_resolver_spec.ts | ||
| resource_loader_mock_spec.ts | ||
| runtime_compiler_spec.ts | ||
| shadow_css_spec.ts | ||
| spies.ts | ||
| style_url_resolver_spec.ts | ||
| test_bindings.ts | ||
| url_resolver_spec.ts | ||
| util_spec.ts | ||