co-op-translator

Использование GitHub Action Co-op Translator (Руководство для организаций)

Целевая аудитория: Это руководство предназначено для внутренних пользователей Microsoft или команд, имеющих доступ к необходимым учетным данным для предустановленного приложения Co-op Translator GitHub App, либо способных создать собственное приложение GitHub App.

Автоматизируйте перевод документации вашего репозитория с помощью GitHub Action Co-op Translator. В этом руководстве описан процесс настройки действия, чтобы автоматически создавать pull-запросы с обновленными переводами при изменении исходных Markdown-файлов или изображений.

[!IMPORTANT]

Выбор подходящего руководства:

В этом руководстве описана настройка с использованием GitHub App ID и приватного ключа. Обычно вам нужен этот способ (“Руководство для организаций”), если: GITHUB_TOKEN имеет ограниченные права: В вашей организации или репозитории права стандартного GITHUB_TOKEN ограничены. В частности, если GITHUB_TOKEN не имеет необходимых прав write (например, contents: write или pull-requests: write), то рабочий процесс из Публичного руководства завершится ошибкой из-за недостаточных прав. Использование отдельного GitHub App с явно заданными правами позволяет обойти это ограничение.

Если вышеуказанное к вам не относится:

Если стандартный GITHUB_TOKEN имеет достаточные права в вашем репозитории (то есть нет ограничений со стороны организации), используйте Публичное руководство по настройке с GITHUB_TOKEN. Публичное руководство не требует получения или управления App ID и приватными ключами, а использует только стандартный GITHUB_TOKEN и права репозитория.

Предварительные требования

Перед настройкой GitHub Action убедитесь, что у вас есть необходимые учетные данные для AI-сервиса.

1. Обязательно: Учетные данные языковой модели AI Вам нужны учетные данные хотя бы для одной поддерживаемой языковой модели:

2. Необязательно: Учетные данные Computer Vision (для перевода текста на изображениях)

Настройка и конфигурация

Выполните следующие шаги для настройки GitHub Action Co-op Translator в вашем репозитории:

Шаг 1: Установка и настройка аутентификации через GitHub App

Рабочий процесс использует аутентификацию через GitHub App для безопасного взаимодействия с вашим репозиторием (например, создания pull-запросов) от вашего имени. Выберите один из вариантов:

Вариант A: Установка предустановленного приложения Co-op Translator GitHub App (для внутреннего использования Microsoft)

  1. Перейдите на страницу Co-op Translator GitHub App.

  2. Нажмите Install и выберите аккаунт или организацию, где находится ваш целевой репозиторий.

    Установка приложения

  3. Выберите Only select repositories и укажите ваш репозиторий (например, PhiCookBook). Нажмите Install. Возможно, потребуется пройти аутентификацию.

    Установка авторизации

  4. Получение учетных данных приложения (требуется внутренний процесс): Чтобы рабочий процесс мог аутентифицироваться как приложение, вам нужны две информации, предоставляемые командой Co-op Translator:
    • App ID: Уникальный идентификатор приложения Co-op Translator. App ID: 1164076.
    • Private Key: Необходимо получить полное содержимое файла приватного ключа .pem у контактного лица-администратора. Относитесь к этому ключу как к паролю и храните его в безопасности.
  5. Перейдите к шагу 2.

Вариант B: Использование собственного приложения GitHub App

Шаг 2: Настройка секретов репозитория

Добавьте учетные данные GitHub App и вашего AI-сервиса как зашифрованные секреты в настройках репозитория.

  1. Перейдите в ваш целевой репозиторий на GitHub (например, PhiCookBook).

  2. Откройте Settings > Secrets and variables > Actions.

  3. В разделе Repository secrets нажмите New repository secret для каждого секрета из списка ниже.

    Выбор настроек actions

Обязательные секреты (для аутентификации через GitHub App):

Имя секрета Описание Источник значения
GH_APP_ID App ID приложения GitHub (из шага 1). Настройки GitHub App
GH_APP_PRIVATE_KEY Полное содержимое скачанного файла .pem. Файл .pem (из шага 1)

Секреты AI-сервиса (добавьте ВСЕ, которые применимы согласно вашим требованиям):

Имя секрета Описание Источник значения
AZURE_AI_SERVICE_API_KEY Ключ для Azure AI Service (Computer Vision) Azure AI Foundry
AZURE_AI_SERVICE_ENDPOINT Endpoint для Azure AI Service (Computer Vision) Azure AI Foundry
AZURE_OPENAI_API_KEY Ключ для Azure OpenAI Azure AI Foundry
AZURE_OPENAI_ENDPOINT Endpoint для Azure OpenAI Azure AI Foundry
AZURE_OPENAI_MODEL_NAME Имя вашей модели Azure OpenAI Azure AI Foundry
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME Имя деплоймента Azure OpenAI Azure AI Foundry
AZURE_OPENAI_API_VERSION Версия API для Azure OpenAI Azure AI Foundry
OPENAI_API_KEY API Key для OpenAI OpenAI Platform
OPENAI_ORG_ID ID организации OpenAI OpenAI Platform
OPENAI_CHAT_MODEL_ID ID конкретной модели OpenAI OpenAI Platform
OPENAI_BASE_URL Пользовательский Base URL для OpenAI API OpenAI Platform

Ввод имени переменной среды

Шаг 3: Создание файла рабочего процесса

Теперь создайте YAML-файл, определяющий автоматизированный рабочий процесс.

  1. В корневой директории вашего репозитория создайте папку .github/workflows/, если она отсутствует.

  2. Внутри .github/workflows/ создайте файл с именем co-op-translator.yml.

  3. Вставьте следующий контент в co-op-translator.yml.

name: Co-op Translator

on:
  push:
    branches:
      - main

jobs:
  co-op-translator:
    runs-on: ubuntu-latest

    permissions:
      contents: write
      pull-requests: write

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'

      - name: Install Co-op Translator
        run: |
          python -m pip install --upgrade pip
          pip install co-op-translator

      - name: Run Co-op Translator
        env:
          PYTHONIOENCODING: utf-8
          # Azure AI Service Credentials
          AZURE_AI_SERVICE_API_KEY: $
          AZURE_AI_SERVICE_ENDPOINT: $

          # Azure OpenAI Credentials
          AZURE_OPENAI_API_KEY: $
          AZURE_OPENAI_ENDPOINT: $
          AZURE_OPENAI_MODEL_NAME: $
          AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: $
          AZURE_OPENAI_API_VERSION: $

          # OpenAI Credentials
          OPENAI_API_KEY: $
          OPENAI_ORG_ID: $
          OPENAI_CHAT_MODEL_ID: $
          OPENAI_BASE_URL: $
        run: |
          # =====================================================================
          # IMPORTANT: Set your target languages here (REQUIRED CONFIGURATION)
          # =====================================================================
          # Example: Translate to Spanish, French, German. Add -y to auto-confirm.
          translate -l "es fr de" -y  # <--- MODIFY THIS LINE with your desired languages

      - name: Authenticate GitHub App
        id: generate_token
        uses: tibdex/github-app-token@v1
        with:
          app_id: $
          private_key: $

      - name: Create Pull Request with translations
        uses: peter-evans/create-pull-request@v5
        with:
          token: $
          commit-message: "🌐 Update translations via Co-op Translator"
          title: "🌐 Update translations via Co-op Translator"
          body: |
            This PR updates translations for recent changes to the main branch.

            ### 📋 Changes included
            - Translated contents are available in the `translations/` directory
            - Translated images are available in the `translated_images/` directory

            ---
            🌐 Automatically generated by the [Co-op Translator](https://github.com/Azure/co-op-translator) GitHub Action.
          branch: update-translations
          base: main
          labels: translation, automated-pr
          delete-branch: true
          add-paths: |
            translations/
            translated_images/

  1. Настройте рабочий процесс:
    • [!IMPORTANT] Целевые языки: В шаге Run Co-op Translator ОБЯЗАТЕЛЬНО проверьте и измените список языковых кодов в команде translate -l "..." -y согласно требованиям вашего проекта. Пример списка (ar de es...) нужно заменить или скорректировать.
    • Триггер (on:): Сейчас триггер срабатывает при каждом push в main. Для больших репозиториев рекомендуется добавить фильтр paths: (см. пример в комментарии в YAML), чтобы запускать рабочий процесс только при изменении релевантных файлов (например, исходной документации), экономя минуты runner.
    • Детали PR: При необходимости настройте commit-message, title, body, имя ветки и labels в шаге Create Pull Request.

Управление учетными данными и их обновление

Запуск рабочего процесса

[!WARNING]
Ограничение времени выполнения GitHub-hosted runner:
GitHub-hosted runner, такие как ubuntu-latest, имеют максимальное ограничение времени выполнения — 6 часов.
Для больших репозиториев с документацией, если процесс перевода займет больше 6 часов, рабочий процесс будет автоматически завершен.
Чтобы избежать этого, рассмотрите варианты:

После того как файл co-op-translator.yml будет добавлен в вашу основную ветку (или ветку, указанную в триггере on:), рабочий процесс будет автоматически запускаться при каждом пуше в эту ветку (и при совпадении с фильтром paths, если он настроен).

Если переводы будут созданы или обновлены, действие автоматически создаст Pull Request с изменениями, готовыми к вашему рассмотрению и слиянию.


Отказ от ответственности: Этот документ был переведен с помощью сервиса автоматического перевода Co-op Translator. Несмотря на стремление к точности, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется использовать профессиональный человеческий перевод. Мы не несём ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования данного перевода.