Перевести файлы Angular $localize, затем проверить каждую строку
ng extract-i18n по умолчанию записывает XLIFF, с интерполяциями в виде тегов <x> и блоками ICU внутри. Удалите тег, и ng build --localize завершится ошибкой. KAERIS записывает <target> для каждого элемента и сохраняет все теги и id.
Эту страницу перевёл KAERIS и проверил каждую строку обратным переводом. Носитель языка ещё не проверял. Оригинал на английском
Интерполяции остаются в виде тегов <x>
equiv-text каждого тега сохраняется, поэтому сборка по-прежнему знает, чем было {{ name }}.
<trans-unit id="welcome" datatype="html">
<source>Welcome back, <x id="INTERPOLATION" equiv-text="{{ name }}"/>!</source>
</trans-unit>
<trans-unit id="save" datatype="html">
<source>Save changes</source>
</trans-unit>
<trans-unit id="welcome" datatype="html"> <source>Welcome back, <x id="INTERPOLATION" equiv-text="{{ name }}"/>!</source> <target>Willkommen zurück, <x id="INTERPOLATION" equiv-text="{{ name }}"/>!</target> </trans-unit> <trans-unit id="save" datatype="html"> <source>Save changes</source> <target>Änderungen speichern</target> </trans-unit>
Что KAERIS делает с этим
Ваши id, без изменений
Пользовательские
@@idsи сгенерированные остаются как есть, поэтому переводы привязаны к своим сообщениям.Переменные проверяются без ИИ
После перевода простая проверка сравнивает каждую переменную и тег с оригиналом. Строка, потерявшая один, помечается и отображается сверху.
Каждая строка переведена обратно
Другая модель, GPT-4o mini, переводит каждую строку обратно на ваш язык, а DeepSeek V3.2 на американских серверах (DeepInfra, DigitalOcean, Google) оценивает, изменился ли смысл. Вы читаете, что теперь говорит каждая строка.
Вопросы
Читает ли он также --format json?
Да. JSON, который записывает ng extract-i18n --format json, переводится по ключам, включая блоки ICU.
Поддерживается ли XLIFF 2.0?
Пока нет. Стандартный xlf Angular — это XLIFF 1.2, который работает.
Это бесплатно?
Да, без учетной записи: 10 000 символов на файл и до 8 языков за запуск. Бесплатный API-ключ увеличивает лимит файлов до 50 000 символов. Пожизненная лицензия стоит $79 один раз, при использовании вашего собственного ключа OpenRouter; ежемесячные планы начинаются от $19. Цены
Могу ли я запускать его из терминала или в CI?
Да. pip install kaeris, затем kaeris translate с вашим файлом и --langs de,ja. GitHub Action открывает pull request при появлении новых ключей. Документация