Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>i18nSupport for Websoft HCMNew to Visual Studio Code? Get it now.
i18nSupport for Websoft HCM

i18nSupport for Websoft HCM

Websoft

|
3 installs
| (0) | Free
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

i18nSupport

Расширение для Visual Studio Code, которое помогает выносить русские (кириллические) строки из программного кода в отдельные файлы констант. Это первый шаг к локализации (i18n) — после переноса строк в коде остаётся только «скелет» вида StrI18N('ключ'), а сами тексты лежат в const.json, куда их удобно передавать переводчикам.

Как это работает (коротко)

  1. Вы открываете файл с кодом — расширение подсвечивает все строки, содержащие кириллицу.
  2. Вы переносите строки в константы (одну или все сразу).
  3. В коде строка заменяется на вызов StrI18N('ключ'), а сам текст записывается в const.json.
  4. Если в коде встречается StrI18N('ключ'), которого нет в const.json — расширение подсвечивает его красным.

Возможности

Голубая подсветка кириллических строк

Все строковые литералы, содержащие хотя бы одну кириллическую букву, подсвечиваются полупрозрачным голубым фоном. Подсвечиваются:

  • обычные строки: 'Привет, мир!', "Ошибка загрузки";
  • шаблонные строки без подстановок: `Список элементов`;
  • шаблонные строки с подстановками: `Всего: ${count} шт.`.

Не подсвечиваются:

  • строки, которые уже обёрнуты в StrI18N(...) или StrFormat(...) — они считаются уже переведёнными;
  • комментарии (расширение работает через AST, поэтому комментарии не попадают в список литералов).

Подсветка обновляется на лету при каждом изменении файла.

Красная подсветка отсутствующих констант

Расширение находит все вызовы StrI18N('ключ') в текущем файле и проверяет, есть ли этот ключ в const.json (в папке, выбранной настройкой constantPlace). Если ключа нет — строка подсвечивается красным. Исключение: Ключи, содержащие подстроку GLOBAL/, не подсвечиваются. Это глобальные константы, которые хранятся в другом месте и не должны присутствовать в локальном const.json. Подсветка обновляется при изменении файла и при изменении const.json.

Перенос одной строки

Выделяете строку (или шаблонную строку) в редакторе → правая кнопка мыши → «Перенести в константы» (или палитра команд Ctrl+Shift+P → i18n: Перенести в константы).

Что происходит:

  1. Расширение генерирует ключ из содержимого строки (транслитерация + нормализация).
  2. Записывает пару ключ: текст в const.json (создаёт файл и папки, если их ещё нет).
  3. Заменяет выделенный текст в коде на StrI18N('ключ') (для обычных строк) или на StrFormat(StrI18N('ключ'), { p0: expr, ... }) (для шаблонных строк с подстановками).
  4. Если ключ уже существует в const.json с тем же значением — используется существующий ключ (дубликаты не создаются).

Массовая обработка файла

Команда «Обработать весь файл» (i18n: Обработать весь файл) находит все кириллические литералы в активном файле и переносит их в const.json за один проход. В коде все найденные строки заменяются на соответствующие вызовы StrI18N / StrFormat.

Генерация ключей

Ключ генерируется автоматически из текста строки:

  • кириллица транслитерируется в латиницу (а→a, б→b, в→v, …, я→ya);
  • латиница и цифры остаются как есть;
  • пробелы и спецсимволы заменяются на _ или удаляются;
  • ключ приводится к нижнему регистру;
  • длина ограничивается настройкой maxKeyLength (по умолчанию 50 символов).

Пример: строка "Ошибка загрузки файла" → ключ oshibka_zagruzki_fayla.

Шаблонные строки

Если строка содержит подстановки ${...}, расширение:

  • заменяет каждую подстановку на плейсхолдер {p0}, {p1}, …;
  • сохраняет значение в const.json с плейсхолдерами: "Всего: {p0} шт.";
  • в коде формирует вызов: StrFormat(StrI18N('vsego_p0_sht'), { p0: count }).

Выбор папки хранения констант

Команда «Сменить папку хранения констант» переключает режим:

Режим Путь к const.json Когда использовать
component (по умолчанию) <3 уровня вверх от файла>/i18n/<имя_файла>/ru/const.json Когда константы лежат в корне компонента
near <папка_с_файлом>/i18n/<имя_файла>/ru/const.json Когда константы хранятся рядом с кодом

Переключение мгновенно влияет на все последующие операции (чтение/запись/подсветка).

Команды

Команда (палитра Ctrl+Shift+P) Горячие клавиши Что делает
i18n: Перенести в константы ПКМ → контекстное меню (при выделении) Переносит выделенную строку в const.json
i18n: Обработать весь файл — Массово переносит все кириллические строки активного файла
i18n: Включить/выключить подсказки — Вкл/выкл голубую подсветку кириллицы
i18n: Включить/выключить подсказки отсутствующих констант — Вкл/выкл красную подсветку
i18n: Сменить папку хранения констант — Переключает режим component / near

Настройки

Все настройки находятся в разделе i18n Extractor (поиск в настройках VS Code: i18nExtractor).

Параметр Тип По умолчанию Описание
i18nExtractor.enableHighlighting boolean false Включить голубую подсветку кириллических строк
i18nExtractor.enableMissingConstHighlight boolean false Включить красную подсветку отсутствующих констант
i18nExtractor.maxKeyLength number 50 Максимальная длина генерируемого ключа (от 3 до 10000)
i18nExtractor.constantPlace string "component" Где хранить const.json: "component" или "near"

Где хранятся константы

Файл const.json создаётся автоматически (вместе с папками) при первом переносе. Файл записывается с BOM (UTF-8 с BOM), чтобы корректно открываться в Windows.

Пример содержимого const.json:

{
	"oshibka_zagruzki": "Ошибка загрузки",
	"vsego_p0_sht": "Всего: {p0} шт.",
	"soobshchenie": "Сообщение"
}

Примеры: до / после

Обычная строка:

// ДО
showMessage('Ошибка загрузки файла');

// ПОСЛЕ
showMessage(StrI18N('oshibka_zagruzki_fayla'));

Шаблонная строка с подстановкой:

// ДО
showMessage(`Всего: ${count} элементов`);

// ПОСЛЕ
showMessage(StrFormat(StrI18N('vsego_p0_elementov'), { p0: count }));

Строка, которая уже переведена — не затрагивается:

// Не меняется, не подсвечивается голубым
showMessage(StrI18N('privet'));
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft