Logo OmniDevvKANA Web
Kembali ke katalog plugin

search

terjemah

Terjemahkan teks ke bahasa lain

Translate text to another language

plugins/search/terjemah.js

Lokasi file di repo kana-md

3

Perintah termasuk alias

2.1 KB

Ukuran file sumber

4/11/2026

Update terakhir, commit 5e7e0e7

Daftar perintah

Ketuk tombol salin untuk menyalin perintah, lalu tempel di chat WhatsApp bot KANA.

.terjemah.tr.translate

Cara pakai

.tr <kode bahasa> <teks>

Contoh

.tr en selamat pagi dunia

Kode sumber plugin

Unduh .js

Cara pasang: simpan file ini ke folder plugins/search/ di bot KANA kamu, lalu restart bot. Pemilik source code lain bisa mengambil update plugin terbaru dari halaman ini kapan saja.

import { translateText } from '../../src/scrapers/search/terjemah.js'

export const config = {
  name: 'terjemah',
  alias: ['tr', 'translate'],
  category: 'search',
  description: { id: 'Terjemahkan teks ke bahasa lain', en: 'Translate text to another language' },
  usage: '.tr <kode bahasa> <teks>',
  example: '.tr en selamat pagi dunia',
  cooldown: 5,
  limit: 5,
}

export const i18n = {
  id: {
    terjemah: {
      usage: 'Formatnya: .tr <kode bahasa> <teks>. Kode umum: id (Indonesia), en (Inggris), ja (Jepang), ko (Korea), ar (Arab), zh (Mandarin), es (Spanyol), fr (Prancis), de (Jerman), ru (Rusia). Contoh: .tr en selamat pagi~',
      failed: 'Mouu, terjemahannya gagal: {message}. Layanan Google kadang memblokir sebentar, coba lagi nanti ya~',
      detected: 'Bahasa asal terdeteksi: {lang}',
      result: '{text}',
    },
  },
  en: {
    terjemah: {
      usage: 'Format: .tr <language code> <text>. Common codes: id (Indonesian), en (English), ja (Japanese), ko (Korean), ar (Arabic), zh (Chinese), es (Spanish), fr (French), de (German), ru (Russian). Example: .tr id good morning~',
      failed: 'Mouu, translation failed: {message}. The Google service blocks briefly sometimes, try again later~',
      detected: 'Detected source language: {lang}',
      result: '{text}',
    },
  },
}

const COMMON_CODES = new Set(['id', 'en', 'ja', 'ko', 'ar', 'zh', 'es', 'fr', 'de', 'ru', 'pt', 'it', 'nl', 'th', 'vi', 'ms', 'hi', 'tr'])

export const test = { input: '.tr en selamat pagi dunia', expect: /good morning/i }

export async function handler(ctx) {
  const target = (ctx.args[0] || '').toLowerCase()
  const text = ctx.args.slice(1).join(' ').trim()
  if (!COMMON_CODES.has(target) || !text) return ctx.reply(ctx.t('terjemah.usage'))
  let result
  try {
    result = await translateText(text, target)
  } catch (err) {
    return ctx.reply(ctx.t('terjemah.failed', { message: err.message }))
  }
  const lines = [ctx.t('terjemah.result', { text: result.text })]
  if (result.detectedLang && result.detectedLang !== target) {
    lines.push(ctx.t('terjemah.detected', { lang: result.detectedLang }))
  }
  await ctx.reply(lines.join('\n'))
}