feat: i18n 11 languages + website update + fix #139 #140 #141

i18n:
- Add 9 new locale files (ja/ko/de/es/fr/pt/ru/vi/zh-TW)
- Add multilingual README files for all 11 languages
- Add locale helper, index, and modular translation system
- Add translation generation scripts

Website (docs/index.html):
- Replace 公益AI接口 branding with 晴辰云AI接口
- Remove OpenClaw 独立安装包 promotion block
- Update SEO meta tags (description, keywords, OG, Twitter, JSON-LD)
- Add 11-language README links to footer
- Update 元宝派 link to new URL

Bug fixes:
- fix(cron): delivery format mode:'push' → mode:'announce', remove invalid 'to' field (fixes #141)
- fix(cron): allow single-channel users to select delivery channel
- fix(cron): preserve delivery field in job state for editing
- fix(models): add 'ollama' as recognized API type, prevent overwriting native ollama config (fixes #140)
- fix(models): skip /v1 append for ollama native API baseUrl
- fix(assistant): normalize 'google-generative-ai' consistently, add ollama hints
- fix(version): use CLI path classification for source detection on Windows (fixes #139)
- fix(version): default to 'official' instead of 'chinese' when source unknown
- fix(version): reorder npm global package check based on active CLI
This commit is contained in:
晴天
2026-03-24 22:31:11 +08:00
parent f8af3bea4a
commit 985d263dc6
261 changed files with 26760 additions and 175 deletions

View File

@@ -0,0 +1,24 @@
{
"title": "À propos",
"desc": "Informations de version et de projet ClawPanel",
"subtitle": "Panneau de gestion visuelle OpenClaw",
"sectionCommunity": "Communauté",
"sectionContribute": "Contribuer",
"sectionLinks": "Liens",
"checkingUpdate": "Vérification des mises à jour...",
"official": "Officiel",
"notInstalled": "Non installé",
"versionLabel": "Version",
"recommended": "Recommandé",
"current": "Actuel",
"upToDate": "À jour",
"checkUpdateFailed": "Échec de la vérification des mises à jour",
"joinDiscord": "Rejoindre Discord",
"discordDesc": "Communauté internationale",
"communityWelcome": "Bienvenue dans la communauté OpenClaw ! Signalez les problèmes à tout moment, construisons ensemble de meilleurs agents IA.",
"communityWelcomeIntl": "Welcome to the OpenClaw community! Share ideas, get help, and build amazing AI agents together.",
"submitIssue": "Soumettre un Issue",
"submitPR": "Soumettre un PR",
"officialWebsite": "Site officiel",
"openSourceRepo": "Dépôt open source"
}

View File

@@ -0,0 +1,23 @@
{
"title": "Gestion des Agents",
"desc": "Créer et gérer les Agents OpenClaw",
"addAgent": "+ Nouvel Agent",
"noAgents": "Aucun Agent",
"loadFailed": "Échec du chargement",
"default": "Par défaut",
"backup": "Sauvegarde",
"edit": "Modifier",
"delete": "Supprimer",
"notSet": "Non défini",
"addTitle": "Nouvel Agent",
"agentId": "ID Agent",
"agentName": "Nom",
"agentModel": "Modèle",
"created": "Agent créé",
"createFailed": "Échec de la création",
"editTitle": "Modifier l'Agent — {id}",
"updated": "Mis à jour",
"updateFailed": "Échec de la mise à jour",
"deleted": "Supprimé",
"deleteFailed": "Échec de la suppression"
}

View File

@@ -0,0 +1,27 @@
{
"defaultName": "Assistant IA",
"welcomeText": "Bonjour ! Je suis l'assistant IA. Comment puis-je vous aider ?",
"loading": "Chargement...",
"settings": "Paramètres",
"settingsTitle": "Paramètres de l'assistant",
"settingsSaved": "Paramètres enregistrés",
"model": "Modèle",
"temperature": "Température",
"testSuccess": "Connexion réussie",
"testFailed": "Connexion échouée",
"testing": "Test en cours...",
"testBtn": "Tester la connexion",
"send": "Envoyer",
"inputPlaceholder": "Décrivez le problème...",
"stopped": "Arrêté",
"retry": "Réessayer",
"copyText": "Copier le texte",
"newSession": "Nouvelle session",
"deleteSession": "Supprimer la session",
"noSessions": "Aucune session",
"sessionList": "Liste des sessions",
"aiThinking": "Réflexion...",
"confirmAllow": "Autoriser l'exécution",
"toolExecuting": "Exécution...",
"toolDone": "Exécution terminée"
}

View File

@@ -0,0 +1,32 @@
{
"title": "Canaux",
"desc": "Gérer les canaux de messagerie et les connexions de plateforme",
"addChannel": "+ Ajouter un canal",
"noChannels": "Aucun canal",
"channelName": "Nom du canal",
"platform": "Plateforme",
"status": "Statut",
"connected": "Connecté",
"disconnected": "Déconnecté",
"edit": "Modifier",
"delete": "Supprimer",
"save": "Enregistrer",
"saved": "Enregistré",
"saveFailed": "Échec de la sauvegarde",
"deleted": "Supprimé",
"loadFailed": "Échec du chargement",
"testConnection": "Tester la connexion",
"testing": "Test en cours...",
"testSuccess": "Connexion réussie",
"testFailed": "Connexion échouée",
"bindAgent": "Lier un Agent",
"selectAgent": "Sélectionner Agent",
"pairingTitle": "Appairage",
"approve": "Approuver",
"configTitle": "Configuration du canal",
"restartRequired": "Redémarrage de Gateway requis",
"installPlugin": "Installer le plugin",
"installing": "Installation...",
"installSuccess": "Installé",
"installFailed": "Échec de l'installation"
}

View File

@@ -0,0 +1,22 @@
{
"title": "Chat en direct",
"desc": "Discuter avec l'Agent en temps réel",
"selectAgent": "Sélectionner Agent",
"connecting": "Connexion...",
"connected": "Connecté",
"disconnected": "Déconnecté",
"send": "Envoyer",
"inputPlaceholder": "Tapez un message...",
"noMessages": "Aucun message",
"clearChat": "Effacer l'historique",
"newSession": "Nouvelle session",
"noSessions": "Aucune session",
"copyMessage": "Copier",
"thinking": "Réflexion...",
"generating": "Génération...",
"stop": "Arrêter",
"regenerate": "Régénérer",
"modelSelect": "Sélectionner un modèle",
"gatewayNotRunning": "Gateway n'est pas en cours d'exécution",
"startGateway": "Démarrer Gateway"
}

View File

@@ -0,0 +1,16 @@
{
"title": "Diagnostic système",
"desc": "Diagnostic de connexion WebSocket et débogage réseau",
"wsStatus": "Statut WebSocket",
"wsConnect": "Connecter",
"wsDisconnect": "Déconnecter",
"wsConnected": "Connecté",
"wsDisconnected": "Non connecté",
"wsConnecting": "Connexion...",
"wsError": "Erreur WebSocket",
"networkLogTitle": "Journal des requêtes réseau",
"noRequests": "Aucune requête",
"totalRequests": "Total des requêtes",
"fixStarting": "Début de la réparation...",
"fixFailed": "Réparation échouée"
}

View File

@@ -0,0 +1,42 @@
{
"save": "Enregistrer",
"cancel": "Annuler",
"confirm": "Confirmer",
"delete": "Supprimer",
"edit": "Modifier",
"add": "Ajouter",
"close": "Fermer",
"loading": "Chargement...",
"retry": "Réessayer",
"copy": "Copier",
"copied": "Copié",
"search": "Rechercher",
"refresh": "Actualiser",
"back": "Retour",
"submit": "Soumettre",
"reset": "Réinitialiser",
"enabled": "Activé",
"disabled": "Désactivé",
"unknown": "Inconnu",
"none": "Aucun",
"yes": "Oui",
"no": "Non",
"online": "En ligne",
"offline": "Hors ligne",
"running": "En cours",
"stopped": "Arrêté",
"error": "Erreur",
"success": "Succès",
"warning": "Avertissement",
"info": "Information",
"loadFailed": "Échec du chargement",
"saveFailed": "Échec de la sauvegarde",
"saveSuccess": "Sauvegardé",
"operationFailed": "Opération échouée",
"operationSuccess": "Opération réussie",
"noData": "Aucune donnée",
"unit": "",
"survivalRate": "Disponibilité",
"settings": "Paramètres",
"update": "Mettre à jour"
}

View File

@@ -0,0 +1,28 @@
{
"title": "Communication et Automatisation",
"desc": "Configurer les canaux de notification et les règles d'automatisation",
"notifyTitle": "Canaux de notification",
"automationTitle": "Règles d'automatisation",
"addChannel": "+ Ajouter un canal",
"addRule": "+ Ajouter une règle",
"noChannels": "Aucun canal",
"noRules": "Aucune règle",
"channelName": "Nom du canal",
"enabled": "Activé",
"disabled": "Désactivé",
"test": "Envoyer un test",
"testing": "Test en cours...",
"testSuccess": "Test réussi",
"testFailed": "Test échoué",
"save": "Enregistrer",
"saved": "Enregistré",
"saveFailed": "Échec de la sauvegarde",
"delete": "Supprimer",
"deleted": "Supprimé",
"deleteFailed": "Échec de la suppression",
"loadFailed": "Échec du chargement",
"trigger": "Déclencheur",
"action": "Action",
"selectAgent": "Sélectionner Agent",
"approve": "Approuver"
}

View File

@@ -0,0 +1,19 @@
{
"title": "Tâches planifiées",
"desc": "Gérer les tâches planifiées OpenClaw",
"addTask": "+ Ajouter une tâche",
"noTasks": "Aucune tâche",
"taskName": "Nom de la tâche",
"schedule": "Planification",
"status": "Statut",
"active": "Active",
"inactive": "Inactive",
"edit": "Modifier",
"delete": "Supprimer",
"enable": "Activer",
"disable": "Désactiver",
"runNow": "Exécuter maintenant",
"created": "Tâche créée",
"deleted": "Tâche supprimée",
"loadFailed": "Échec du chargement"
}

View File

@@ -0,0 +1,32 @@
{
"title": "Tableau de bord",
"desc": "Vue d'ensemble de l'état OpenClaw",
"gateway": "Gateway",
"notStarted": "Non démarré",
"versionLabel": "Version",
"agentFleet": "Flotte d'Agents",
"defaultAgent": "Par défaut",
"modelPool": "Pool de modèles",
"baseServices": "Services de base",
"controlUI": "Control UI",
"restartGw": "Redémarrer Gateway",
"checkUpdate": "Vérifier les mises à jour",
"createBackup": "Créer une sauvegarde",
"recentLogs": "Journaux récents",
"cliPath": "Chemin CLI",
"retry": "Réessayer",
"notSet": "Non défini",
"port": "Port",
"startBtn": "Démarrer",
"stopBtn": "Arrêter",
"restartBtn": "Redémarrer",
"primaryModel": "Modèle principal",
"noLogs": "Aucun journal",
"starting": "Démarrage...",
"stopping": "Arrêt...",
"restarting": "Redémarrage...",
"checking": "Vérification...",
"upToDate": "À jour",
"backingUp": "Sauvegarde...",
"backupFail": "Échec de la sauvegarde"
}

View File

@@ -0,0 +1,18 @@
{
"title": "Outils additionnels",
"desc": "Gérer cftunnel et ClawApp",
"cftunnelTitle": "cftunnel",
"clawappTitle": "ClawApp",
"installBtn": "Installation rapide",
"status": "Statut",
"running": "En cours",
"stopped": "Arrêté",
"version": "Version",
"startTunnel": "Démarrer le tunnel",
"stopTunnel": "Arrêter le tunnel",
"start": "Démarrer",
"stop": "Arrêter",
"installing": "Installation...",
"installDone": "Installation terminée",
"installFailed": "Échec de l'installation"
}

View File

@@ -0,0 +1,17 @@
{
"title": "Gateway",
"desc": "Configurer et gérer Gateway",
"status": "Statut",
"running": "En cours",
"stopped": "Arrêté",
"port": "Port",
"saveConfig": "Enregistrer la configuration",
"saved": "Configuration Gateway enregistrée",
"saveFailed": "Échec de la sauvegarde",
"restartRequired": "Redémarrage de Gateway requis",
"restartNow": "Redémarrer maintenant",
"configLoadFail": "Échec du chargement de la configuration",
"pairingTitle": "Appairage des appareils",
"pairedDevices": "Appareils appairés",
"noPairedDevices": "Aucun appareil appairé"
}

View File

@@ -0,0 +1,11 @@
{
"local": "Local",
"remote": "Distant",
"docker": "Docker",
"addInstance": "Ajouter une instance",
"addRemote": "Ajouter une instance distante",
"nameLabel": "Nom",
"endpointLabel": "Adresse du panneau",
"adding": "Ajout...",
"current": "Actuel"
}

View File

@@ -0,0 +1,17 @@
{
"title": "Journaux",
"desc": "Voir les journaux OpenClaw",
"tabGateway": "Gateway",
"tabGatewayErr": "Erreurs Gateway",
"tabGuardian": "Guardian",
"tabBackup": "Sauvegarde",
"tabAudit": "Audit",
"searchPlaceholder": "Rechercher...",
"refresh": "Actualiser",
"autoScroll": "Défilement auto",
"loading": "Chargement...",
"empty": "Aucun journal",
"loadFailed": "Échec du chargement",
"noResults": "Aucun résultat",
"searchFailed": "Échec de la recherche"
}

View File

@@ -0,0 +1,17 @@
{
"title": "Mémoire",
"desc": "Gérer les fichiers mémoire de l'Agent",
"noFiles": "Aucun fichier",
"view": "Voir",
"download": "Télécharger",
"delete": "Supprimer",
"upload": "Téléverser",
"uploading": "Téléversement...",
"uploaded": "Téléversé",
"uploadFailed": "Échec du téléversement",
"deleted": "Supprimé",
"deleteFailed": "Échec de la suppression",
"loadFailed": "Échec du chargement",
"selectAgent": "Sélectionner Agent",
"searchPlaceholder": "Rechercher..."
}

View File

@@ -0,0 +1,5 @@
{
"confirmTitle": "Confirmer",
"confirmOk": "OK",
"confirmCancel": "Annuler"
}

View File

@@ -0,0 +1,21 @@
{
"title": "Configuration des modèles",
"desc": "Gérer les fournisseurs et modèles IA",
"addProvider": "+ Ajouter un fournisseur",
"noProviders": "Aucun fournisseur",
"providerName": "Nom du fournisseur",
"baseUrl": "Base URL",
"apiKey": "API Key",
"models": "Modèles",
"addModel": "Ajouter un modèle",
"saveProvider": "Enregistrer",
"testConnection": "Tester la connexion",
"testing": "Test en cours...",
"testSuccess": "Connexion réussie",
"testFailed": "Connexion échouée",
"fetchModels": "Obtenir la liste des modèles",
"primaryModel": "Modèle principal",
"enabled": "Activé",
"disabled": "Désactivé",
"loadFailed": "Échec du chargement de la configuration"
}

View File

@@ -0,0 +1,8 @@
{
"title": "Sécurité",
"desc": "Gérer les paramètres de sécurité OpenClaw",
"toolPermissions": "Permissions des outils",
"savePermissions": "Enregistrer les permissions",
"permSaved": "Permissions enregistrées",
"loadFailed": "Échec du chargement de la configuration"
}

View File

@@ -0,0 +1,23 @@
{
"title": "Gestion des services",
"desc": "Démarrer, arrêter et surveiller les services OpenClaw",
"gatewayTitle": "Service Gateway",
"guardianTitle": "Service Guardian",
"status": "Statut",
"pid": "PID",
"uptime": "Temps de fonctionnement",
"port": "Port",
"host": "Hôte",
"start": "Démarrer",
"stop": "Arrêter",
"restart": "Redémarrer",
"forceKill": "Forcer la fermeture",
"viewLogs": "Voir les journaux",
"starting": "Démarrage...",
"stopping": "Arrêt...",
"restarting": "Redémarrage...",
"loadFail": "Échec du chargement du statut",
"healthCheck": "Vérification de santé",
"healthOk": "Fonctionne normalement",
"healthFail": "Pas de réponse"
}

View File

@@ -0,0 +1,13 @@
{
"title": "Paramètres du panneau",
"desc": "Gérer les paramètres réseau, proxy et sources de téléchargement",
"networkProxy": "Proxy réseau",
"modelProxy": "Proxy des requêtes de modèle",
"npmRegistry": "npm Registry",
"language": "Langue d'affichage",
"languageHint": "Changer la langue de l'interface.",
"testProxy": "Tester la connexion",
"clearProxy": "Désactiver le proxy",
"resetDefault": "Restaurer les paramètres par défaut",
"restarting": "Redémarrage..."
}

View File

@@ -0,0 +1,23 @@
{
"title": "Configuration initiale",
"desc": "Installer et configurer OpenClaw",
"headerTitle": "Bienvenue sur ClawPanel",
"recheck": "Revérifier",
"stepNode": "Environnement Node.js",
"installed": "Installé",
"downloadNode": "Télécharger Node.js",
"stepGit": "Git",
"stepConfig": "Fichier de configuration",
"saveBtn": "Enregistrer",
"resetDefaultBtn": "Restaurer les paramètres par défaut",
"aiAssistant": "Assistant IA",
"openAiAssistant": "Ouvrir l'assistant IA",
"nextStepsTitle": "Étapes suivantes",
"configModels": "Configurer les modèles",
"gatewaySetup": "Configurer Gateway",
"messageChannels": "Canaux",
"enterPanel": "Entrer dans le panneau",
"installBtn": "Installation rapide",
"installOpenclaw": "Installer OpenClaw",
"installComplete": "Installation terminée"
}

View File

@@ -0,0 +1,29 @@
{
"collapse": "Réduire",
"closeMenu": "Fermer le menu",
"themeLight": "Clair",
"themeDark": "Sombre",
"sectionMonitor": "Surveillance",
"sectionConfig": "Configuration",
"sectionData": "Données",
"sectionExtension": "Extensions",
"dashboard": "Tableau de bord",
"assistant": "Assistant",
"chat": "Chat",
"services": "Services",
"logs": "Journaux",
"models": "Modèles",
"agents": "Agents",
"gateway": "Gateway",
"channels": "Canaux",
"communication": "Communication",
"security": "Sécurité",
"memory": "Mémoire",
"cron": "Tâches planifiées",
"usage": "Utilisation",
"skills": "Skills",
"settings": "Paramètres",
"chatDebug": "Diagnostic",
"about": "À propos",
"setup": "Configuration initiale"
}

View File

@@ -0,0 +1,19 @@
{
"title": "Skills",
"desc": "Gérer et installer les Skills OpenClaw",
"installed": "Installés",
"available": "Disponibles",
"noSkills": "Aucun Skill",
"install": "Installer",
"uninstall": "Désinstaller",
"update": "Mettre à jour",
"search": "Rechercher Skills...",
"installing": "Installation...",
"installSuccess": "Installé",
"installFailed": "Échec de l'installation",
"loadFailed": "Échec du chargement",
"noResults": "Aucun résultat",
"refreshList": "Actualiser la liste",
"checkUpdates": "Vérifier les mises à jour",
"noUpdates": "Tout est à jour"
}

View File

@@ -0,0 +1,4 @@
{
"copySuccess": "Copié",
"copyFailed": "Échec de la copie"
}

View File

@@ -0,0 +1,17 @@
{
"title": "Utilisation",
"desc": "Voir les statistiques d'utilisation des modèles et tokens",
"totalTokens": "Tokens totaux",
"totalRequests": "Requêtes totales",
"totalCost": "Coût total",
"today": "Aujourd'hui",
"week": "Cette semaine",
"month": "Ce mois",
"all": "Tout",
"noData": "Aucune donnée",
"model": "Modèle",
"tokens": "Tokens",
"loadFailed": "Échec du chargement",
"chart": "Graphique",
"table": "Tableau"
}