Files
cc-1c-skills/tests/skills/cases/mxl-decompile/roundtrip-text-languages.json
T
Nick ShirokovandClaude Opus 5 683ed8e08d feat(mxl-compile,mxl-decompile): textLanguages — текст строкой на всех языках макета
Строка в text/template разворачивается по одному элементу на каждый язык из
документного ключа textLanguages (по умолчанию только ru). Декомпилятор собирает
набор языков по всем текстам макета и пишет строкой текст, одинаковый на всём
наборе; различающийся остаётся объектом.

Языки текстов и языки, объявленные в конфигурации, — разные вещи: типовые ERP
объявляют один ru, а тексты хранят под ru и en. Набор постоянен внутри
конфигурации, поэтому он документный, а не вычисляемый: к моменту компиляции
тексты уже свёрнуты в строки.

Заодно: эмиссия tl проверяет НАЛИЧИЕ ключа text/template, а не истинность —
пустая строка это текст, платформа такие ячейки пишет с пустым tl, а по
истинности он терялся.

Проверено на пилоте (40 макетов ERP): скомпилированный XML совпадает с прошлым
прогоном байт в байт обоими рантаймами, объём JSON −47%.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 12:00:20 +03:00

30 lines
818 B
JSON

{
"name": "Декомпиляция макета с текстом на нескольких языках",
"preRun": [
{
"script": "mxl-compile/scripts/mxl-compile",
"input": {
"columns": 2,
"textLanguages": ["ru", "en"],
"areas": [
{
"name": "Test",
"rows": [
{
"cells": [
{ "col": 1, "text": "Итого" },
{ "col": 2, "text": { "ru": "Поставщик", "en": "Supplier" } }
]
}
]
}
]
},
"args": { "-JsonPath": "{inputFile}", "-OutputPath": "Template.xml" },
"cwd": "{workDir}"
}
],
"params": { "templatePath": "Template.xml" },
"expect": { "stdoutContains": "textLanguages" }
}