Как действие взаимодействует с Azure?
Через официальный SDK Microsoft @azure-rest/ai-translation-text, наложенный на @azure/core-rest-pipeline. Это даёт вам автоматические повторные запросы 408/429/5xx, модели типизированных запросов и ответов, а также бесплатную обработку заголовков аутентификации — всё, что раньше было вручную свернутым axios звонком. Публичная поверхность действий (входы, выходы, выходы файлов) осталась без изменений.
Почему переводы иногда бывают не в стиле или не по тону?
Машинный перевод по умолчанию использует универсальную модель. Три ручки помогают: Глоссарий для жёстких переопределений терминов, Категория Custom Translator для отточенных моделей, обученных вашему тону и словарному запасу, и profanityAction для удаления или отметки нецензурных терминов.
Как избежать двойного перевода одного и того же файла?
Запускайте рабочий процесс на paths, которые соответствуют только вашим исходным файлам, например, **/*.en.resx. Действие также включает собственный фильтр для каждого триггера, когда GITHUB_TOKEN установлен, сужая работу до файлов в последнем коммите.
Могу ли я запускать действие офлайн?
Не совсем — Azure AI Translator — это мозг во время выполнения. Но вы можете запускать dryRun: true для проверки парсинга и конфигурации без HTTP-запросов на перевод.
На какой версии Node работает действие?
v3 работает на GitHub Actions node24 runtime. Включённый JavaScript совместим с узлами 20, 22 и 24, которые тестирует CI.
Откуда берётся комплектная dist/?
Действия GitHub JS отправляют скомпилированный JS в репозитории. Рабочий процесс dist-build перестраивает её после каждого слияния, чтобы main, будет ли она дрейфовать, и dist-check блокирует PR, которые получают устаревший выход.
А как насчёт других форматов ресурсов?
Сегодня: .resx, .xliff, .po, .json, .ini, .restext. Открыть номер если нужен другой — интерфейс парсера небольшой (парсинг → отображение → применение переводов → формата), и вклад приветствуется.