{ "id": "group-translate", "name": "Group Auto-Translation", "version": "1.3.17", "type": "extension", "main": "dist/index.js", "description": "Auto-translates group messages between participants' languages via a LibreTranslate backend. Configure in-chat with /tr commands. Admin-gated; disabled until enabled.", "author": "Yudhi Armyndharis ", "license": "MIT", "homepage": "https://github.com/rmyndharis/OpenWA-plugins/tree/main/group-translate", "repository": "https://github.com/rmyndharis/OpenWA-plugins", "keywords": [ "translation", "libretranslate", "i18n", "groups", "whatsapp", "openwa" ], "status": "stable", "minOpenWAVersion": "0.8.0", "testedOpenWAVersion": "0.30.0", "provides": [ "translation" ], "permissions": [ "messages:send", "engine:read", "net:fetch", "storage:use" ], "net": { "allow": [ "localhost", "127.0.0.1" ], "allowConfigHosts": [ "libretranslateUrl" ] }, "sessionScoped": true, "sessions": [ "*" ], "hooks": [ "message:received" ], "configSchema": { "type": "object", "properties": { "libretranslateUrl": { "type": "string", "title": "LibreTranslate URL", "default": "http://localhost:7001", "required": true, "description": "Base URL of your LibreTranslate instance. A loopback URL (localhost / 127.0.0.1, any port) is allowed out of the box; any other host is admitted only over https, via net.allowConfigHosts. A loopback or otherwise private address additionally requires SSRF_ALLOWED_HOSTS on the OpenWA host." }, "libretranslateApiKey": { "type": "string", "title": "LibreTranslate API key", "secret": true, "description": "Optional, if your instance requires one." }, "timeoutMs": { "type": "number", "title": "Translate timeout (ms)", "default": 4000, "min": 500, "description": "Per-call timeout. Keep at or below the host hook budget (5000ms) so a slow backend doesn't make the host proceed un-translated." }, "commandPrefix": { "type": "string", "title": "Command prefix", "default": "/tr" }, "minLength": { "type": "number", "title": "Min message length to translate", "default": 2 }, "maxLength": { "type": "number", "title": "Max message length to translate", "default": 2000 }, "denyReply": { "type": "boolean", "title": "Reply on denied commands", "default": false, "description": "If true, reply 'admins only' when a non-admin runs a restricted command." }, "announceInGroups": { "type": "boolean", "title": "Announce this bot in new groups", "default": false, "description": "If true, the first time this plugin sees a message in a group it posts an introduction there, once per group. Off by default: the account running this plugin is normally a real person's WhatsApp, so turning this on announces the bot into every group that account belongs to. Anyone can get the same text on demand with the /tr help command." } } }, "i18n": { "es": { "name": "Traducción Automática de Grupos", "description": "Traduce automáticamente los mensajes del grupo entre los idiomas de los participantes mediante un backend LibreTranslate. Configúralo en el chat con comandos /tr. Gestionado por administradores; desactivado hasta que se habilite.", "config": { "libretranslateUrl": { "title": "URL de LibreTranslate" }, "libretranslateApiKey": { "title": "Clave API de LibreTranslate" }, "timeoutMs": { "title": "Tiempo de espera de traducción (ms)" }, "commandPrefix": { "title": "Prefijo de comando" }, "minLength": { "title": "Longitud mínima de mensaje a traducir" }, "maxLength": { "title": "Longitud máxima de mensaje a traducir" }, "denyReply": { "title": "Responder a comandos denegados" }, "announceInGroups": { "title": "Anunciar este bot en grupos nuevos" } } }, "fr": { "name": "Traduction Automatique de Groupe", "description": "Traduit automatiquement les messages du groupe entre les langues des participants via un backend LibreTranslate. Configurez dans le chat avec des commandes /tr. Réservé aux administrateurs ; désactivé jusqu'à activation.", "config": { "libretranslateUrl": { "title": "URL de LibreTranslate" }, "libretranslateApiKey": { "title": "Clé API de LibreTranslate" }, "timeoutMs": { "title": "Délai de traduction (ms)" }, "commandPrefix": { "title": "Préfixe de commande" }, "minLength": { "title": "Longueur minimale du message à traduire" }, "maxLength": { "title": "Longueur maximale du message à traduire" }, "denyReply": { "title": "Répondre aux commandes refusées" }, "announceInGroups": { "title": "Annoncer ce bot dans les nouveaux groupes" } } }, "it": { "name": "Traduzione Automatica di Gruppo", "description": "Traduce automaticamente i messaggi di gruppo tra le lingue dei partecipanti tramite un backend LibreTranslate. Configura in chat con i comandi /tr. Gestito dagli amministratori; disabilitato fino all'attivazione.", "config": { "libretranslateUrl": { "title": "URL di LibreTranslate" }, "libretranslateApiKey": { "title": "Chiave API di LibreTranslate" }, "timeoutMs": { "title": "Timeout di traduzione (ms)" }, "commandPrefix": { "title": "Prefisso comando" }, "minLength": { "title": "Lunghezza minima messaggio da tradurre" }, "maxLength": { "title": "Lunghezza massima messaggio da tradurre" }, "denyReply": { "title": "Rispondi ai comandi negati" }, "announceInGroups": { "title": "Annunciare questo bot nei nuovi gruppi" } } }, "ar": { "name": "الترجمة التلقائية للمجموعات", "description": "يترجم رسائل المجموعة تلقائيًا بين لغات المشاركين عبر خلفية LibreTranslate. اضبطه داخل المحادثة بأوامر /tr. مقيّد للمشرفين؛ معطّل حتى يُفعَّل.", "config": { "libretranslateUrl": { "title": "رابط LibreTranslate" }, "libretranslateApiKey": { "title": "مفتاح API لـ LibreTranslate" }, "timeoutMs": { "title": "مهلة الترجمة (بالميلي ثانية)" }, "commandPrefix": { "title": "بادئة الأمر" }, "minLength": { "title": "الحد الأدنى لطول الرسالة المترجمة" }, "maxLength": { "title": "الحد الأقصى لطول الرسالة المترجمة" }, "denyReply": { "title": "الرد على الأوامر المرفوضة" }, "announceInGroups": { "title": "الإعلان عن هذا البوت في المجموعات الجديدة" } } }, "he": { "name": "תרגום אוטומטי לקבוצות", "description": "מתרגם אוטומטית הודעות קבוצה בין שפות המשתתפים דרך backend של LibreTranslate. הגדר בצ'אט עם פקודות /tr. מוגן בניהול; מושבת עד להפעלה.", "config": { "libretranslateUrl": { "title": "כתובת LibreTranslate" }, "libretranslateApiKey": { "title": "מפתח API של LibreTranslate" }, "timeoutMs": { "title": "פסק זמן לתרגום (ms)" }, "commandPrefix": { "title": "קידומת פקודה" }, "minLength": { "title": "אורך מינימלי להודעה לתרגום" }, "maxLength": { "title": "אורך מקסימלי להודעה לתרגום" }, "denyReply": { "title": "השב על פקודות שנדחו" }, "announceInGroups": { "title": "להכריז על הבוט בקבוצות חדשות" } } }, "te": { "name": "గ్రూప్ ఆటో-అనువాదం", "description": "LibreTranslate బ్యాకెండ్ ద్వారా గ్రూప్ సందేశాలను పాల్గొనేవారి భాషల మధ్య స్వయంచాలకంగా అనువదిస్తుంది. /tr కమాండ్‌లతో చాట్‌లో కాన్ఫిగర్ చేయండి. అడ్మిన్-గేటెడ్; ప్రారంభించే వరకు నిష్క్రియం.", "config": { "libretranslateUrl": { "title": "LibreTranslate చిరునామా" }, "libretranslateApiKey": { "title": "LibreTranslate API కీ" }, "timeoutMs": { "title": "అనువాద టైమ్‌అవుట్ (ms)" }, "commandPrefix": { "title": "కమాండ్ ప్రిఫిక్స్" }, "minLength": { "title": "అనువదించే కనీస సందేశ పొడవు" }, "maxLength": { "title": "అనువదించే గరిష్ట సందేశ పొడవు" }, "denyReply": { "title": "తిరస్కరించిన కమాండ్‌లకు జవాబివ్వు" }, "announceInGroups": { "title": "కొత్త గ్రూపుల్లో ఈ బాట్‌ను పరిచయం చేయి" } } }, "zh-CN": { "name": "群组自动翻译", "description": "通过 LibreTranslate 后端自动翻译群组成员之间的消息。使用 /tr 命令在聊天中配置。仅管理员可操作;启用前处于禁用状态。", "config": { "libretranslateUrl": { "title": "LibreTranslate 地址" }, "libretranslateApiKey": { "title": "LibreTranslate API 密钥" }, "timeoutMs": { "title": "翻译超时 (ms)" }, "commandPrefix": { "title": "命令前缀" }, "minLength": { "title": "翻译的最小消息长度" }, "maxLength": { "title": "翻译的最大消息长度" }, "denyReply": { "title": "拒绝命令时回复" }, "announceInGroups": { "title": "在新群组中介绍此机器人" } } }, "zh-HK": { "name": "群組自動翻譯", "description": "透過 LibreTranslate 後端自動翻譯群組成員之間的訊息。使用 /tr 指令在聊天中設定。僅管理員可操作;啟用前處於停用狀態。", "config": { "libretranslateUrl": { "title": "LibreTranslate 網址" }, "libretranslateApiKey": { "title": "LibreTranslate API 金鑰" }, "timeoutMs": { "title": "翻譯逾時 (ms)" }, "commandPrefix": { "title": "指令前綴" }, "minLength": { "title": "翻譯的最小訊息長度" }, "maxLength": { "title": "翻譯的最大訊息長度" }, "denyReply": { "title": "拒絕指令時回覆" }, "announceInGroups": { "title": "喺新群組介紹呢個機械人" } } }, "hi": { "name": "ग्रुप ऑटो-अनुवाद", "description": "LibreTranslate बैकएंड के माध्यम से प्रतिभागियों की भाषाओं के बीच ग्रुप संदेशों का ऑटो-अनुवाद करता है। /tr कमांड के साथ इन-चैट कॉन्फ़िगर करें। एडमिन-गेटेड; सक्षम किए जाने तक अक्षम।", "config": { "libretranslateUrl": { "title": "LibreTranslate URL" }, "libretranslateApiKey": { "title": "LibreTranslate API कुंजी" }, "timeoutMs": { "title": "अनुवाद टाइमआउट (ms)" }, "commandPrefix": { "title": "कमांड प्रीफिक्स" }, "minLength": { "title": "अनुवाद करने के लिए संदेश की न्यूनतम लंबाई" }, "maxLength": { "title": "अनुवाद करने के लिए संदेश की अधिकतम लंबाई" }, "denyReply": { "title": "अस्वीकृत कमांड पर रिप्लाई करें" }, "announceInGroups": { "title": "नए ग्रुप्स में इस बॉट की घोषणा करें" } } }, "de": { "name": "Automatische Gruppenübersetzung", "description": "Übersetzt Gruppennachrichten mit LibreTranslate. Administratoren steuern die zunächst deaktivierte Übersetzung über /tr.", "config": { "libretranslateUrl": { "title": "LibreTranslate-URL" }, "libretranslateApiKey": { "title": "LibreTranslate-API-Schlüssel" }, "timeoutMs": { "title": "Anfragezeitlimit (ms)" }, "commandPrefix": { "title": "Befehlspräfix" }, "minLength": { "title": "Minimale Nachrichtenlänge für Übersetzungen" }, "maxLength": { "title": "Maximale Nachrichtenlänge für Übersetzungen" }, "denyReply": { "title": "Auf abgelehnte Befehle antworten" }, "announceInGroups": { "title": "Bot in neuen Gruppen vorstellen" } } }, "tr": { "name": "Otomatik Grup Çevirisi", "description": "Grup mesajlarını LibreTranslate ile çevirir. Başlangıçta kapalıdır; yöneticiler /tr komutlarıyla yönetir.", "config": { "libretranslateUrl": { "title": "LibreTranslate URL adresi" }, "libretranslateApiKey": { "title": "LibreTranslate API anahtarı" }, "timeoutMs": { "title": "İstek zaman aşımı (ms)" }, "commandPrefix": { "title": "Komut öneki" }, "minLength": { "title": "Çevrilecek en kısa mesaj uzunluğu" }, "maxLength": { "title": "Çevrilecek en uzun mesaj uzunluğu" }, "denyReply": { "title": "Reddedilen komutlara yanıt ver" }, "announceInGroups": { "title": "Botu yeni gruplarda duyur" } } }, "pt-BR": { "name": "Tradução automática de grupos", "description": "Traduz mensagens de grupos com LibreTranslate. Começa desativado e é gerenciado por administradores com /tr.", "config": { "libretranslateUrl": { "title": "URL do LibreTranslate" }, "libretranslateApiKey": { "title": "Chave da API do LibreTranslate" }, "timeoutMs": { "title": "Tempo limite da requisição (ms)" }, "commandPrefix": { "title": "Prefixo dos comandos" }, "minLength": { "title": "Comprimento mínimo para tradução" }, "maxLength": { "title": "Comprimento máximo para tradução" }, "denyReply": { "title": "Responder a comandos negados" }, "announceInGroups": { "title": "Apresentar o bot em novos grupos" } } }, "ko": { "name": "그룹 자동 번역", "description": "LibreTranslate로 그룹 메시지를 번역합니다. 기본적으로 꺼져 있으며 관리자가 /tr 명령으로 제어합니다.", "config": { "libretranslateUrl": { "title": "LibreTranslate URL" }, "libretranslateApiKey": { "title": "LibreTranslate API 키" }, "timeoutMs": { "title": "요청 제한 시간 (ms)" }, "commandPrefix": { "title": "명령 접두사" }, "minLength": { "title": "번역할 최소 메시지 길이" }, "maxLength": { "title": "번역할 최대 메시지 길이" }, "denyReply": { "title": "거부된 명령에 응답" }, "announceInGroups": { "title": "새 그룹에 봇 소개" } } }, "id": { "name": "Penerjemah Grup Otomatis", "description": "Menerjemahkan pesan grup melalui LibreTranslate. Nonaktif secara default dan dikelola admin melalui perintah /tr.", "config": { "libretranslateUrl": { "title": "URL LibreTranslate" }, "libretranslateApiKey": { "title": "Kunci API LibreTranslate" }, "timeoutMs": { "title": "Batas waktu permintaan (ms)" }, "commandPrefix": { "title": "Awalan perintah" }, "minLength": { "title": "Panjang minimum pesan untuk diterjemahkan" }, "maxLength": { "title": "Panjang maksimum pesan untuk diterjemahkan" }, "denyReply": { "title": "Balas perintah yang ditolak" }, "announceInGroups": { "title": "Perkenalkan bot di grup baru" } } } } }