Расширение Project Translator для VSCode для реализации многоязычной локализации проекта

Project Translator — это мощное расширение для VSCode, которое на основе технологий искусственного интеллекта осуществляет автоматический многоязычный перевод на уровне проекта, сохраняя целостность структуры кода и эффективно выполняя работу по локализации документации.

Расширение Project Translator для VSCode предоставляет разработчикам эффективное решение для многоязыковой локализации проектов. Это расширение использует технологии ИИ для автоматического перевода как отдельных файлов, так и целых папок проектов, значительно сокращая объем работы по локализации документации при сохранении целостности структуры и форматирования кода. Для открытых проектов или коммерческого программного обеспечения, ориентированных на глобальную аудиторию, Project Translator значительно повышает эффективность и согласованность перевода. По сравнению с традиционными ручными методами перевода, такие автоматизированные инструменты способны обрабатывать большие объемы документации, что особенно актуально для проектов с регулярными обновлениями. При разработке проектов с использованием инструмента для разработки VSCode, расширение Project Translator бесшовно интегрируется в существующий рабочий процесс, предоставляя разработчикам удобную поддержку нескольких языков.

Ключевые особенности функциональности

Расширение Project Translator обладает рядом мощных функциональных возможностей, которые вместе образуют комплексное решение для многоязычного перевода проектов. Расширение поддерживает два режима перевода: на уровне папок и на уровне файлов, что позволяет гибко выбирать в зависимости от требований проекта. В режиме перевода папок расширение рекурсивно обрабатывает подпапки, автоматически определяет контент, доступный для перевода, и сохраняет исходную структуру папок и иерархию. Этот механизм пакетной обработки делает перевод крупных проектов выполнимым и эффективным. Расширение можно бесплатно получить и установить из VS Code Extensions Marketplace и Open VSX Registry.

Интеллектуальный перевод является одним из ключевых преимуществ расширения. В процессе перевода расширение автоматически поддерживает целостность структуры кода, переводя только комментарии к коду и содержимое документации, при этом сохраняя логику кода неизменной. Для форматов структурированных данных, таких как JSON и XML, расширение также способно сохранять их исходную целостность структуры. Такой дизайн гарантирует, что переведенные файлы с кодом по-прежнему могут быть скомпилированы и запущены, избегая проблем с повреждением кода из-за перевода. Расширение также обеспечивает профессиональное качество перевода технической документации, точно понимая технические термины и контекстные связи.

mindmap
  root((Project Translator))
    Режимы перевода
      Уровень папок
      Уровень файлов
      Рекурсивная обработка
    Интеллектуальный перевод
      Защита структуры кода
      Перевод комментариев
      Перевод документации
      Сохранение форматирования
    Гибкость конфигурации
      Множество исходных папок
      Множество целевых языков
      Фильтрация файлов
      Выбор модели ИИ
    Пользовательский опыт
      Реальный прогресс
      Управление задачами
      Инкрементальный перевод
      Дифференциальный перевод

Гибкость конфигурации — еще одна важная особенность Project Translator. Пользователи могут настроить исходные папки и несколько целевых папок, поддерживать пользовательские интервалы перевода файлов, устанавливать определенные типы файлов для игнорирования и выбирать несколько вариантов моделей ИИ. Эта гибкость позволяет расширению адаптироваться к различным структурам проектов и требованиям перевода. Расширение поддерживает несколько популярных моделей ИИ, включая OpenAI, DeepSeek, Grok и другие, позволяя пользователям выбирать подходящую модель в зависимости от бюджета и требований к качеству перевода. Для проектов, использующих Hugo или другие генераторы статических сайтов, такой подход на основе папок особенно удобен.

Пользовательский интерфейс расширения разработан с акцентом на удобство использования. В процессе перевода отображается реальный прогресс, и пользователи могут в любой момент приостановить, возобновить или остановить задачу перевода. Расширение автоматически поддерживает структуру целевых папок и поддерживает инкрементальный перевод для избежания повторной работы. Когда задача перевода требует длительного времени, такая управляемость становится особенно важной. Кроме того, расширение предоставляет экспериментальную функцию дифференциального перевода, которая переводит только измененный контент, тем самым уменьшая использование API и лучше сохраняя историю версий. Для разработчиков, использующих OpenAI API или другие сервисы ИИ, расширение поддерживает безопасное управление API-ключами через переменные окружения.

Рабочий процесс перевода

Рабочий процесс перевода Project Translator тщательно спроектирован для обеспечения эффективности и надежности всего процесса. После того как пользователь активирует задачу перевода через панель команд, расширение последовательно обрабатывает исходный контент и генерирует версии на целевом языке в соответствии с предопределенным процессом.

flowchart TD
    A[Пользователь активирует команду перевода] e1@--> B{Проверка конфигурации}
    B e2@-->|Не настроено| C[Отобразить диалог выбора папки]
    C e3@--> D[Сохранить выбранные пользователем исходный и целевой пути]
    D e4@--> E[Сканировать исходные файлы и папки]
    B e5@-->|Настроено| E
    E e6@--> F[Определить файлы для перевода]
    F e7@--> G[Упорядочить задачи перевода по приоритету]
    G e8@--> H{Выбор режима перевода пользователем}
    H e9@-->|Стандартный перевод| I[Чтение содержимого исходного файла]
    H e10@-->|Дифференциальный перевод| J[Чтение содержимого исходного и целевого файлов]
    I e11@--> K[Вызов модели ИИ для перевода]
    J e12@--> K
    K e13@--> L[Генерация результатов перевода]
    L e14@--> M{Проверка качества перевода}
    M e15@-->|Проверка пройдена| N[Запись в целевой файл]
    M e16@-->|Проверка не пройдена| O[Откат или повтор]
    N e17@--> P[Обновление прогресса перевода]
    P e18@--> Q{Есть ли еще файлы для перевода}
    Q e19@-->|Да| I
    Q e20@-->|Нет| R[Завершение задачи перевода]
    R e21@--> S[Отображение сводки перевода]

    classDef start fill:#E3F2FD,stroke:#1565C0,stroke-width:1px,color:#0D47A1;
    classDef work fill:#E8F5E9,stroke:#2E7D32,stroke-width:1px,color:#1B5E20;
    classDef check fill:#FFF8E1,stroke:#EF6C00,stroke-width:1px,color:#E65100;
    classDef done fill:#F3E5F5,stroke:#6A1B9A,stroke-width:1px,color:#4A148C;
    classDef animate stroke:#EF6C00,stroke-width:2px,stroke-dasharray: 9\,5,stroke-dashoffset: 900,animation: dash 25s linear infinite;
    class A start;
    class e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17,e18,e19,e20,e21 animate;
    class B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S work;
    class B,H,M,Q check;
    class S done;

Рабочий процесс начинается с выбора пользователем команды перевода через панель команд. Сначала расширение проверяет, были ли уже настроены исходный и целевой пути. Если они еще не настроены, отображается диалог выбора папки для указания путей пользователем. После настройки расширение начинает сканировать все файлы и подпапки в исходной папке, определяя типы файлов, требующих перевода. Расширение фильтрует файлы, которые не требуют обработки, в соответствии с настроенными правилами расширений файлов и путей. После определения файлов расширение упорядочивает задачи перевода по определенному приоритету, обеспечивая перевод важных файлов в первую очередь. Пользователи могут выбрать стандартный режим перевода или дифференциальный режим. Стандартный режим перевода полностью переводит содержимое файла, в то время как дифференциальный режим переводит только измененные части, что более подходит для обновления уже переведенного контента. После чтения содержимого исходного файла расширение вызывает настроенную модель ИИ для обработки перевода. После получения результатов перевода от модели ИИ расширение проверяет качество перевода. Процесс проверки включает проверку целостности форматирования, согласованности терминов и сохранения необходимой структуры кода. Если проверка пройдена, результаты перевода записываются в целевой файл с сохранением той же структуры каталогов, что и у исходного файла. Если проверка не пройдена, расширение пытается выполнить откат или повторный перевод. После завершения перевода каждого файла расширение обновляет прогресс перевода, пока все файлы, ожидающие перевода, не будут обработаны. В конечном итоге расширение отображает сводную информацию о задаче перевода, включая количество успешно переведенных файлов, список неудачных файлов и статистику времени, затраченного на перевод.

Подробное описание методов конфигурации

Система конфигурации расширения Project Translator спроектирована как гибкая и интуитивно понятная. Пользователи могут настроить поведение расширения через интерфейс настроек VSCode или напрямую отредактировав конфигурационный файл. Основные параметры конфигурации расширения включают исходный и целевой пути перевода, параметры модели ИИ, правила фильтрации и т.д.

mindmap
  root((Система конфигурации))
    Конфигурация путей
      Исходные папки
      Целевые папки
      Поддержка нескольких языков
    Модель ИИ
      Выбор поставщика
      Конфигурация API
      Параметры модели
    Правила фильтрации
      Игнорируемые пути
      Игнорируемые расширения
      Только копирование файлов
    Расширенные опции
      Системный промпт
      Режим отладки
      Конфигурация логов
      Дифференциальный перевод
    Пользовательские промпты
      Стиль перевода
      Терминологические нормы
      Требования к форматированию

Конфигурационные параметры в основном делятся на несколько категорий. Конфигурация папок и файлов определяет входные и выходные пути перевода, позволяя пользователям указывать несколько исходных папок и соответствующие им целевые папки. Для каждой исходной и целевой папки необходимо указать языковой код. Расширение поддерживает 28 языков, включая упрощенный китайский, традиционный китайский, японский, корейский, английский, французский, немецкий, испанский, португальский, русский и другие основные языки. Такая конфигурация с несколькими целевыми языками позволяет за одну задачу перевода одновременно генерировать версии на нескольких языках, значительно повышая эффективность перевода.

Конфигурация модели ИИ позволяет пользователям выбирать различных поставщиков услуг перевода и модели. По умолчанию расширение использует модель DeepSeek, а также поддерживает такие сервисы, как OpenAI, Grok и другие. Пользователи могут настроить конечную точку API, ключ API, название модели, количество запросов в минуту, максимальное количество токенов на сегмент, время ожидания, параметр температуры и т.д. Для повышения безопасности расширение поддерживает управление ключами API через переменные окружения, избегая прямого записи конфиденциальной информации в конфигурационный файл.

Конфигурация правил фильтрации и пропуска позволяет пользователям точно контролировать, какие файлы требуют перевода, а какие нужно игнорировать. Параметр ignore позволяет пользователям указывать пути и расширения файлов, которые следует полностью игнорировать. По умолчанию игнорируются каталог node_modules и файлы .log. Параметр copyOnly используется для указания типов файлов, которые нужно копировать без перевода. Параметр skipFrontMatterMarkers позволяет пользователям пропускать перевод на основе метаданных front matter файлов Markdown, например, пропуская документы, помеченные как черновики.

Расширенные настройки включают язык системных промптов, режим отладки, конфигурацию файлов логов и режим дифференциального перевода. Язык системных промптов управляет языком промптов, используемых внутри расширения, по умолчанию — английский. При включении режима отладки записываются все запросы и ответы API, что упрощает диагностику проблем. Конфигурация файлов логов позволяет пользователям записывать отладочные логи в файл с поддержкой пользовательских путей, ограничений на размер файла и количества файлов. Режим дифференциального перевода является экспериментальной функцией, которая при активации переводит только измененный контент, уменьшая ненужные вызовы API.

Конфигурация пользовательских промптов — это особенность расширения. Пользователи могут определять набор промптов, которые отправляются модели ИИ после системных промптов. Таким образом, пользователи могут направлять модель перевода следовать определенному стилю перевода, терминологическим нормам или требованиям к форматированию. Например, пользователи могут указать, что файлы Markdown с полем draft в front matter, равным true, не требуют перевода, или потребовать замены ./readmes/ на ./ в путях.

Ниже приведен типичный пример конфигурации:

{
  "projectTranslator.specifiedFolders": [
    {
      "sourceFolder": {
        "path": "${workspaceFolder}/content/en",
        "lang": "en-us"
      },
      "targetFolders": [
        {
          "path": "${workspaceFolder}/content/zh-cn",
          "lang": "zh-cn"
        },
        {
          "path": "${workspaceFolder}/content/ja-jp",
          "lang": "ja-jp"
        }
      ]
    }
  ],
  "projectTranslator.currentVendor": "deepseek",
  "projectTranslator.vendors": [
    {
      "name": "deepseek",
      "apiEndpoint": "https://api.deepseek.com/v1",
      "apiKeyEnvVarName": "DEEPSEEK_API_KEY",
      "model": "deepseek-chat",
      "rpm": 20,
      "maxTokensPerSegment": 3000,
      "timeout": 300,
      "temperature": 0.1
    }
  ],
  "projectTranslator.ignore": {
    "paths": ["**/node_modules/**", "**/.git/**"],
    "extensions": [".log", ".min.js"]
  },
  "projectTranslator.userPrompts": [
    "1. Should return no need translate if the markdown file has 'draft' set to 'true' in the front matter.",
    "2. Maintain technical terminology consistency across all translated files."
  ]
}

Примеры практического применения

Расширение Project Translator было проверено и применено в нескольких реальных проектах. Организация Project Translation поддерживает несколько образцов переводческих проектов, которые охватывают такие области, как визуализация алгоритмов, документация по языкам программирования, руководства по инструментам разработки и другие. Через эти практические примеры можно более наглядно понять сферы применения и эффективность расширения.

Проект algorithm-visualizer — это интерактивная платформа визуализации алгоритмов, исходный проект имеет более 47 000 звезд на GitHub. После использования расширения Project Translator документация этого проекта была переведена на несколько языков, помогая разработчикам по всему миру лучше понимать принципы алгоритмов и эффекты визуализации. Проект gobyexample — это коллекция учебных примеров на языке Go, имеющая более 7 500 звезд. После перевода с помощью плагина учащиеся могут читать примеры кода и объяснения на Go на родном языке.

Google Style Guide — это руководство по стилю для открытых проектов, происходящее от Google, имеющее более 38 000 звезд и охватывающее стандарты кодирования на различных языках программирования. С помощью расширения Project Translator эти руководства по стилю были переведены на несколько языков, позволяя разработчикам по всему миру изучать лучшие практики кодирования на знакомом языке. Проект reference-en-us — это коллекция шпаргалок для быстрого ориентирования разработчиков, имеющая более 7 800 звезд и предоставляющая быструю справочную информацию по таким инструментам и языкам, как awk, bash, CSS, Golang, Python, Vim и другим.

Эти практические примеры демонстрируют применимость расширения Project Translator в различных типах проектов. Независимо от того, техническая документация, учебные пособия или справочники, расширение способно предоставлять высококачественные результаты перевода. Расширение не только обрабатывает чистый текстовый контент, но и корректно работает с файлами Markdown, содержащими сложное форматирование, такое как блоки кода, таблицы, ссылки и т.д. Для проектов, содержащих большое количество технических терминов, интеллектуальные возможности перевода расширения обеспечивают согласованность и точность терминологии. Философия дизайна расширения полностью соответствует принципам открытости экосистемы VS Code, предоставляя разработчикам возможность настройки функциональности через механизм расширений. В сочетании с другими инструментами разработки, такими как система контроля версий Git, расширение может лучше интегрироваться в современные рабочие процессы разработки.

Заключение

Расширение Project Translator для VSCode предоставляет эффективное и надежное решение для многоязыковой локализации проектов. Это расширение сочетает передовые технологии ИИ с практичным инженерным дизайном, реализуя автоматизированный процесс перевода при сохранении целостности структуры кода. Поддержка перевода на уровне папок и файлов, гибкие параметры конфигурации и удобный пользовательский интерфейс делают его идеальным инструментом для проектов, ориентированных на глобальную аудиторию.

Ключевое преимущество расширения Project Translator заключается в его способности к интеллектуальному переводу, которая точно распознает код и содержимое документации, переводя только необходимые части и избегая нарушения исполняемости кода. Внедрение функции дифференциального перевода еще больше повышает эффективность перевода, что особенно ценно для непрерывного обновления крупных проектов. Система конфигурации расширения разработана рационально, предлагая как обширные возможности настройки, так и сохраняя простоту конфигурации, что позволяет пользователям с разным уровнем технических знаний быстро начать работу. Как открытое расширение для перевода VSCode, оно предоставляет практическое решение для локализации проектов.

Расширение Project Translator было проверено в нескольких известных открытых проектах, включая algorithm-visualizer, gobyexample, Google Style Guide и другие. Эти успешные примеры доказывают практическую ценность и надежность расширения. Для проектов, требующих поддержки нескольких языков, особенно открытых проектов с большим объемом документации, расширение Project Translator способно значительно снизить объем работ по локализации, повышая качество и согласованность перевода.

Открытый характер расширения также обеспечивает хорошую расширяемость и потенциал для поддержки сообщества. Пользователи могут настраивать и расширять его в соответствии со своими потребностями, а участники сообщества могут участвовать в улучшении и доработке расширения. По мере постоянного прогресса технологий ИИ и растущего спроса на многоязычные решения, расширение Project Translator имеет потенциал играть более значительную роль в области локализации проектов.