Skip to main content
Dokumentasi
Pusat Pembelajaran

Kuasai moderasi konten dengan panduan lengkap, tutorial, dan dokumentasi API

Tautan Cepat

Deteksi Bahasa

Discuse mengidentifikasi bahasa sebuah pesan agar Anda dapat menerapkan aturan moderasi yang tepat sebelum mengambil tindakan. Kirim teks ke POST https://api.discuse.com/api/v2/check dengan check_language diaktifkan, lalu baca kode bahasa yang terdeteksi dari results.language.language. Tambahkan expected_language untuk menandai konten yang tidak menggunakan bahasa yang Anda wajibkan.

Untuk apa deteksi bahasa digunakan?

Mendeteksi bahasa sejak awal memungkinkan Anda untuk:

  • Menerapkan ambang moderasi khusus untuk tiap bahasa
  • Mengarahkan konten ke peninjau atau tim dukungan yang tepat
  • Menegakkan kebijakan bahasa komunitas
  • Memfilter atau melokalkan feed berdasarkan bahasa

Bagaimana cara mendeteksi bahasa?

curl -X POST https://api.discuse.com/api/v2/check \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "content": {
      "text": "Bonjour, comment allez-vous aujourd'\''hui?"
    },
    "settings": {
      "check_language": true
    }
  }'

Format respons

{
  "has_violations": false,
  "cached": false,
  "results": {
    "language": {
      "language": "fr",
      "confidence": 0.99,
      "hit": false
    }
  }
}

Kode bahasa yang terdeteksi ada di results.language.language. Saat penerapan expected_language aktif, detected dan expected juga akan terisi (lihat di bawah).

Kolom apa saja yang dikembalikan oleh hasil bahasa?

Kolom Tipe Arti
language string Kode bahasa yang terdeteksi (mis. en, fr, es)
confidence number Tingkat keyakinan deteksi (0.0–1.0)
expected string Kode bahasa yang diterapkan, saat expected_language diatur
detected string Kode yang terdeteksi (alias dari language, terisi saat penerapan)
hit bool True saat bahasa yang terdeteksi tidak cocok dengan expected
delete_only bool Jika true, pesan harus dihapus tanpa hukuman lebih lanjut
error string Hanya ada saat deteksi gagal

Bahasa apa saja yang didukung?

Discuse mengembalikan kode bahasa bergaya ISO. Bahasa yang umum terdeteksi meliputi:

Kode Bahasa Kode Bahasa
en Inggris de Jerman
es Spanyol fr Prancis
it Italia pt Portugis
nl Belanda pl Polandia
ru Rusia uk Ukraina
zh Mandarin ja Jepang
ko Korea ar Arab
hi Hindi tr Turki

Baca nilai dari results.language.language secara langsung, bukan dengan menetapkan daftar tetap di kode.

Bagaimana cara mewajibkan bahasa tertentu?

Atur expected_language ke kode yang Anda wajibkan. Saat bahasa yang terdeteksi berbeda, language.hit bernilai true dan expected/detected akan diisi:

Permintaan:

{
  "content": { "text": "Hola, cómo estás?" },
  "settings": {
    "check_language": true,
    "expected_language": "en"
  }
}

Respons:

{
  "has_violations": true,
  "message": "Content is not in expected language",
  "results": {
    "hits": true,
    "language": {
      "language": "es",
      "detected": "es",
      "expected": "en",
      "confidence": 0.97,
      "hit": true
    }
  }
}

Contoh penggunaan

Forum khusus bahasa Inggris

async function validatePost(post) {
  const result = await fetch('https://api.discuse.com/api/v2/check', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.DISCUSE_API_KEY
    },
    body: JSON.stringify({
      content: { text: post.content },
      settings: { check_language: true, expected_language: 'en' }
    })
  }).then(r => r.json());

  if (result.results.language.hit) {
    return {
      approved: false,
      reason: 'Posts must be in English',
      detected_language: result.results.language.language
    };
  }
  return { approved: true };
}

Perutean multi-bahasa

async function routeContent(content) {
  const result = await checkLanguage(content.text);
  const language = result.results.language.language;

  const moderatorQueue = {
    en: 'english-moderation',
    es: 'spanish-moderation',
    fr: 'french-moderation',
    de: 'german-moderation',
    default: 'general-moderation'
  };

  const queue = moderatorQueue[language] || moderatorQueue.default;
  await addToQueue(queue, content);
  return { queued: true, language };
}

Menggabungkan dengan moderasi konten

Jalankan deteksi bahasa bersama analisis sentimen dan spam dalam satu permintaan:

{
  "content": {
    "text": "User message in any language"
  },
  "settings": {
    "check_language": true,
    "check_sentiment": true,
    "check_spam": true
  }
}

Bahasa yang terdeteksi kemudian dapat digunakan untuk menentukan ambang sentimen per bahasa:

const LANGUAGE_THRESHOLDS = {
  en: { toxicity: 0.7, profanity: 0.6 },
  de: { toxicity: 0.6, profanity: 0.5 },
  es: { toxicity: 0.7, profanity: 0.7 },
  default: { toxicity: 0.7, profanity: 0.6 }
};

async function moderateContent(text) {
  const result = await checkText(text); // check_language + check_sentiment
  const language = result.results.language.language;
  const thresholds = LANGUAGE_THRESHOLDS[language] || LANGUAGE_THRESHOLDS.default;
  const sentiment = result.results.sentiment;

  if (sentiment.toxicity > thresholds.toxicity) {
    return { action: 'block', reason: 'toxic_content' };
  }
  if (sentiment.profanity > thresholds.profanity) {
    return { action: 'flag', reason: 'profanity' };
  }
  return { action: 'allow' };
}

Praktik terbaik

Perhitungkan teks pendek

Deteksi kurang andal pada string yang sangat pendek. Lewati pemeriksaan jika panjangnya di bawah batas minimum:

async function smartLanguageCheck(text) {
  if (text.length < 20) {
    return { language: 'unknown', confidence: 0 };
  }
  const result = await checkLanguage(text);
  return result.results.language;
}

Cache hasil

async function getLanguageWithCache(text, contentId) {
  const cached = await cache.get(`lang:${contentId}`);
  if (cached) return JSON.parse(cached);

  const result = await checkLanguage(text);
  const language = result.results.language;
  await cache.set(`lang:${contentId}`, JSON.stringify(language), 'EX', 3600);
  return language;
}

Batas penggunaan

Deteksi bahasa menggunakan kuota analisis teks Anda:

Paket Analisis Bulanan
Basic 1.000
Gold 5.000
Platinum 15.000
Ultimate 30.000

Respons yang di-cache tidak dihitung terhadap kuota Anda.

Contoh integrasi

Node.js

const checkLanguage = async (text, expectedLanguage = null) => {
  const settings = { check_language: true };
  if (expectedLanguage) settings.expected_language = expectedLanguage;

  const response = await fetch('https://api.discuse.com/api/v2/check', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.DISCUSE_API_KEY
    },
    body: JSON.stringify({ content: { text }, settings })
  });

  return response.json();
};

Python

import os
import requests

def check_language(text, expected_language=None):
    settings = {'check_language': True}
    if expected_language:
        settings['expected_language'] = expected_language

    response = requests.post(
        'https://api.discuse.com/api/v2/check',
        headers={
            'Content-Type': 'application/json',
            'X-API-Key': os.environ['DISCUSE_API_KEY']
        },
        json={'content': {'text': text}, 'settings': settings}
    )
    return response.json()

Langkah berikutnya

Ditulis oleh Tim Discuse · Terakhir diperbarui June 2026

Artikel Terkait

Analisis Teks dan Deteksi Sentimen

Deteksi spam, toksisitas, kata-kata kasar, dan analisis sentimen dalam konten teks

Deteksi NSFW pada Gambar

Deteksi dan filter gambar tidak pantas serta konten dewasa secara otomatis

Deteksi Spam

Pemfilteran spam berbasis AI untuk teks dan pesan