fix(compiler): ensure that legacy ids are rendered for ICUs (#33318)
When computing i18n messages for templates there are two passes. This is because messages must be computed before any whitespace is removed. Then on a second pass, the messages must be recreated but reusing the message ids from the first pass. Previously ICUs were losing their legacy ids that had been computed via the first pass. This commit fixes that by keeping track of the message from the first pass (`previousMessage`) for ICU placeholder nodes. // FW-1637 PR Close #33318
This commit is contained in:

committed by
Matias Niemelä

parent
aaa08f7be3
commit
5d86e4a9b1
@ -2179,6 +2179,23 @@ runInEachFileSystem(os => {
|
||||
expect(jsContents).not.toContain(':Some text');
|
||||
});
|
||||
|
||||
it('should also render legacy id for ICUs when normal messages are using legacy ids', () => {
|
||||
env.tsconfig({i18nInFormat: 'xliff'});
|
||||
env.write(`test.ts`, `
|
||||
import {Component} from '@angular/core';
|
||||
@Component({
|
||||
selector: 'test',
|
||||
template: '<div i18n="@@custom">Some text {age, plural, 10 {ten} other {other}}</div>'
|
||||
})
|
||||
class FooCmp {}`);
|
||||
env.driveMain();
|
||||
const jsContents = env.getContents('test.js');
|
||||
expect(jsContents)
|
||||
.toContain(
|
||||
':@@720ba589d043a0497ac721ff972f41db0c919efb:{VAR_PLURAL, plural, 10 {ten} other {other}}');
|
||||
expect(jsContents).toContain(':@@custom:Some text');
|
||||
});
|
||||
|
||||
it('@Component\'s `interpolation` should override default interpolation config', () => {
|
||||
env.write(`test.ts`, `
|
||||
import {Component} from '@angular/core';
|
||||
|
Reference in New Issue
Block a user