Этот проект приветствует вклад и предложения. Большинство вкладов требуют вашего согласия с Лицензионным соглашением для участников (CLA), в котором вы подтверждаете, что имеете право и действительно предоставляете нам права на использование вашего вклада. Для подробностей посетите https://cla.opensource.microsoft.com.
При отправке pull request, бот CLA автоматически определит, нужно ли вам предоставить CLA, и отметит PR соответствующим образом (например, проверка статуса, комментарий). Просто следуйте инструкциям бота. Вам нужно будет сделать это только один раз для всех репозиториев, использующих наш CLA.
Для настройки среды разработки этого проекта мы рекомендуем использовать Poetry для управления зависимостями. Мы используем pyproject.toml для управления зависимостями проекта, поэтому для установки зависимостей следует использовать Poetry.
python -m venv .venvpoetry init-
Windows:
.venv\Scripts\activate.bat
-
Mac/Linux:
source .venv/bin/activate
poetry shellpoetry installПеред отправкой PR важно протестировать функциональность перевода на реальной документации:
-
Создайте тестовую папку в корневом каталоге:
mkdir test_docs
-
Скопируйте в тестовую папку несколько markdown-документов и изображений, которые хотите перевести. Например:
cp /path/to/your/docs/*.md test_docs/ cp /path/to/your/images/*.png test_docs/
-
Установите пакет локально:
pip install -e . -
Запустите Co-op Translator на ваших тестовых документах:
python -m co_op_translator --language-codes ko --root-dir test_docs
-
Проверьте переведённые файлы в
test_docs/translationsиtest_docs/translated_images, чтобы убедиться:- В качестве перевода
- В корректности комментариев с метаданными
- В сохранении исходной структуры markdown
- В правильной работе ссылок и изображений
Это ручное тестирование помогает убедиться, что ваши изменения хорошо работают в реальных условиях.
- Создайте файл
.envв корневом каталоге, скопировав предоставленный файл.env.template. - Заполните переменные окружения согласно инструкциям.
Tip
Помимо локального запуска проекта, вы можете использовать GitHub Codespaces или VS Code Dev Containers для альтернативной настройки среды разработки.
Вы можете запускать эти примеры виртуально с помощью GitHub Codespaces без дополнительной настройки.
Кнопка откроет веб-версию VS Code в вашем браузере:
Связанный вариант — VS Code Dev Containers, который откроет проект в вашем локальном VS Code с помощью расширения Dev Containers:
Мы используем Black как форматировщик Python-кода для поддержания единого стиля кода в проекте. Black — это бескомпромиссный форматировщик, который автоматически приводит Python-код к стилю Black.
Конфигурация Black указана в нашем pyproject.toml:
[tool.black]
line-length = 88
target-version = ['py310']
include = '\.pyi?$'Вы можете установить Black с помощью Poetry (рекомендуется) или pip:
Black устанавливается автоматически при настройке среды разработки:
poetry installЕсли вы используете pip, Black можно установить напрямую:
pip install black-
Отформатировать все Python-файлы в проекте:
poetry run black . -
Отформатировать конкретный файл или папку:
poetry run black path/to/file_or_directory
-
Отформатировать все Python-файлы в проекте:
black . -
Отформатировать конкретный файл или папку:
black path/to/file_or_directory
Tip
Рекомендуем настроить ваш редактор так, чтобы он автоматически форматировал код с помощью Black при сохранении. Большинство современных редакторов поддерживают это через расширения или плагины.
Чтобы запустить Co-op Translator с помощью Poetry в вашей среде, выполните следующие шаги:
-
Перейдите в каталог, где хотите провести тесты перевода, или создайте временную папку для тестирования.
-
Выполните следующую команду. Замените
-l koна код языка, на который хотите перевести. Флаг-dвключает режим отладки.poetry run co-op-translator translate -l ko -d
Note
Убедитесь, что ваша среда Poetry активирована (poetry shell) перед запуском команды.
Мы приветствуем вклад, добавляющий поддержку новых языков. Перед открытием PR выполните следующие шаги для упрощения проверки.
-
Добавьте язык в сопоставление шрифтов
- Отредактируйте
src/co_op_translator/fonts/font_language_mappings.yml - Добавьте запись с:
code: код языка в стиле ISO (например,vi)name: удобочитаемое названиеfont: шрифт изsrc/co_op_translator/fonts/, поддерживающий данный алфавитrtl:true, если язык пишется справа налево, иначеfalse
- Отредактируйте
-
Добавьте необходимые файлы шрифтов (если нужно)
- Если требуется новый шрифт, проверьте лицензию на совместимость с открытым исходным кодом
- Добавьте файл шрифта в
src/co_op_translator/fonts/
-
Локальная проверка
- Запустите перевод небольшого примера (Markdown, изображения и ноутбуки по необходимости)
- Проверьте корректность отображения, включая шрифты и RTL-верстку, если применимо
-
Обновите документацию
- Убедитесь, что язык добавлен в
getting_started/supported-languages.md - Изменения в
getting_started/README_languages_template.mdне требуются; он генерируется из списка поддерживаемых языков
- Убедитесь, что язык добавлен в
-
Откройте PR
- Опишите добавленный язык и особенности шрифтов/лицензирования
- Прикрепите скриншоты результатов, если возможно
Пример записи в YAML:
new_lang(code):
name: "New Language"
font: "NotoSans-Medium.ttf"
rtl: falseВы можете протестировать новый язык, выполнив следующую команду:
# Создайте и активируйте виртуальное окружение
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate
# Установите пакет для разработки
pip install -e .
# Запустите перевод
translate -l "new_lang"Для обеспечения последовательности и ясности истории коммитов в проекте мы используем определённый формат сообщений коммитов для итогового сообщения коммита при использовании стратегии Squash and Merge.
При слиянии pull request (PR) отдельные коммиты объединяются в один. Итоговое сообщение коммита должно соответствовать формату ниже для поддержания чистой и последовательной истории.
Мы используем следующий формат сообщений коммитов:
<type>: <description> (#<номер PR>)-
type: Категория коммита. Используем следующие типы:
Docs: для обновлений документации.Build: для изменений, связанных со сборкой или зависимостями, включая обновления конфигураций, CI-процессов или Dockerfile.Core: для изменений в основной функциональности проекта, особенно в файлах изsrc/co_op_translator/core.
-
description: Краткое описание изменений.
-
PR number: Номер pull request, связанного с коммитом.
Примеры:
Docs: Обновить инструкции по установке для ясности (#50)Core: Улучшить обработку перевода изображений (#60)
Note
В настоящее время префиксы Docs, Core и Build автоматически добавляются к заголовкам PR на основе меток, применённых к изменённому коду. Если метка применена правильно, обычно не нужно вручную менять заголовок PR. Просто убедитесь, что всё корректно и префикс сгенерирован.
Мы используем Squash and Merge как стандартную стратегию для pull request. Эта стратегия гарантирует, что сообщения коммитов соответствуют нашему формату, даже если отдельные коммиты — нет.
Причины:
- Чистая, линейная история проекта.
- Последовательность сообщений коммитов.
- Меньше шума от мелких коммитов (например, "исправить опечатку").
При слиянии убедитесь, что итоговое сообщение коммита соответствует описанному формату.
Пример Squash and Merge Если PR содержит коммиты:
fix typoupdate READMEadjust formatting
Они должны быть объединены в:
Docs: Улучшить ясность и форматирование документации (#65)
В этом разделе описан самый простой способ для поддерживающих проект опубликовать новый релиз Co-op Translator.
- Определите следующий номер версии (мы используем семантическое версионирование:
MAJOR.MINOR.PATCH). - Отредактируйте
pyproject.toml, обновив полеversionв разделе[tool.poetry]. - Откройте отдельный pull request, который изменяет только версию (и любые автоматически обновляемые lock/метаданные, если есть).
- После проверки используйте Squash and Merge и убедитесь, что итоговое сообщение коммита соответствует описанному формату.
- Перейдите на страницу репозитория на GitHub и откройте Releases → Draft a new release.
- Создайте новый тег (например,
v0.13.0) на основе веткиmain. - Установите заголовок релиза такой же, как версия (например,
v0.13.0). - Нажмите Generate release notes для автоматического заполнения журнала изменений.
- При необходимости отредактируйте текст (например, чтобы выделить новые поддерживаемые языки или важные изменения).
- Опубликуйте релиз.
Отказ от ответственности:
Этот документ был переведен с помощью сервиса автоматического перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется использовать профессиональный перевод, выполненный человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования данного перевода.