@iotauz/ai-chat
Version:
A customizable React chatbot component for IOTA SDK
292 lines (250 loc) • 12.4 kB
text/typescript
export interface Translations {
// Header
chatbotTitle: string
chatbotSubtitle: string
// Welcome message
welcomeGreeting: string
welcomeMessage: string
phoneRequestMessage: string
// Input placeholders
phoneInputPlaceholder: string
phoneInputLabel: string
messageInputPlaceholder: string
// Buttons
sendButton: string
callbackRequestButton: string
// Quick replies
extendPolicyQuestion: string
findContractNumberQuestion: string
submitClaimQuestion: string
// Callback modal
callbackModalTitle: string
callbackModalSubtitle: string
callbackPhoneInputLabel: string
dataPrivacyMessage: string
dataProcessingConsent: string
backButton: string
requestCallButton: string
// Messages
callbackConfirmation: string
errorLoadingMessages: string
errorCreatingChat: string
errorSendingMessage: string
threadNotFoundMessage: string
// Date formatting
months: string[]
}
export const ru: Translations = {
// Header
chatbotTitle: 'Ai chat bot',
chatbotSubtitle: 'Наш AI-бот готов помочь вам круглосуточно',
// Welcome message
welcomeGreeting: 'Привет! 👋',
welcomeMessage: 'Я Али, ваш виртуальный помощник от Euroasia Insurance. Готов помочь разобраться в мире страхования, подобрать нужный полис или ответить на любые ваши вопросы. Спрашивайте, не стесняйтесь! Чем могу быть полезен сегодня?',
phoneRequestMessage:
'Чтобы начать, пожалуйста, введите свой номер телефона — мы используем его для связи и сохранения истории обращений.',
// Input placeholders
phoneInputPlaceholder: '+ 998 (__) ___ __ __',
phoneInputLabel: 'Введите ваш номер телефона',
messageInputPlaceholder: 'Ваш запрос',
// Buttons
sendButton: 'Отправить',
callbackRequestButton: 'Запрос обратного звонка',
// Quick replies
extendPolicyQuestion: 'Как продлить полис?',
findContractNumberQuestion: 'Где найти номер договора?',
submitClaimQuestion: 'Как подать заявление на страховой случай?',
// Callback modal
callbackModalTitle: 'Закажите обратный звонок',
callbackModalSubtitle: 'Оставьте свой номер телефона, и наш специалист свяжется с вами в ближайшее время',
callbackPhoneInputLabel: 'Введите номер телефона',
dataPrivacyMessage: 'Мы не передаём ваши данные третьим лицам',
dataProcessingConsent: 'Согласен(а) с обработкой персональных данных',
backButton: 'Назад',
requestCallButton: 'Заказать звонок',
// Messages
callbackConfirmation: 'Спасибо за запрос! Наш специалист свяжется с вами по номеру {phone} в ближайшее время.',
errorLoadingMessages: 'Не удалось загрузить историю сообщений. Пожалуйста, попробуйте еще раз позже.',
errorCreatingChat: 'Произошла ошибка при создании чата. Пожалуйста, попробуйте еще раз позже.',
errorSendingMessage: 'Извините, произошла ошибка при отправке сообщения. Пожалуйста, попробуйте еще раз позже.',
threadNotFoundMessage: 'Ваш чат был завершен или не найден. Начинаем новый чат.',
// Date formatting
months: [
'Январь',
'Февраль',
'Март',
'Апрель',
'Май',
'Июнь',
'Июль',
'Август',
'Сентябрь',
'Октябрь',
'Ноябрь',
'Декабрь',
],
};
export const oz: Translations = {
// Header
chatbotTitle: 'AI suhbat boti',
chatbotSubtitle: 'Bizning AI-botimiz sizga 24/7 yordam berishga tayyor',
// Welcome message
welcomeGreeting: 'Assalomu alaykum! 👋',
welcomeMessage:
"Men Ali, Euroasia Insurance'dan sizning virtual yordamchingizman. Sug'urta olamida yo'l ko'rsatish, kerakli polisni tanlash yoki har qanday savollaringizga javob berishga tayyorman. Bemalol murojaat qiling! Bugun sizga qanday yordam bera olaman?",
phoneRequestMessage:
'Boshlash uchun, iltimos, telefon raqamingizni kiriting — biz undan aloqa va murojaat tarixini saqlash uchun foydalanamiz.',
// Input placeholders
phoneInputPlaceholder: '+ 998 (__) ___ __ __',
phoneInputLabel: 'Telefon raqamingizni kiriting',
messageInputPlaceholder: 'Sizning so\'rovingiz',
// Buttons
sendButton: 'Yuborish',
callbackRequestButton: "Qayta qo'ng'iroq so'rovi",
// Quick replies
extendPolicyQuestion: 'Polisni qanday uzaytirish mumkin?',
findContractNumberQuestion: 'Shartnoma raqamini qayerdan topish mumkin?',
submitClaimQuestion: "Sug'urta hodisasi bo'yicha arizani qanday topshirish kerak?",
// Callback modal
callbackModalTitle: "Qayta qo'ng'iroq buyurtma qiling",
callbackModalSubtitle:
"Telefon raqamingizni qoldiring, va bizning mutaxassisimiz siz bilan yaqin vaqt ichida bog'lanadi",
callbackPhoneInputLabel: 'Telefon raqamini kiriting',
dataPrivacyMessage: "Biz sizning ma'lumotlaringizni uchinchi shaxslarga bermaydi",
dataProcessingConsent: "Shaxsiy ma'lumotlarni qayta ishlashga roziman",
backButton: 'Orqaga',
requestCallButton: "Qo'ng'iroq buyurtma qilish",
// Messages
callbackConfirmation:
"So'rov uchun rahmat! Mutaxassisimiz {phone} raqami orqali siz bilan yaqin vaqt ichida bog'lanadi.",
errorLoadingMessages: "Xabarlar tarixini yuklab bo'lmadi. Iltimos, keyinroq qayta urinib ko'ring.",
errorCreatingChat: "Chat yaratishda xatolik yuz berdi. Iltimos, keyinroq qayta urinib ko'ring.",
errorSendingMessage: "Kechirasiz, xabar yuborishda xatolik yuz berdi. Iltimos, keyinroq qayta urinib ko'ring.",
threadNotFoundMessage: 'Sizning chatingiz tugatilgan yoki topilmadi. Yangi chat boshlaymiz.',
// Date formatting
months: [
'Yanvar',
'Fevral',
'Mart',
'Aprel',
'May',
'Iyun',
'Iyul',
'Avgust',
'Sentabr',
'Oktabr',
'Noyabr',
'Dekabr',
],
};
export const uz: Translations = {
// Header
chatbotTitle: 'AI суҳбат боти',
chatbotSubtitle: 'Бизнинг AI-ботимиз сизга 24/7 ёрдам беришга тайёр',
// Welcome message
welcomeGreeting: 'Ассалому алайкум! 👋',
welcomeMessage:
'Мен Али, Euroasia Insurance\'дан сизнинг виртуал ёрдамчингизман. Суғурта оламида йўл кўрсатиш, керакли полисни танлаш ёки ҳар қандай саволларингизга жавоб беришга тайёрман. Бемалол мурожаат қилинг! Бугун сизга қандай ёрдам бера оламан?',
phoneRequestMessage:
'Бошлаш учун, илтимос, телефон рақамингизни киритинг — биз ундан алоқа ва мурожаат тарихини сақлаш учун фойдаланамиз.',
// Input placeholders
phoneInputPlaceholder: '+ 998 (__) ___ __ __',
phoneInputLabel: 'Телефон рақамингизни киритинг',
messageInputPlaceholder: 'Сизнинг сўровингиз',
// Buttons
sendButton: 'Юбориш',
callbackRequestButton: 'Қайта қўнғироқ сўрови',
// Quick replies
extendPolicyQuestion: 'Полисни қандай узайтириш мумкин?',
findContractNumberQuestion: 'Шартнома рақамини қаердан топиш мумкин?',
submitClaimQuestion: 'Суғурта ҳодисаси бўйича аризани қандай топшириш керак?',
// Callback modal
callbackModalTitle: 'Қайта қўнғироқ буюртма қилинг',
callbackModalSubtitle:
'Телефон рақамингизни қолдиринг, ва бизнинг мутахассисимиз сиз билан яқин вақт ичида боғланади',
callbackPhoneInputLabel: 'Телефон рақамини киритинг',
dataPrivacyMessage: 'Биз сизнинг маълумотларингизни учинчи шахсларга бермайди',
dataProcessingConsent: 'Шахсий маълумотларни қайта ишлашга розиман',
backButton: 'Орқага',
requestCallButton: 'Қўнғироқ буюртма қилиш',
// Messages
callbackConfirmation: 'Сўров учун раҳмат! Мутахассисимиз {phone} рақами орқали сиз билан яқин вақт ичида боғланади.',
errorLoadingMessages: 'Хабарлар тарихини юклаб бўлмади. Илтимос, кейинроқ қайта уриниб кўринг.',
errorCreatingChat: 'Чат яратишда хатолик юз берди. Илтимос, кейинроқ қайта уриниб кўринг.',
errorSendingMessage: 'Кечирасиз, хабар юборишда хатолик юз берди. Илтимос, кейинроқ қайта уриниб кўринг.',
threadNotFoundMessage: 'Сизнинг чатингиз тугатилган ёки топилмади. Янги чат бошлаймиз.',
// Date formatting
months: [
'Январь',
'Февраль',
'Март',
'Апрель',
'Май',
'Июнь',
'Июль',
'Август',
'Сентябрь',
'Октябрь',
'Ноябрь',
'Декабрь',
],
};
export const en: Translations = {
// Header
chatbotTitle: 'AI chat bot',
chatbotSubtitle: 'Our AI bot is ready to help you 24/7',
// Welcome message
welcomeGreeting: 'Hi there! 👋',
welcomeMessage: "I'm Ally, your virtual assistant from Euroasia Insurance. I'm ready to help you navigate the world of insurance, pick the right policy, or answer any questions you have. Feel free to ask! How can I help you today?",
phoneRequestMessage:
'To get started, please enter your phone number — we use it for communication and to save your request history.',
// Input placeholders
phoneInputPlaceholder: '+ 998 (__) ___ __ __',
phoneInputLabel: 'Enter your phone number',
messageInputPlaceholder: 'Your request',
// Buttons
sendButton: 'Send',
callbackRequestButton: 'Request a callback',
// Quick replies
extendPolicyQuestion: 'How to extend my policy?',
findContractNumberQuestion: 'Where to find my contract number?',
submitClaimQuestion: 'How to submit an insurance claim?',
// Callback modal
callbackModalTitle: 'Request a callback',
callbackModalSubtitle: 'Leave your phone number, and our specialist will contact you shortly',
callbackPhoneInputLabel: 'Enter phone number',
dataPrivacyMessage: "We don't share your data with third parties",
dataProcessingConsent: 'I agree to the processing of personal data',
backButton: 'Back',
requestCallButton: 'Request call',
// Messages
callbackConfirmation: 'Thank you for your request! Our specialist will contact you at {phone} shortly.',
errorLoadingMessages: 'Failed to load message history. Please try again later.',
errorCreatingChat: 'An error occurred while creating the chat. Please try again later.',
errorSendingMessage: 'Sorry, an error occurred while sending the message. Please try again later.',
threadNotFoundMessage: 'Your chat has been ended or not found. Starting a new chat.',
// Date formatting
months: [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December',
],
};
export const translations: Record<string, Translations> = {
ru,
oz,
uz,
en,
};
export function getTranslations(locale: string): Translations {
return translations[locale] || en;
}