From cccea253c5947a1e87c232208165c79402474e0e Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 28 Oct 2025 14:20:37 +0800 Subject: [PATCH 01/12] Update ResUI.fr.resx --- v2rayN/ServiceLib/Resx/ResUI.fr.resx | 38 ++++++++++++++-------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/v2rayN/ServiceLib/Resx/ResUI.fr.resx b/v2rayN/ServiceLib/Resx/ResUI.fr.resx index 2222d8c4..88c44db5 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.fr.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.fr.resx @@ -472,7 +472,7 @@ Langue (redémarrage requis) - Importer des liens depuis le presse-papiers (Ctrl+V) + Importer liens depuis le presse-papiers (Ctrl+V) Scanner le QR code à l’écran (Ctrl+S) @@ -619,7 +619,7 @@ Sécurité couche transport (TLS) - *tcp par défaut ; un mauvais choix empêchera la connexion + *tcp par défaut ; un mauvais choix bloque la connexion Type de Core @@ -652,7 +652,7 @@ Port Socks - *Valeur du port Socks pour la configuration personnalisée (facultatif). Si défini, Xray/sing-box (Tun) démarrera un service Socks en amont supplémentaire pour fournir le routage sélectif et l’affichage de la vitesse. + *Valeur du port Socks (config perso, optionnelle). Si défini, Xray/sing-box (Tun) démarre un service Socks en amont supplémentaire pour fournir le routage sélectif et l’affichage de la vitesse. Parcourir @@ -670,7 +670,7 @@ Masquer la fenêtre au démarrage - Intervalle de mise à jour automatique des fichiers Geo (heures) + Intervalle de mise à jour auto des fichiers Geo (heures) Core : paramètres de base @@ -691,7 +691,7 @@ domainStrategy de Freedom (sortant) - Auto-ajuster la largeur des colonnes après maj. des abonnements + Auto-ajuster la largeur des colonnes après maj. abonnements Vérifier les mises à jour pré-version (à activer avec prudence) @@ -724,7 +724,7 @@ Mot de passe d’authentification - DNS personnalisés (plusieurs possibles, séparés par des virgules) + DNS perso (plusieurs configurables, séparés par virgules) Lever la restriction de proxy en boucle locale pour les applications Win10 UWP @@ -865,7 +865,7 @@ Documentation détaillée des règles - Saisie de DnsObject prise en charge (format JSON), cliquer pour voir la documentation + Saisie DnsObject prise en charge (format JSON), cliquer pour doc Laissez vide pour les groupes ordinaires @@ -898,7 +898,7 @@ Filtrage par alias (regex) - Afficher les journaux + Afficher les logs Activer Tun @@ -979,7 +979,7 @@ En attente du test (appuyer sur Échap pour arrêter)... - Désactivez ceci en cas de coupures anormales + Désactiver cette option si coupure anormale Mise à jour désactivée, abonnement ignoré @@ -1012,7 +1012,7 @@ Veuillez renseigner la structure JSON DNS ; cliquer pour voir la documentation - Cliquez pour importer la configuration DNS par défaut + Cliquez pour importer la config DNS par défaut Stratégie résolution domaine (sing-box) @@ -1045,10 +1045,10 @@ Algo contrôle congestion - Alias de configuration du proxy amont + Alias de config du proxy amont - Alias de configuration du proxy aval + Alias de config du proxy aval Assurez-vous que l’alias config existe et est unique @@ -1114,7 +1114,7 @@ Activer le fragmentation (Fragment) - Activer le fichier de cache de sing-box (fichiers de reˋgles) + Activer le fichier de cache de sing-box (fichiers règles) Set de règles sing-box perso @@ -1207,7 +1207,7 @@ Stratégie de résolution par défaut des sortants - Orientation de la mise en page principale (redémarrage requis) + Orientation mise en page principale (redémarrage requis) Adresse de résolution de domaine pour sortants @@ -1330,7 +1330,7 @@ JSON brut XHTTP Extra, format : { XHTTPObject } - Masquer dans la barre d’état lors de la fermeture de la fenêtre + Masquer dans la barre d’état à la fermeture de la fenêtre Niveau de concurrence lors des tests multithread @@ -1351,7 +1351,7 @@ Thème - Copier la commande proxy terminal vers le presse-papiers + Copier la commande proxy terminal vers presse-papiers Recommencer le test des éléments échoués, {0} restants. Appuyez sur Échap pour arrêter... @@ -1369,7 +1369,7 @@ Plage de ports sautés - Écrase le port ; pour plusieurs groupes, séparez par des virgules (,) + Écrase le port ; pour plusieurs groupes, séparer par virgules (,) Générer un groupe de stratégie depuis plusieurs profils @@ -1447,7 +1447,7 @@ Valider les IP des domaines de la région concernée - Après configuration, les IP renvoyées pour les domaines régionaux (p. ex. geosite:cn) seront validées ; seules les IP attendues seront retournées + Après config, les IP renvoyées des domaines régionaux (ex. geosite:cn) seront vérifiées ; seules les IP attendues seront retournées. Activer le DNS personnalisé @@ -1492,7 +1492,7 @@ Début de l’analyse et du traitement du contenu d’abonnement - Sélectionner une configuration + Choisir une config. Actif globalement par défaut, avec filtrage FakeIP intégré ; ne fonctionne que dans sing-box From 80e2ad9796222a5fa5aef0d4c06acf7eb8c861a1 Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 28 Oct 2025 14:24:42 +0800 Subject: [PATCH 02/12] Update build-linux.yml --- .github/workflows/build-linux.yml | 89 +++++++++++++++++++++---------- 1 file changed, 60 insertions(+), 29 deletions(-) diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 3f858e30..0fd5b62a 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -9,6 +9,12 @@ on: push: branches: - master + tags: + - 'v*' + - 'V*' + +permissions: + contents: write env: OutputArch: "linux-64" @@ -21,7 +27,6 @@ jobs: strategy: matrix: configuration: [Release] - runs-on: ubuntu-24.04 steps: @@ -31,18 +36,18 @@ jobs: submodules: 'recursive' fetch-depth: '0' - - name: Setup + - name: Setup .NET uses: actions/setup-dotnet@v5.0.0 with: dotnet-version: '8.0.x' - name: Build run: | - cd v2rayN - dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-x64 --self-contained=true -o $OutputPath64 - dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-arm64 --self-contained=true -o $OutputPathArm64 - dotnet publish ./AmazTool/AmazTool.csproj -c Release -r linux-x64 --self-contained=true -p:PublishTrimmed=true -o $OutputPath64 - dotnet publish ./AmazTool/AmazTool.csproj -c Release -r linux-arm64 --self-contained=true -p:PublishTrimmed=true -o $OutputPathArm64 + cd v2rayN + dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-x64 --self-contained=true -o "$OutputPath64" + dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-arm64 --self-contained=true -o "$OutputPathArm64" + dotnet publish ./AmazTool/AmazTool.csproj -c Release -r linux-x64 --self-contained=true -p:PublishTrimmed=true -o "$OutputPath64" + dotnet publish ./AmazTool/AmazTool.csproj -c Release -r linux-arm64 --self-contained=true -p:PublishTrimmed=true -o "$OutputPathArm64" - name: Upload build artifacts uses: actions/upload-artifact@v5.0.0 @@ -56,8 +61,8 @@ jobs: if: github.event.inputs.release_tag != '' run: | chmod 755 package-debian.sh - ./package-debian.sh $OutputArch $OutputPath64 ${{ github.event.inputs.release_tag }} - ./package-debian.sh $OutputArchArm $OutputPathArm64 ${{ github.event.inputs.release_tag }} + ./package-debian.sh "$OutputArch" "$OutputPath64" "${{ github.event.inputs.release_tag }}" + ./package-debian.sh "$OutputArchArm" "$OutputPathArm64" "${{ github.event.inputs.release_tag }}" - name: Upload deb to release uses: svenstaro/upload-release-action@v2 @@ -73,8 +78,8 @@ jobs: if: github.event.inputs.release_tag != '' run: | chmod 755 package-release-zip.sh - ./package-release-zip.sh $OutputArch $OutputPath64 - ./package-release-zip.sh $OutputArchArm $OutputPathArm64 + ./package-release-zip.sh "$OutputArch" "$OutputPath64" + ./package-release-zip.sh "$OutputArchArm" "$OutputPathArm64" - name: Upload zip archive to release uses: svenstaro/upload-release-action@v2 @@ -85,36 +90,62 @@ jobs: file_glob: true prerelease: true - # release RHEL package - - name: Package RPM (RHEL-family) - if: github.event.inputs.release_tag != '' + rpm: + needs: build + if: | + (github.event_name == 'workflow_dispatch' && github.event.inputs.release_tag != '') || + (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) + runs-on: ubuntu-24.04 + container: + image: quay.io/almalinuxorg/10-base:latest + options: --platform=linux/amd64/v2 + env: + RELEASE_TAG: ${{ github.event.inputs.release_tag != '' && github.event.inputs.release_tag || github.ref_name }} + + steps: + - name: Prepare tools (Red Hat) run: | - chmod 755 package-rhel.sh - # Build for both x86_64 and aarch64 in one go (explicit version passed; no --buildfrom) - ./package-rhel.sh "${{ github.event.inputs.release_tag }}" --arch all + dnf -y makecache + dnf -y install epel-release + dnf -y install sudo git rpm-build rpmdevtools dnf-plugins-core rsync findutils tar gzip unzip which + + - name: Checkout repo (for scripts) + uses: actions/checkout@v5.0.0 + with: + submodules: 'recursive' + fetch-depth: '0' + + - name: Restore build artifacts + uses: actions/download-artifact@v4 + with: + name: v2rayN-linux + path: ${{ github.workspace }}/v2rayN/Release + + - name: Ensure script permissions + run: chmod 755 package-rhel.sh + + - name: Package RPM (RHEL-family) + run: ./package-rhel.sh "${RELEASE_TAG}" --arch all - name: Collect RPMs into workspace - if: github.event.inputs.release_tag != '' run: | - mkdir -p "${{ github.workspace }}/dist/rpm" - rsync -av "$HOME/rpmbuild/RPMS/" "${{ github.workspace }}/dist/rpm/" - # Rename to requested filenames - find "${{ github.workspace }}/dist/rpm" -name "v2rayN-*-1.x86_64.rpm" -exec mv {} "${{ github.workspace }}/dist/rpm/v2rayN-linux-rhel-x64.rpm" \; || true - find "${{ github.workspace }}/dist/rpm" -name "v2rayN-*-1.aarch64.rpm" -exec mv {} "${{ github.workspace }}/dist/rpm/v2rayN-linux-rhel-arm64.rpm" \; || true + mkdir -p "$GITHUB_WORKSPACE/dist/rpm" + rsync -av "$HOME/rpmbuild/RPMS/" "$GITHUB_WORKSPACE/dist/rpm/" || true + find "$GITHUB_WORKSPACE/dist/rpm" -name "v2rayN-*-1*.x86_64.rpm" -exec mv {} "$GITHUB_WORKSPACE/dist/rpm/v2rayN-linux-rhel-x64.rpm" \; || true + find "$GITHUB_WORKSPACE/dist/rpm" -name "v2rayN-*-1*.aarch64.rpm" -exec mv {} "$GITHUB_WORKSPACE/dist/rpm/v2rayN-linux-rhel-arm64.rpm" \; || true + echo "==== Dist tree ====" + ls -R "$GITHUB_WORKSPACE/dist/rpm" || true - name: Upload RPM artifacts - if: github.event.inputs.release_tag != '' uses: actions/upload-artifact@v5.0.0 with: name: v2rayN-rpm - path: | - ${{ github.workspace }}/dist/rpm/**/*.rpm + path: dist/rpm/**/*.rpm - name: Upload RPMs to release uses: svenstaro/upload-release-action@v2 - if: github.event.inputs.release_tag != '' with: - file: ${{ github.workspace }}/dist/rpm/**/*.rpm - tag: ${{ github.event.inputs.release_tag }} + file: dist/rpm/**/*.rpm + tag: ${{ env.RELEASE_TAG }} file_glob: true prerelease: true From 36cf3377cbcb8dcca1c04dcffa85b9d570a4e7a7 Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 28 Oct 2025 14:26:08 +0800 Subject: [PATCH 03/12] Update package-rhel.sh --- package-rhel.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/package-rhel.sh b/package-rhel.sh index 8384e765..b93ea82c 100644 --- a/package-rhel.sh +++ b/package-rhel.sh @@ -19,6 +19,23 @@ else exit 1 fi +# ======================== Kernel version check (require >= 6.11) ======================= +MIN_KERNEL_MAJOR=6 +MIN_KERNEL_MINOR=11 +KERNEL_FULL=$(uname -r) +KERNEL_MAJOR=$(echo "$KERNEL_FULL" | cut -d. -f1) +KERNEL_MINOR=$(echo "$KERNEL_FULL" | cut -d. -f2) + +echo "[INFO] Detected kernel version: $KERNEL_FULL" + +if (( KERNEL_MAJOR < MIN_KERNEL_MAJOR )) || { (( KERNEL_MAJOR == MIN_KERNEL_MAJOR )) && (( KERNEL_MINOR < MIN_KERNEL_MINOR )); }; then + echo "[ERROR] Kernel $KERNEL_FULL is too old. Requires Linux >= ${MIN_KERNEL_MAJOR}.${MIN_KERNEL_MINOR}." + echo "Please upgrade your system or use a newer container (e.g. Fedora 42+, RHEL 10+, Debian 13+)." + exit 1 +fi + +echo "[OK] Kernel version >= ${MIN_KERNEL_MAJOR}.${MIN_KERNEL_MINOR}." + # ===== Config & Parse arguments ========================================================= VERSION_ARG="${1:-}" # Pass version number like 7.13.8, or leave empty WITH_CORE="both" # Default: bundle both xray+sing-box From 92ea31c16ed8e1aa8f70b0f573ca52bc9055b99e Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 28 Oct 2025 21:29:14 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20build-linux.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build-linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 0fd5b62a..e030e465 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -131,7 +131,7 @@ jobs: run: | mkdir -p "$GITHUB_WORKSPACE/dist/rpm" rsync -av "$HOME/rpmbuild/RPMS/" "$GITHUB_WORKSPACE/dist/rpm/" || true - find "$GITHUB_WORKSPACE/dist/rpm" -name "v2rayN-*-1*.x86_64.rpm" -exec mv {} "$GITHUB_WORKSPACE/dist/rpm/v2rayN-linux-rhel-x64.rpm" \; || true + find "$GITHUB_WORKSPACE/dist/rpm" -name "v2rayN-*-1*.x86_64.rpm" -exec mv {} "$GITHUB_WORKSPACE/dist/rpm/v2rayN-linux-rhel-64.rpm" \; || true find "$GITHUB_WORKSPACE/dist/rpm" -name "v2rayN-*-1*.aarch64.rpm" -exec mv {} "$GITHUB_WORKSPACE/dist/rpm/v2rayN-linux-rhel-arm64.rpm" \; || true echo "==== Dist tree ====" ls -R "$GITHUB_WORKSPACE/dist/rpm" || true From de51fbaa224dfd50c2cc902d781a4f80567b087b Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 28 Oct 2025 21:43:09 +0800 Subject: [PATCH 05/12] Update ResUI.fr.resx --- v2rayN/ServiceLib/Resx/ResUI.fr.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2rayN/ServiceLib/Resx/ResUI.fr.resx b/v2rayN/ServiceLib/Resx/ResUI.fr.resx index 88c44db5..908d4254 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.fr.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.fr.resx @@ -1495,7 +1495,7 @@ Choisir une config. - Actif globalement par défaut, avec filtrage FakeIP intégré ; ne fonctionne que dans sing-box + Actif globalement par défaut, avec filtre FakeIP intégré ; ne fonctionne que dans sing-box Veuillez ajouter au moins une configuration From e635771502f676b232aac946cba5e22fcd1c814e Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 28 Oct 2025 21:43:41 +0800 Subject: [PATCH 06/12] Update ResUI.fr.resx --- v2rayN/ServiceLib/Resx/ResUI.fr.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2rayN/ServiceLib/Resx/ResUI.fr.resx b/v2rayN/ServiceLib/Resx/ResUI.fr.resx index 908d4254..0c1f1f1c 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.fr.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.fr.resx @@ -1447,7 +1447,7 @@ Valider les IP des domaines de la région concernée - Après config, les IP renvoyées des domaines régionaux (ex. geosite:cn) seront vérifiées ; seules les IP attendues seront retournées. + Après config, les IP renvoyées des domaines régionaux (ex. geosite:cn) seront vérifiées; seules les IP attendues seront retournées. Activer le DNS personnalisé From abdb8bbcd15326039243f538e4013ee1da2ff997 Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 28 Oct 2025 21:44:16 +0800 Subject: [PATCH 07/12] Update ResUI.fr.resx --- v2rayN/ServiceLib/Resx/ResUI.fr.resx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v2rayN/ServiceLib/Resx/ResUI.fr.resx b/v2rayN/ServiceLib/Resx/ResUI.fr.resx index 0c1f1f1c..e5e6505a 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.fr.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.fr.resx @@ -1447,7 +1447,7 @@ Valider les IP des domaines de la région concernée - Après config, les IP renvoyées des domaines régionaux (ex. geosite:cn) seront vérifiées; seules les IP attendues seront retournées. + Après config, les IP renvoyées des domaines régionaux (ex. geosite:cn) seront vérifiées ; seules les IP attendues seront retournées. Activer le DNS personnalisé @@ -1495,7 +1495,7 @@ Choisir une config. - Actif globalement par défaut, avec filtre FakeIP intégré ; ne fonctionne que dans sing-box + Actif globalement par défaut, avec filtre FakeIP intégré ; ne fonctionne que dans sing-box Veuillez ajouter au moins une configuration From 8466dc5b11ab4fb773cabbde593bc2097b089654 Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 28 Oct 2025 21:49:13 +0800 Subject: [PATCH 08/12] Update ResUI.fr.resx --- v2rayN/ServiceLib/Resx/ResUI.fr.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2rayN/ServiceLib/Resx/ResUI.fr.resx b/v2rayN/ServiceLib/Resx/ResUI.fr.resx index e5e6505a..9e51d254 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.fr.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.fr.resx @@ -1009,7 +1009,7 @@ DNS personnalisé sing-box - Veuillez renseigner la structure JSON DNS ; cliquer pour voir la documentation + Saisissez la structure JSON DNS ; cliquez pour voir la doc. Cliquez pour importer la config DNS par défaut From 39dc960157d0ee355803347c354e6870e247d812 Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 28 Oct 2025 21:52:11 +0800 Subject: [PATCH 09/12] Update ResUI.fr.resx --- v2rayN/ServiceLib/Resx/ResUI.fr.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2rayN/ServiceLib/Resx/ResUI.fr.resx b/v2rayN/ServiceLib/Resx/ResUI.fr.resx index 9e51d254..629d2798 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.fr.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.fr.resx @@ -1471,7 +1471,7 @@ Modèle de configuration complet v2ray - Ajoute seulement la configuration sortante, routing.balancers et routing.rules.outboundTag. Voir la documentation. + Ajoute seulement la config sortante, routing.balancers et routing.rules.outboundTag. Voir la doc. N’ajoutez pas de sorties pour protocoles non-proxy. From 08061ed2ae5d3ad7a1779751992e96af2e56e6db Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 28 Oct 2025 22:25:13 +0800 Subject: [PATCH 10/12] Update ResUI.fr.resx --- v2rayN/ServiceLib/Resx/ResUI.fr.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2rayN/ServiceLib/Resx/ResUI.fr.resx b/v2rayN/ServiceLib/Resx/ResUI.fr.resx index 629d2798..0dcf8545 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.fr.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.fr.resx @@ -1351,7 +1351,7 @@ Thème - Copier la commande proxy terminal vers presse-papiers + Copier la cmd proxy terminal vers presse-papiers Recommencer le test des éléments échoués, {0} restants. Appuyez sur Échap pour arrêter... From 666241c5ff35625425cd53753787d7e469dbef78 Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 28 Oct 2025 22:31:27 +0800 Subject: [PATCH 11/12] Update ResUI.fr.resx --- v2rayN/ServiceLib/Resx/ResUI.fr.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2rayN/ServiceLib/Resx/ResUI.fr.resx b/v2rayN/ServiceLib/Resx/ResUI.fr.resx index 0dcf8545..10b6cdfa 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.fr.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.fr.resx @@ -1351,7 +1351,7 @@ Thème - Copier la cmd proxy terminal vers presse-papiers + Copier la commande proxy terminal Recommencer le test des éléments échoués, {0} restants. Appuyez sur Échap pour arrêter... From 32da6cb10a68b68b60196b6458fd71a198f6af61 Mon Sep 17 00:00:00 2001 From: JieXu Date: Tue, 28 Oct 2025 22:36:53 +0800 Subject: [PATCH 12/12] Update ResUI.fr.resx --- v2rayN/ServiceLib/Resx/ResUI.fr.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2rayN/ServiceLib/Resx/ResUI.fr.resx b/v2rayN/ServiceLib/Resx/ResUI.fr.resx index 10b6cdfa..a56802e3 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.fr.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.fr.resx @@ -1351,7 +1351,7 @@ Thème - Copier la commande proxy terminal + Copier la cmd proxy terminal dans le presse-papiers Recommencer le test des éléments échoués, {0} restants. Appuyez sur Échap pour arrêter...