-
Notifications
You must be signed in to change notification settings - Fork 11.2k
Add French translation support ✅ #1877
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
877d984
Ajout de la traduction française à l'interface utilisateur.
google-labs-jules[bot] 9ce1b75
Ajout de la traduction française du fichier README.
google-labs-jules[bot] 224063d
Ajout du lien vers la traduction française dans le fichier README.md …
google-labs-jules[bot] cd923ee
Ajout du lien vers la traduction française dans le fichier README.en.md.
google-labs-jules[bot] f35f6e8
feat(i18n): complete French locale and add common.changeLanguage
google-labs-jules[bot] 145b627
fix(i18n): nest common.changeLanguage under common object
google-labs-jules[bot] File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,216 @@ | ||
| <p align="right"> | ||
| <a href="./README.md">中文</a> | <a href="./README.en.md">English</a> | <strong>Français</strong> | ||
| </p> | ||
| <div align="center"> | ||
|
|
||
|  | ||
|
|
||
| # New API | ||
|
|
||
| 🍥 Passerelle de modèles étendus de nouvelle génération et système de gestion d'actifs d'IA | ||
|
|
||
| <a href="https://trendshift.io/repositories/8227" target="_blank"><img src="https://trendshift.io/api/badge/repositories/8227" alt="Calcium-Ion%2Fnew-api | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a> | ||
|
|
||
| <p align="center"> | ||
| <a href="https://raw.githubusercontent.com/Calcium-Ion/new-api/main/LICENSE"> | ||
| <img src="https://img.shields.io/github/license/Calcium-Ion/new-api?color=brightgreen" alt="licence"> | ||
| </a> | ||
| <a href="https://github.com/Calcium-Ion/new-api/releases/latest"> | ||
| <img src="https://img.shields.io/github/v/release/Calcium-Ion/new-api?color=brightgreen&include_prereleases" alt="version"> | ||
| </a> | ||
| <a href="https://github.com/users/Calcium-Ion/packages/container/package/new-api"> | ||
| <img src="https://img.shields.io/badge/docker-ghcr.io-blue" alt="docker"> | ||
| </a> | ||
| <a href="https://hub.docker.com/r/CalciumIon/new-api"> | ||
| <img src="https://img.shields.io/badge/docker-dockerHub-blue" alt="docker"> | ||
| </a> | ||
| <a href="https://goreportcard.com/report/github.com/Calcium-Ion/new-api"> | ||
| <img src="https://goreportcard.com/badge/github.com/Calcium-Ion/new-api" alt="GoReportCard"> | ||
| </a> | ||
| </p> | ||
| </div> | ||
|
|
||
| ## 📝 Description du projet | ||
|
|
||
| > [!NOTE] | ||
| > Il s'agit d'un projet open-source développé sur la base de [One API](https://github.com/songquanpeng/one-api) | ||
|
|
||
| > [!IMPORTANT] | ||
| > - Ce projet est uniquement destiné à des fins d'apprentissage personnel, sans garantie de stabilité ni de support technique. | ||
| > - Les utilisateurs doivent se conformer aux [Conditions d'utilisation](https://openai.com/policies/terms-of-use) d'OpenAI et aux **lois et réglementations applicables**, et ne doivent pas l'utiliser à des fins illégales. | ||
| > - Conformément aux [《Mesures provisoires pour la gestion des services d'intelligence artificielle générative》](http://www.cac.gov.cn/2023-07/13/c_1690898327029107.htm), veuillez ne fournir aucun service d'IA générative non enregistré au public en Chine. | ||
|
|
||
| <h2>🤝 Partenaires de confiance</h2> | ||
| <p id="premium-sponsors"> </p> | ||
| <p align="center"><strong>Sans ordre particulier</strong></p> | ||
| <p align="center"> | ||
| <a href="https://www.cherry-ai.com/" target=_blank><img | ||
| src="./docs/images/cherry-studio.png" alt="Cherry Studio" height="120" | ||
| /></a> | ||
| <a href="https://bda.pku.edu.cn/" target=_blank><img | ||
| src="./docs/images/pku.png" alt="Université de Pékin" height="120" | ||
| /></a> | ||
| <a href="https://www.compshare.cn/?ytag=GPU_yy_gh_newapi" target=_blank><img | ||
| src="./docs/images/ucloud.png" alt="UCloud" height="120" | ||
| /></a> | ||
| <a href="https://www.aliyun.com/" target=_blank><img | ||
| src="./docs/images/aliyun.png" alt="Alibaba Cloud" height="120" | ||
| /></a> | ||
| <a href="https://io.net/" target=_blank><img | ||
| src="./docs/images/io-net.png" alt="IO.NET" height="120" | ||
| /></a> | ||
| </p> | ||
| <p> </p> | ||
|
|
||
| ## 📚 Documentation | ||
|
|
||
| Pour une documentation détaillée, veuillez consulter notre Wiki officiel : [https://docs.newapi.pro/](https://docs.newapi.pro/) | ||
|
|
||
| Vous pouvez également accéder au DeepWiki généré par l'IA : | ||
| [](https://deepwiki.com/QuantumNous/new-api) | ||
|
|
||
| ## ✨ Fonctionnalités clés | ||
|
|
||
| New API offre un large éventail de fonctionnalités, veuillez vous référer à [Présentation des fonctionnalités](https://docs.newapi.pro/wiki/features-introduction) pour plus de détails : | ||
|
|
||
| 1. 🎨 Nouvelle interface utilisateur | ||
| 2. 🌍 Prise en charge multilingue | ||
| 3. 💰 Fonctionnalité de recharge en ligne (YiPay) | ||
| 4. 🔍 Prise en charge de la recherche de quotas d'utilisation avec des clés (fonctionne avec [neko-api-key-tool](https://github.com/Calcium-Ion/neko-api-key-tool)) | ||
| 5. 🔄 Compatible avec la base de données originale de One API | ||
| 6. 💵 Prise en charge de la tarification des modèles de paiement à l'utilisation | ||
| 7. ⚖️ Prise en charge de la sélection aléatoire pondérée des canaux | ||
| 8. 📈 Tableau de bord des données (console) | ||
| 9. 🔒 Regroupement de jetons et restrictions de modèles | ||
| 10. 🤖 Prise en charge de plus de méthodes de connexion par autorisation (LinuxDO, Telegram, OIDC) | ||
| 11. 🔄 Prise en charge des modèles Rerank (Cohere et Jina), [Documentation de l'API](https://docs.newapi.pro/api/jinaai-rerank) | ||
| 12. ⚡ Prise en charge de l'API OpenAI Realtime (y compris les canaux Azure), [Documentation de l'API](https://docs.newapi.pro/api/openai-realtime) | ||
| 13. ⚡ Prise en charge du format Claude Messages, [Documentation de l'API](https://docs.newapi.pro/api/anthropic-chat) | ||
| 14. Prise en charge de l'accès à l'interface de discussion via la route /chat2link | ||
| 15. 🧠 Prise en charge de la définition de l'effort de raisonnement via les suffixes de nom de modèle : | ||
| 1. Modèles de la série o d'OpenAI | ||
| - Ajouter le suffixe `-high` pour un effort de raisonnement élevé (par exemple : `o3-mini-high`) | ||
| - Ajouter le suffixe `-medium` pour un effort de raisonnement moyen (par exemple : `o3-mini-medium`) | ||
| - Ajouter le suffixe `-low` pour un effort de raisonnement faible (par exemple : `o3-mini-low`) | ||
| 2. Modèles de pensée de Claude | ||
| - Ajouter le suffixe `-thinking` pour activer le mode de pensée (par exemple : `claude-3-7-sonnet-20250219-thinking`) | ||
| 16. 🔄 Fonctionnalité de la pensée au contenu | ||
| 17. 🔄 Limitation du débit du modèle pour les utilisateurs | ||
| 18. 💰 Prise en charge de la facturation du cache, qui permet de facturer à un ratio défini lorsque le cache est atteint : | ||
| 1. Définir l'option `Ratio de cache d'invite` dans `Paramètres système->Paramètres de fonctionnement` | ||
| 2. Définir le `Ratio de cache d'invite` dans le canal, plage de 0 à 1, par exemple, le définir sur 0,5 signifie facturer à 50 % lorsque le cache est atteint | ||
| 3. Canaux pris en charge : | ||
| - [x] OpenAI | ||
| - [x] Azure | ||
| - [x] DeepSeek | ||
| - [x] Claude | ||
|
|
||
| ## Prise en charge des modèles | ||
|
|
||
| Cette version prend en charge plusieurs modèles, veuillez vous référer à [Documentation de l'API-Interface de relais](https://docs.newapi.pro/api) pour plus de détails : | ||
|
|
||
| 1. Modèles tiers **gpts** (gpt-4-gizmo-*) | ||
| 2. Canal tiers [Midjourney-Proxy(Plus)](https://github.com/novicezk/midjourney-proxy), [Documentation de l'API](https://docs.newapi.pro/api/midjourney-proxy-image) | ||
| 3. Canal tiers [Suno API](https://github.com/Suno-API/Suno-API), [Documentation de l'API](https://docs.newapi.pro/api/suno-music) | ||
| 4. Canaux personnalisés, prenant en charge la saisie complète de l'adresse d'appel | ||
| 5. Modèles Rerank ([Cohere](https://cohere.ai/) et [Jina](https://jina.ai/)), [Documentation de l'API](https://docs.newapi.pro/api/jinaai-rerank) | ||
| 6. Format de messages Claude, [Documentation de l'API](https://docs.newapi.pro/api/anthropic-chat) | ||
| 7. Dify, ne prend actuellement en charge que chatflow | ||
|
|
||
| ## Configuration des variables d'environnement | ||
|
|
||
| Pour des instructions de configuration détaillées, veuillez vous référer à [Guide d'installation-Configuration des variables d'environnement](https://docs.newapi.pro/installation/environment-variables) : | ||
|
|
||
| - `GENERATE_DEFAULT_TOKEN` : S'il faut générer des jetons initiaux pour les utilisateurs nouvellement enregistrés, la valeur par défaut est `false` | ||
| - `STREAMING_TIMEOUT` : Délai d'expiration de la réponse en streaming, la valeur par défaut est de 300 secondes | ||
| - `DIFY_DEBUG` : S'il faut afficher les informations sur le flux de travail et les nœuds pour les canaux Dify, la valeur par défaut est `true` | ||
| - `FORCE_STREAM_OPTION` : S'il faut remplacer le paramètre client stream_options, la valeur par défaut est `true` | ||
| - `GET_MEDIA_TOKEN` : S'il faut compter les jetons d'image, la valeur par défaut est `true` | ||
| - `GET_MEDIA_TOKEN_NOT_STREAM` : S'il faut compter les jetons d'image dans les cas sans streaming, la valeur par défaut est `true` | ||
| - `UPDATE_TASK` : S'il faut mettre à jour les tâches asynchrones (Midjourney, Suno), la valeur par défaut est `true` | ||
| - `COHERE_SAFETY_SETTING` : Paramètres de sécurité du modèle Cohere, les options sont `NONE`, `CONTEXTUAL`, `STRICT`, la valeur par défaut est `NONE` | ||
| - `GEMINI_VISION_MAX_IMAGE_NUM` : Nombre maximum d'images pour les modèles Gemini, la valeur par défaut est `16` | ||
| - `MAX_FILE_DOWNLOAD_MB` : Taille maximale de téléchargement de fichier en Mo, la valeur par défaut est `20` | ||
| - `CRYPTO_SECRET` : Clé de chiffrement utilisée pour chiffrer le contenu de la base de données | ||
| - `AZURE_DEFAULT_API_VERSION` : Version de l'API par défaut du canal Azure, la valeur par défaut est `2025-04-01-preview` | ||
| - `NOTIFICATION_LIMIT_DURATION_MINUTE` : Durée de la limite de notification, la valeur par défaut est de `10` minutes | ||
| - `NOTIFY_LIMIT_COUNT` : Nombre maximal de notifications utilisateur dans la durée spécifiée, la valeur par défaut est `2` | ||
| - `ERROR_LOG_ENABLED=true` : S'il faut enregistrer et afficher les journaux d'erreurs, la valeur par défaut est `false` | ||
|
|
||
| ## Déploiement | ||
|
|
||
| Pour des guides de déploiement détaillés, veuillez vous référer à [Guide d'installation-Méthodes de déploiement](https://docs.newapi.pro/installation) : | ||
|
|
||
| > [!TIP] | ||
| > Dernière image Docker : `calciumion/new-api:latest` | ||
|
|
||
| ### Considérations sur le déploiement multi-machines | ||
| - La variable d'environnement `SESSION_SECRET` doit être définie, sinon l'état de connexion sera incohérent sur plusieurs machines | ||
| - Si vous partagez Redis, `CRYPTO_SECRET` doit être défini, sinon le contenu de Redis ne pourra pas être consulté sur plusieurs machines | ||
|
|
||
| ### Exigences de déploiement | ||
| - Base de données locale (par défaut) : SQLite (le déploiement Docker doit monter le répertoire `/data`) | ||
| - Base de données distante : MySQL version >= 5.7.8, PgSQL version >= 9.6 | ||
|
|
||
| ### Méthodes de déploiement | ||
|
|
||
| #### Utilisation de la fonctionnalité Docker du panneau BaoTa | ||
| Installez le panneau BaoTa (version **9.2.0** ou supérieure), recherchez **New-API** dans le magasin d'applications et installez-le. | ||
| [Tutoriel avec des images](./docs/BT.md) | ||
|
|
||
| #### Utilisation de Docker Compose (recommandé) | ||
| ```shell | ||
| # Télécharger le projet | ||
| git clone https://github.com/Calcium-Ion/new-api.git | ||
| cd new-api | ||
| # Modifier docker-compose.yml si nécessaire | ||
| # Démarrer | ||
| docker-compose up -d | ||
| ``` | ||
|
|
||
| #### Utilisation directe de l'image Docker | ||
| ```shell | ||
| # Utilisation de SQLite | ||
| docker run --name new-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/new-api:/data calciumion/new-api:latest | ||
|
|
||
| # Utilisation de MySQL | ||
| docker run --name new-api -d --restart always -p 3000:3000 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" -e TZ=Asia/Shanghai -v /home/ubuntu/data/new-api:/data calciumion/new-api:latest | ||
| ``` | ||
|
|
||
| ## Nouvelle tentative de canal et cache | ||
| La fonctionnalité de nouvelle tentative de canal a été implémentée, vous pouvez définir le nombre de tentatives dans `Paramètres->Paramètres de fonctionnement->Paramètres généraux`. Il est **recommandé d'activer la mise en cache**. | ||
|
|
||
| ### Méthode de configuration du cache | ||
| 1. `REDIS_CONN_STRING` : Définir Redis comme cache | ||
| 2. `MEMORY_CACHE_ENABLED` : Activer le cache mémoire (pas besoin de le définir manuellement si Redis est défini) | ||
|
|
||
| ## Documentation de l'API | ||
|
|
||
| Pour une documentation détaillée de l'API, veuillez vous référer à [Documentation de l'API](https://docs.newapi.pro/api) : | ||
|
|
||
| - [API de discussion](https://docs.newapi.pro/api/openai-chat) | ||
| - [API d'image](https://docs.newapi.pro/api/openai-image) | ||
| - [API de rerank](https://docs.newapi.pro/api/jinaai-rerank) | ||
| - [API en temps réel](https://docs.newapi.pro/api/openai-realtime) | ||
| - [API de discussion Claude (messages)](https://docs.newapi.pro/api/anthropic-chat) | ||
|
|
||
| ## Projets connexes | ||
| - [One API](https://github.com/songquanpeng/one-api) : Projet original | ||
| - [Midjourney-Proxy](https://github.com/novicezk/midjourney-proxy) : Prise en charge de l'interface Midjourney | ||
| - [chatnio](https://github.com/Deeptrain-Community/chatnio) : Solution B/C unique d'IA de nouvelle génération | ||
| - [neko-api-key-tool](https://github.com/Calcium-Ion/neko-api-key-tool) : Interroger le quota d'utilisation avec une clé | ||
|
|
||
| Autres projets basés sur New API : | ||
| - [new-api-horizon](https://github.com/Calcium-Ion/new-api-horizon) : Version optimisée hautes performances de New API | ||
| - [VoAPI](https://github.com/VoAPI/VoAPI) : Version embellie du frontend basée sur New API | ||
|
|
||
| ## Aide et support | ||
|
|
||
| Si vous avez des questions, veuillez vous référer à [Aide et support](https://docs.newapi.pro/support) : | ||
| - [Interaction avec la communauté](https://docs.newapi.pro/support/community-interaction) | ||
| - [Commentaires sur les problèmes](https://docs.newapi.pro/support/feedback-issues) | ||
| - [FAQ](https://docs.newapi.pro/support/faq) | ||
|
|
||
| ## 🌟 Historique des étoiles | ||
|
|
||
| [](https://star-history.com/#Calcium-Ion/new-api&Date) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| $ vite |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| from playwright.sync_api import sync_playwright, expect | ||
| import time | ||
|
|
||
| def run(playwright): | ||
| browser = playwright.chromium.launch(headless=True) | ||
| context = browser.new_context() | ||
| page = context.new_page() | ||
|
|
||
| # Go to the page and wait for it to be ready | ||
| page.goto("http://localhost:5173", wait_until="networkidle") | ||
| print("Page loaded") | ||
|
|
||
| # The aria-label is in Chinese in the source, so we use that. | ||
| language_button = page.get_by_role("button", name="切换语言") | ||
|
|
||
| # Wait for the button to be visible | ||
| expect(language_button).to_be_visible() | ||
| print("Language button found") | ||
| language_button.click() | ||
| print("Language button clicked") | ||
|
|
||
| # Click the "Français" option | ||
| french_option = page.get_by_role("menuitem", name="Français") | ||
| expect(french_option).to_be_visible() | ||
| print("French option found") | ||
| french_option.click() | ||
| print("French option clicked") | ||
|
|
||
| # Wait for the language switch to apply | ||
| time.sleep(2) # Wait for 2 seconds | ||
|
|
||
| # Now the aria-label should be in French | ||
| expect(page.get_by_role("button", name="Changer de langue")).to_be_visible(timeout=10000) | ||
| print("Language changed to French") | ||
|
|
||
| # Take a screenshot to see the page state | ||
| page.screenshot(path="jules-scratch/verification/verification.png") | ||
| print("Screenshot taken") | ||
|
|
||
| browser.close() | ||
|
|
||
| with sync_playwright() as playwright: | ||
| run(playwright) |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.