# Contribuindo para o Projeto

> [!CAUTION]
>
> Os mantenedores atuais do projeto estão pesquisando a internacionalização automatizada da documentação. Portanto, qualquer PR relacionado à internacionalização/tradução da documentação NÃO será aceito!
>
> Por favor, NÃO envie PRs relacionados à internacionalização/tradução da documentação!

Obrigado pelo seu interesse neste projeto! Antes de começar a contribuir, por favor, reserve um tempo para ler as seguintes diretrizes para garantir que sua contribuição possa ser aceita sem problemas.

## Tipos de Contribuições Não Aceitas

1. Internacionalização/tradução da documentação
2. Contribuições relacionadas à infraestrutura principal, como API HTTP, etc.
3. Problemas explicitamente marcados como "No help needed" (incluindo problemas no repositório [Byaidu/PDFMathTranslate](https://github.com/Byaidu/PDFMathTranslate/issues)).
4. Outras contribuições consideradas inadequadas pelos mantenedores.

Por favor, NÃO envie PRs relacionados aos tipos acima.

## Processo de Contribuição

1. Faça um fork deste repositório e clone-o localmente.
2. Crie um novo branch: `git checkout -b feature/<feature-name>`.
3. Desenvolva e certifique-se de que seu código atenda aos requisitos.
4. Faça commit do seu código:
   ```bash
   git add .
   git commit -m "<semantic commit message>"
   ```

5. Envie para o seu repositório: `git push origin feature/<feature-name>`.
6. Crie um PR no GitHub, forneça uma descrição detalhada e solicite uma revisão de [@awwaawwa](https://github.com/awwaawwa).
7. Certifique-se de que todas as verificações automatizadas sejam aprovadas.

> [!TIP]
>
> Você não precisa esperar até que seu desenvolvimento esteja totalmente concluído para criar um PR. Criar um PR antecipadamente nos permite revisar sua implementação e fornecer sugestões.
>
> Se você tiver alguma dúvida sobre o código-fonte ou assuntos relacionados, entre em contato com o mantenedor em aw@funstory.ai.
>
> Os arquivos de recursos para a versão 2.0 são compartilhados com [BabelDOC](https://github.com/funstory-ai/BabelDOC). O código para baixar os recursos relacionados está no BabelDOC. Se você deseja adicionar novos arquivos de recursos, entre em contato com o mantenedor do BabelDOC em aw@funstory.ai.

## Requisitos básicos

<h4 id="sop">1. Fluxo de trabalho</h4>

- Por favor, faça um fork do branch `main` e desenvolva no seu branch bifurcado.
   - Ao enviar um Pull Request (PR), forneça uma descrição detalhada das suas alterações.
   - Se o seu PR não passar nas verificações automatizadas (indicado por `checks failed` e um cruz vermelha), revise os `details` correspondentes e modifique sua submissão para garantir que o novo PR passe em todas as verificações.


<h4 id="dev&test">2. Desenvolvimento e Testes</h4>

- Use o comando `pip install -e .` para desenvolvimento e teste.


<h4 id="format">3. Formatação de código</h4>

- Configure a ferramenta `pre-commit` e habilite `black` e `flake8` para formatação de código.


<h4 id="atualizacaodependencias">4. Atualização de Dependências</h4>

- Se você introduzir novas dependências, atualize a lista de dependências no arquivo `pyproject.toml` em tempo hábil.

<h4 id="atualizacaodoc">5. Atualizações da Documentação</h4>

- Se você adicionar novas opções de linha de comando, atualize a lista de opções de linha de comando em todas as versões de idioma do arquivo `README.md` de acordo.

<h4 id="commitmsg">6. Mensagens de Commit</h4>

- Use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/), por exemplo: `feat(translator): add openai`.


<h4 id="estilocodigo">7. Estilo de Codificação</h4>

- Certifique-se de que o código enviado adere aos padrões básicos de estilo de codificação.
   - Use snake_case ou camelCase para nomear variáveis.

<h4 id="doctypo">8. Formatação da documentação</h4>

- Para a formatação de `README.md`, siga as [Diretrizes de Redação em Chinês](https://github.com/sparanoid/chinese-copywriting-guidelines).
   - Certifique-se de que a documentação em inglês e chinês esteja sempre atualizada; as atualizações de documentação em outros idiomas são opcionais.

## Adicionando um mecanismo de tradução

1. Adicione uma nova classe de configuração do tradutor no arquivo `pdf2zh/config/translate_engine_model.py`.
2. Adicione uma instância da nova classe de configuração do tradutor ao alias de tipo `TRANSLATION_ENGINE_SETTING_TYPE` no mesmo arquivo.
3. Adicione a nova classe de implementação do tradutor na pasta `pdf2zh/translator/translator_impl`.

> [!NOTE]
>
> Este projeto não pretende suportar nenhum mecanismo de tradução com um RPS (solicitações por segundo) inferior a 4. Por favor, não envie suporte para tais mecanismos.

## Estrutura do projeto

- **pasta config**: Sistema de configuração.
- **pasta translator**: Implementações relacionadas ao tradutor.
- **gui.py**: Fornece a interface gráfica.
- **const.py**: Algumas constantes.
- **main.py**: Fornece a ferramenta de linha de comando.
- **high_level.py**: Interfaces de alto nível baseadas no BabelDOC.
- **http_api.py**: Fornece API HTTP (não iniciada).

## Contate-nos

Se você tiver alguma dúvida, envie um feedback via Issue ou entre no nosso Grupo do Telegram. Obrigado pela sua contribuição!

> [!TIP]
>
> [Immersive Translate](https://immersivetranslate.com) patrocina mensalmente códigos de assinatura Pro para colaboradores ativos deste projeto. Para mais detalhes, consulte: [BabelDOC/PDFMathTranslate Regras de Recompensa para Colaboradores](https://funstory-ai.github.io/BabelDOC/CONTRIBUTOR_REWARD/)

<div align="right"> 
<h6><small>Parte do conteúdo desta página foi traduzida pelo GPT e pode conter erros.</small></h6>