Skip to main content
مستندات
مرکز آموزش

مدیریت محتوا را با راهنماهای جامع، آموزش‌ها و مستندات API به‌خوبی یاد بگیرید

لینک‌های سریع

تشخیص زبان

Discuse زبان یک پیام را شناسایی می‌کند تا بتوانید پیش از هر اقدامی، قوانین نظارتی مناسب را روی آن اعمال کنید. متن را با فعال‌بودن check_language به POST https://api.discuse.com/api/v2/check بفرستید و کد زبان تشخیص‌داده‌شده را از results.language.language بخوانید. برای علامت‌گذاری محتوایی که به زبان موردنیاز شما نیست، expected_language را اضافه کنید.

تشخیص زبان برای چیست؟

تشخیص زبان در همان ابتدا به شما امکان می‌دهد:

  • آستانه‌های نظارت مخصوص هر زبان را اعمال کنید
  • محتوا را به بازبین‌ها یا تیم پشتیبانی مناسب ارجاع دهید
  • سیاست زبانی یک جامعه را enforce کنید
  • فیدها را بر اساس زبان فیلتر یا بومی‌سازی کنید

چگونه زبان را تشخیص دهم؟

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
    }
  }'

قالب پاسخ

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

کد زبان تشخیص‌داده‌شده در results.language.language قرار دارد. وقتی enforce کردن expected_language فعال باشد، detected و expected نیز مقداردهی می‌شوند (در ادامه ببینید).

نتیجهٔ زبان چه فیلدهایی برمی‌گرداند؟

فیلد نوع معنی
language string کد زبان تشخیص‌داده‌شده (مثلاً en، fr، es)
confidence number میزان اطمینان تشخیص (0.0–1.0)
expected string کد زبان enforce‌شده، زمانی که expected_language تنظیم شده باشد
detected string کد تشخیص‌داده‌شده (نام مستعار language، هنگام enforce کردن مقداردهی می‌شود)
hit bool زمانی true است که زبان تشخیص‌داده‌شده با expected مطابقت نداشته باشد
delete_only bool وقتی true باشد، پیام باید بدون مجازات بیشتر حذف شود
error string فقط زمانی وجود دارد که تشخیص ناموفق باشد

کدام زبان‌ها پشتیبانی می‌شوند؟

Discuse کدهای زبان به سبک ISO برمی‌گرداند. زبان‌هایی که معمولاً تشخیص داده می‌شوند شامل موارد زیر هستند:

کد زبان کد زبان
en انگلیسی de آلمانی
es اسپانیایی fr فرانسوی
it ایتالیایی pt پرتغالی
nl هلندی pl لهستانی
ru روسی uk اوکراینی
zh چینی ja ژاپنی
ko کره‌ای ar عربی
hi هندی tr ترکی

به‌جای hardcode کردن یک فهرست ثابت، مقدار را مستقیماً از results.language.language بخوانید.

چگونه یک زبان مشخص را enforce کنم؟

expected_language را روی کدی که نیاز دارید تنظیم کنید. وقتی زبان تشخیص‌داده‌شده متفاوت باشد، language.hit برابر true می‌شود و expected/detected مقداردهی می‌شوند:

درخواست:

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

پاسخ:

{
  "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
    }
  }
}

موارد استفاده

انجمن‌های فقط انگلیسی

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 };
}

مسیریابی چندزبانه

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 };
}

ترکیب با نظارت بر محتوا

تشخیص زبان را همراه با sentiment و spam در یک درخواست اجرا کنید:

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

سپس زبان تشخیص‌داده‌شده می‌تواند آستانه‌های sentiment مخصوص هر زبان را تعیین کند:

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' };
}

بهترین روش‌ها

متن کوتاه را در نظر بگیرید

تشخیص روی رشته‌های بسیار کوتاه دقت کمتری دارد. برای متن‌های کمتر از یک طول حداقلی، بررسی را رد کنید:

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

نتایج را cache کنید

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;
}

محدودیت‌های استفاده

تشخیص زبان از سهمیهٔ تحلیل متن شما استفاده می‌کند:

طرح تحلیل‌های ماهانه
Basic 1,000
Gold 5,000
Platinum 15,000
Ultimate 30,000

پاسخ‌های cache‌شده از سهمیهٔ شما کم نمی‌کنند.

نمونه‌های یکپارچه‌سازی

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()

گام‌های بعدی

نوشته تیم Discuse · آخرین به‌روزرسانی June 2026

مقاله‌های مرتبط

تحلیل متن و تشخیص احساسات

هرزنامه، محتوای سمی، الفاظ رکیک را تشخیص دهید و احساسات را در محتوای متنی تحلیل کنید

تشخیص NSFW در تصویر

تصاویر نامناسب و محتوای بزرگسالان را به‌طور خودکار تشخیص داده و فیلتر کنید

تشخیص هرزنامه

فیلتر کردن هرزنامه مبتنی بر AI برای متن و پیام‌ها