Polyglot adds i18n attributes and $localize tags in place — compile-time i18n with ng extract-i18n as the source of truth, plus a starter XLIFF so you're never starting blank.
@angular/localize is compile-time i18n: you mark templates, ng extract-i18n produces the XLIFF, and the build emits per-locale bundles. Polyglot automates the marking.
<h1>Welcome back</h1>
<p>Your projects are ready</p><h1 i18n="@@src.app.app.component.welcome_back">Welcome back</h1>
<p i18n="@@src.app.app.component.your_projects_are_ready">Your projects are ready</p>i18n="@@key" attributes; translatable attributes get i18n-title="@@key" markers.$localize tagged templates.ng extract-i18n, which handles placeholders natively — Polyglot never hand-approximates what the extractor does correctly.Polyglot writes a simple-case starter messages.xlf so your pipeline runs immediately — and tells you to run ng extract-i18n for the authoritative catalog. The extractor is the source of truth in this mode; the CLI's summary says so explicitly.
<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="ng2.template">
<body>
<trans-unit id="src.app.app.component.welcome_back" datatype="html">
<source>Welcome back</source>
</trans-unit>
<trans-unit id="src.app.app.component.your_projects_are_ready" datatype="html">
<source>Your projects are ready</source>
</trans-unit>
</body>
</file>
</xliff><?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="ng2.template">
<body>
</body>
</file>
</xliff><?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="ng2.template">
<body>
</body>
</file>
</xliff>$ curl -fsSL https://getpolyglot.ai/install.sh | bash
$ polyglot init --framework angular
$ polyglot scan
$ polyglot wrap
$ polyglot translate --languages de # 50 strings free, no signupStart in your terminal
Install the CLI, run a scan, and see exactly what you're missing. Free, no account required.