# Contribuer au projet

> [!CAUTION]
>
> Les mainteneurs actuels du projet recherchent une internationalisation automatisée de la documentation. Par conséquent, toute PR liée à l'internationalisation/traduction de la documentation ne sera PAS acceptée !
>
> Veuillez ne PAS soumettre de PR liées à l'internationalisation/traduction de la documentation !

Merci de votre intérêt pour ce projet ! Avant de commencer à contribuer, veuillez prendre le temps de lire les directives suivantes pour vous assurer que votre contribution puisse être acceptée sans problème.

## Types de contributions non acceptées

1. Internationalisation/traduction de la documentation  
2. Contributions liées à l'infrastructure de base, telles que l'API HTTP, etc.  
3. Problèmes explicitement marqués comme "Aide non nécessaire" (y compris les problèmes dans le dépôt [Byaidu/PDFMathTranslate](https://github.com/Byaidu/PDFMathTranslate/issues)).  
4. Autres contributions jugées inappropriées par les mainteneurs.  

Veuillez ne PAS soumettre de PR liés aux types ci-dessus.

## Processus de contribution

1. Forkez ce dépôt et clonez-le localement.
2. Créez une nouvelle branche : `git checkout -b feature/<feature-name>`.
3. Développez et assurez-vous que votre code répond aux exigences.
4. Validez votre code :
   ```bash
   git add .
   git commit -m "<semantic commit message>"
   ```

5. Poussez vers votre dépôt : `git push origin feature/<feature-name>`.
6. Créez une PR sur GitHub, fournissez une description détaillée et demandez une revue à [@awwaawwa](https://github.com/awwaawwa).
7. Assurez-vous que toutes les vérifications automatisées passent.

> [!TIP]
>
> Vous n'avez pas besoin d'attendre que votre développement soit entièrement terminé pour créer une PR. En créer une tôt nous permet d'examiner votre implémentation et de fournir des suggestions.
>
> Si vous avez des questions sur le code source ou des sujets connexes, veuillez contacter le mainteneur à aw@funstory.ai.
>
> Les fichiers de ressources pour la version 2.0 sont partagés avec [BabelDOC](https://github.com/funstory-ai/BabelDOC). Le code pour télécharger les ressources associées se trouve dans BabelDOC. Si vous souhaitez ajouter de nouveaux fichiers de ressources, veuillez contacter le mainteneur de BabelDOC à aw@funstory.ai.

## Exigences de base

<h4 id="sop">1. Flux de travail</h4>

- Veuillez forker à partir de la branche `main` et développer sur votre branche forkée.
   - Lors de la soumission d'une Pull Request (PR), fournissez une description détaillée de vos modifications.
   - Si votre PR ne passe pas les vérifications automatiques (indiquées par `checks failed` et une croix rouge), veuillez examiner les `details` correspondants et modifier votre soumission pour vous assurer que la nouvelle PR passe toutes les vérifications.


<h4 id="dev&test">2. Développement et Tests</h4>

- Utilisez la commande `pip install -e .` pour le développement et les tests.


<h4 id="format">3. Formatage du code</h4>

- Configurez l'outil `pre-commit` et activez `black` et `flake8` pour le formatage du code.


<h4 id="majdep">4. Mises à jour des dépendances</h4>

- Si vous introduisez de nouvelles dépendances, veuillez mettre à jour la liste des dépendances dans le fichier `pyproject.toml` en temps opportun.

<h4 id="docupdate">5. Mises à jour de la documentation</h4>

- Si vous ajoutez de nouvelles options de ligne de commande, veuillez mettre à jour la liste des options de ligne de commande dans toutes les versions linguistiques du fichier `README.md` en conséquence.


<h4 id="commitmsg">6. Messages de commit</h4>

- Utilisez [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/), par exemple : `feat(translator): add openai`.


<h4 id="codestyle">7. Style de codage</h4>

- Assurez-vous que le code soumis respecte les normes de base de style de codage.
   - Utilisez soit snake_case ou camelCase pour la dénomination des variables.


<h4 id="doctypo">8. Formatage de la documentation</h4>

- Pour le formatage de `README.md`, veuillez suivre les [Directives de rédaction en chinois](https://github.com/sparanoid/chinese-copywriting-guidelines).
   - Assurez-vous que la documentation en anglais et en chinois est toujours à jour ; les mises à jour de la documentation dans d'autres langues sont facultatives.

## Ajout d'un moteur de traduction

1. Ajoutez une nouvelle classe de configuration de traducteur dans le fichier `pdf2zh/config/translate_engine_model.py`.
2. Ajoutez une instance de la nouvelle classe de configuration de traducteur à l'alias de type `TRANSLATION_ENGINE_SETTING_TYPE` dans le même fichier.
3. Ajoutez la nouvelle classe d'implémentation du traducteur dans le dossier `pdf2zh/translator/translator_impl`.

> [!NOTE]
>
> Ce projet n'a pas pour objectif de prendre en charge les moteurs de traduction avec un RPS (requêtes par seconde) inférieur à 4. Veuillez ne pas soumettre de demande de support pour ces moteurs.

## Structure du projet

- **dossier config** : Système de configuration.
- **dossier translator** : Implémentations liées au traducteur.
- **gui.py** : Fournit l'interface graphique.
- **const.py** : Quelques constantes.
- **main.py** : Fournit l'outil en ligne de commande.
- **high_level.py** : Interfaces de haut niveau basées sur BabelDOC.
- **http_api.py** : Fournit une API HTTP (non démarrée).

## Nous contacter

Si vous avez des questions, veuillez soumettre vos commentaires via Issue ou rejoindre notre groupe Telegram. Merci pour votre contribution !

> [!TIP]
>
> [Immersive Translate](https://immersivetranslate.com) sponsorise des codes d'abonnement Pro mensuels pour les contributeurs actifs à ce projet. Pour plus de détails, veuillez consulter : [Règles de récompense des contributeurs BabelDOC/PDFMathTranslate](https://funstory-ai.github.io/BabelDOC/CONTRIBUTOR_REWARD/)

<div align="right"> 
<h6><small>Une partie du contenu de cette page a été traduite par GPT et peut contenir des erreurs.</small></h6>