Bot WA AI Multi-Language

Cara membuat bot AI WhatsApp multi-bahasa. Auto-detect language, respond sesuai bahasa. Tutorial lengkap!

Bot WA AI Multi-Language
Bot WA AI Multi-Language

AI bisa bicara banyak bahasa!

Dengan AI, bot kamu bisa otomatis detect bahasa customer dan respond dalam bahasa yang sama. No manual translation needed!


Keunggulan AI Multi-Language

📊 PERBANDINGAN:

RULE-BASED MULTI-LANGUAGE:
- Butuh template per bahasa
- Manual translation
- Maintenance berat
- Limited languages

AI MULTI-LANGUAGE:
- Auto-detect language
- Response natural per bahasa
- Single system prompt
- Support 95+ languages

Bahasa yang Didukung

🌍 LANGUAGE SUPPORT:

TIER 1 (Excellent):
- English
- Spanish
- French
- German
- Chinese
- Japanese

TIER 2 (Very Good):
- Indonesian ✅
- Portuguese
- Italian
- Korean
- Arabic
- Hindi

TIER 3 (Good):
- Thai
- Vietnamese
- Turkish
- Dutch
- Polish

Implementasi Basic

System Prompt Multi-Language:

javascript

const MULTILANG_PROMPT = `You are a customer service AI for [BRAND], an Indonesian online store.

LANGUAGE RULES:
1. Detect the language the customer uses
2. ALWAYS respond in the SAME language
3. If Indonesian: use casual, friendly tone with "Kak"
4. If English: use professional but warm tone
5. Match their formality level

ABOUT [BRAND]:
- Fashion store based in Indonesia
- Ships internationally
- Products: Dresses, Blouses, Pants
- Price range: $15-50 USD / Rp 200k-750k

INDONESIAN SPECIFIC:
- Gunakan "Kak" untuk panggilan
- Emoji boleh digunakan 😊
- Casual tapi sopan
- Harga dalam Rupiah

ENGLISH SPECIFIC:
- Use "Hi" or "Hello"
- Professional warmth
- Prices in USD
- Clear and concise

OTHER LANGUAGES:
- Be respectful of cultural norms
- Adapt formality to the language
- Convert prices if needed`;

Basic Implementation:

javascript

async function multiLangChat(userId, userMessage) {
    const response = await openai.chat.completions.create({
        model: 'gpt-4o',
        messages: [
            { role: 'system', content: MULTILANG_PROMPT },
            { role: 'user', content: userMessage }
        ]
    });
    
    return response.choices[0].message.content;
}

// Test
await multiLangChat(user, "Halo, mau tanya harga dress");
// → "Hai Kak! Untuk dress, harga mulai dari Rp 200.000..."

await multiLangChat(user, "Hello, what dresses do you have?");
// → "Hi! We have a lovely collection of dresses..."

await multiLangChat(user, "Bonjour, avez-vous des robes?");
// → "Bonjour! Oui, nous avons une belle collection..."

Advanced: Language Detection & Routing

Detect Language First:

javascript

async function detectLanguage(text) {
    const response = await openai.chat.completions.create({
        model: 'gpt-4o-mini',
        messages: [{
            role: 'user',
            content: `Detect the language of this text. 
            Return only the ISO 639-1 code (e.g., 'en', 'id', 'zh').
            
            Text: "${text}"`
        }],
        max_tokens: 10
    });
    
    return response.choices[0].message.content.trim().toLowerCase();
}

// Alternative: Use a library
const LanguageDetect = require('languagedetect');
const lngDetector = new LanguageDetect();

function detectLanguageLocal(text) {
    const result = lngDetector.detect(text, 1);
    if (result.length > 0) {
        const langMap = {
            'indonesian': 'id',
            'english': 'en',
            'chinese': 'zh',
            'japanese': 'ja',
            // ... more
        };
        return langMap[result[0][0]] || 'en';
    }
    return 'en'; // default
}

Store User Language Preference:

javascript

const userLanguages = new Map();

async function chat(userId, userMessage) {
    // Detect language if not known
    let userLang = userLanguages.get(userId);
    
    if (!userLang) {
        userLang = await detectLanguage(userMessage);
        userLanguages.set(userId, userLang);
    }
    
    // Build language-specific prompt
    const prompt = buildPromptForLanguage(userLang);
    
    const response = await openai.chat.completions.create({
        model: 'gpt-4o',
        messages: [
            { role: 'system', content: prompt },
            { role: 'user', content: userMessage }
        ]
    });
    
    return response.choices[0].message.content;
}

function buildPromptForLanguage(lang) {
    const basePrompt = `You are a customer service AI for [BRAND].
    
    RESPOND IN: ${getLanguageName(lang)}`;
    
    const langSpecific = {
        'id': `
BAHASA INDONESIA:
- Panggil dengan "Kak"
- Tone casual dan ramah
- Harga dalam Rupiah
- Emoji boleh: 😊💕🛍️`,
        
        'en': `
ENGLISH:
- Professional but warm
- Prices in USD
- Clear and helpful
- Minimal emoji`,
        
        'zh': `
中文:
- 礼貌用语
- 价格用人民币
- 专业友好`
    };
    
    return basePrompt + (langSpecific[lang] || langSpecific['en']);
}

Localized Content

Price Conversion:

javascript

const exchangeRates = {
    'IDR': 1,
    'USD': 0.000063,
    'SGD': 0.000085,
    'MYR': 0.00028,
    'CNY': 0.00046
};

const currencyByLang = {
    'id': 'IDR',
    'en': 'USD',
    'zh': 'CNY',
    'ms': 'MYR'
};

function convertPrice(priceIDR, targetLang) {
    const currency = currencyByLang[targetLang] || 'USD';
    const rate = exchangeRates[currency];
    const converted = priceIDR * rate;
    
    return formatCurrency(converted, currency);
}

function formatCurrency(amount, currency) {
    const formats = {
        'IDR': `Rp ${amount.toLocaleString('id-ID')}`,
        'USD': `$${amount.toFixed(2)}`,
        'SGD': `S$${amount.toFixed(2)}`,
        'MYR': `RM${amount.toFixed(2)}`,
        'CNY': `¥${amount.toFixed(2)}`
    };
    return formats[currency] || `$${amount.toFixed(2)}`;
}

Localized Templates:

javascript

const greetings = {
    'id': 'Hai Kak! Selamat datang di [BRAND] 😊',
    'en': 'Hi there! Welcome to [BRAND]!',
    'zh': '您好!欢迎来到 [BRAND]!',
    'ja': 'こんにちは![BRAND]へようこそ!',
    'ko': '안녕하세요! [BRAND]에 오신 것을 환영합니다!',
    'th': 'สวัสดีค่ะ! ยินดีต้อนรับสู่ [BRAND]!',
    'vi': 'Xin chào! Chào mừng đến với [BRAND]!'
};

const menuOptions = {
    'id': {
        products: '🛍️ Lihat Produk',
        order: '📦 Cek Pesanan',
        help: '💬 Bantuan'
    },
    'en': {
        products: '🛍️ View Products',
        order: '📦 Track Order',
        help: '💬 Help'
    }
    // ... more languages
};

Language Switching

Allow Manual Switch:

javascript

const switchCommands = {
    'english': 'en',
    'indonesia': 'id',
    'bahasa': 'id',
    'chinese': 'zh',
    '中文': 'zh',
    'japanese': 'ja',
    '日本語': 'ja'
};

async function handleMessage(userId, text) {
    // Check for language switch command
    const lowerText = text.toLowerCase();
    
    for (const [command, lang] of Object.entries(switchCommands)) {
        if (lowerText.includes(command)) {
            userLanguages.set(userId, lang);
            
            const confirmations = {
                'en': 'Language switched to English! How can I help you?',
                'id': 'Bahasa diubah ke Indonesia! Ada yang bisa dibantu? 😊',
                'zh': '语言已切换为中文!有什么可以帮您的?'
            };
            
            return confirmations[lang];
        }
    }
    
    // Normal chat flow
    return await chat(userId, text);
}

Handling Mixed Language

javascript

// Some users mix languages (code-switching)
// AI naturally handles this

const MIXED_LANG_PROMPT = `You are a customer service AI.

LANGUAGE HANDLING:
- Customers may mix languages (e.g., Indonesian + English)
- Detect the PRIMARY language they're using
- Respond in their primary language
- It's okay to use common loan words

EXAMPLES:
User: "Halo, mau tanya price list dong"
→ Primary: Indonesian (respond in Indonesian)
→ "Hai Kak! Price list bisa dilihat di..."

User: "Hi, bisa COD gak?"
→ Primary: Indonesian with English greeting
→ "Hai Kak! Bisa COD untuk area Jabodetabek..."`;

Analytics Multi-Language

javascript

// Track language distribution
async function trackLanguageUsage(userId, lang) {
    await db.analytics.updateOne(
        { date: today() },
        { 
            $inc: { 
                [`languages.${lang}`]: 1,
                totalMessages: 1
            }
        },
        { upsert: true }
    );
}

// Dashboard data
async function getLanguageStats() {
    const stats = await db.analytics.aggregate([
        { $group: {
            _id: null,
            languages: { $mergeObjects: '$languages' }
        }}
    ]).toArray();
    
    return stats[0]?.languages || {};
}

// Result example:
// { id: 8500, en: 1200, zh: 300, ja: 50 }

Best Practices

DO ✅

- Let AI auto-detect language
- Store user preference
- Localize prices & formats
- Handle code-switching
- Provide switch option
- Test with native speakers

DON'T ❌

- Force one language
- Machine-translate templates
- Ignore cultural nuances
- Mix formality levels
- Skip localization
- Assume all users speak English

FAQ

AI bisa berapa bahasa?

95+ bahasa untuk GPT-4/Claude. Kualitas terbaik untuk bahasa populer.

Perlu training khusus per bahasa?

Tidak untuk LLM besar. Cukup system prompt yang jelas tentang tone per bahasa.

Bagaimana dengan slang/bahasa gaul?

AI cukup paham slang umum. Untuk slang sangat lokal, bisa ditambahkan di prompt.


Kesimpulan

Multi-language AI = Global reach!

Single LanguageMulti-Language AI
Limited marketGlobal market
Manual translateAuto-respond
InconsistentNatural

Setup Multi-Language Bot →


Artikel Terkait