@restnfeel/agentc-starter-kit
Version:
한국어 기업용 CMS 모듈 - Task Master AI와 함께 빠르게 웹사이트를 구현할 수 있는 재사용 가능한 컴포넌트 시스템
203 lines (201 loc) • 8.17 kB
JavaScript
// Language definitions
const translations = {
ko: {
chatbot: "챗봇",
minimize: "최소화",
maximize: "최대화",
close: "닫기",
send: "전송",
typing: "입력 중...",
placeholder: "메시지를 입력하세요...",
offline: "오프라인",
connecting: "연결 중...",
connected: "연결됨",
retry: "다시 시도",
welcomeTitle: "안녕하세요! 👋",
welcomeMessage: "궁금한 것이 있으시면 언제든지 물어보세요. 아래 추천 질문을 클릭하거나 직접 메시지를 입력해주세요.",
suggestedQuestions: "추천 질문",
noSuggestedQuestions: "현재 추천 질문이 없습니다.",
errorGeneric: "오류가 발생했습니다. 다시 시도해주세요.",
errorNetwork: "네트워크 연결을 확인해주세요.",
errorTimeout: "요청 시간이 초과되었습니다.",
helpful: "도움이 되었나요?",
notHelpful: "도움이 안 되었나요?",
feedbackThanks: "피드백 감사합니다!",
messageDelivered: "메시지가 전송되었습니다",
messageFailed: "메시지 전송에 실패했습니다",
openChat: "채팅창 열기",
closeChat: "채팅창 닫기",
sendMessage: "메시지 보내기",
messageFromUser: "사용자 메시지",
messageFromBot: "봇 메시지",
},
en: {
chatbot: "Chatbot",
minimize: "Minimize",
maximize: "Maximize",
close: "Close",
send: "Send",
typing: "Typing...",
placeholder: "Type your message...",
offline: "Offline",
connecting: "Connecting...",
connected: "Connected",
retry: "Retry",
welcomeTitle: "Hello! 👋",
welcomeMessage: "Feel free to ask me anything. You can click on the suggested questions below or type your own message.",
suggestedQuestions: "Suggested Questions",
noSuggestedQuestions: "No suggested questions available.",
errorGeneric: "An error occurred. Please try again.",
errorNetwork: "Please check your network connection.",
errorTimeout: "Request timed out.",
helpful: "Was this helpful?",
notHelpful: "Not helpful?",
feedbackThanks: "Thank you for your feedback!",
messageDelivered: "Message delivered",
messageFailed: "Message failed to send",
openChat: "Open chat",
closeChat: "Close chat",
sendMessage: "Send message",
messageFromUser: "User message",
messageFromBot: "Bot message",
},
ja: {
chatbot: "チャットボット",
minimize: "最小化",
maximize: "最大化",
close: "閉じる",
send: "送信",
typing: "入力中...",
placeholder: "メッセージを入力してください...",
offline: "オフライン",
connecting: "接続中...",
connected: "接続済み",
retry: "再試行",
welcomeTitle: "こんにちは! 👋",
welcomeMessage: "何でもお気軽にお聞きください。下の推奨質問をクリックするか、直接メッセージを入力してください。",
suggestedQuestions: "推奨質問",
noSuggestedQuestions: "推奨質問はありません。",
errorGeneric: "エラーが発生しました。もう一度お試しください。",
errorNetwork: "ネットワーク接続をご確認ください。",
errorTimeout: "リクエストがタイムアウトしました。",
helpful: "お役に立ちましたか?",
notHelpful: "お役に立ちませんでしたか?",
feedbackThanks: "フィードバックありがとうございます!",
messageDelivered: "メッセージが送信されました",
messageFailed: "メッセージの送信に失敗しました",
openChat: "チャットを開く",
closeChat: "チャットを閉じる",
sendMessage: "メッセージを送信",
messageFromUser: "ユーザーメッセージ",
messageFromBot: "ボットメッセージ",
},
ar: {
chatbot: "الدردشة الآلية",
minimize: "تصغير",
maximize: "تكبير",
close: "إغلاق",
send: "إرسال",
typing: "جاري الكتابة...",
placeholder: "اكتب رسالتك...",
offline: "غير متصل",
connecting: "جاري الاتصال...",
connected: "متصل",
retry: "إعادة المحاولة",
welcomeTitle: "مرحباً! 👋",
welcomeMessage: "لا تتردد في سؤالي أي شيء. يمكنك النقر على الأسئلة المقترحة أدناه أو كتابة رسالتك الخاصة.",
suggestedQuestions: "أسئلة مقترحة",
noSuggestedQuestions: "لا توجد أسئلة مقترحة متاحة.",
errorGeneric: "حدث خطأ. يرجى المحاولة مرة أخرى.",
errorNetwork: "يرجى التحقق من اتصال الشبكة.",
errorTimeout: "انتهت مهلة الطلب.",
helpful: "هل كان هذا مفيداً؟",
notHelpful: "غير مفيد؟",
feedbackThanks: "شكراً لك على ملاحظاتك!",
messageDelivered: "تم تسليم الرسالة",
messageFailed: "فشل في إرسال الرسالة",
openChat: "فتح الدردشة",
closeChat: "إغلاق الدردشة",
sendMessage: "إرسال رسالة",
messageFromUser: "رسالة المستخدم",
messageFromBot: "رسالة البوت",
},
};
const languages = {
ko: {
code: "ko",
name: "Korean",
nativeName: "한국어",
direction: "ltr",
flag: "🇰🇷",
},
en: {
code: "en",
name: "English",
nativeName: "English",
direction: "ltr",
flag: "🇺🇸",
},
ja: {
code: "ja",
name: "Japanese",
nativeName: "日本語",
direction: "ltr",
flag: "🇯🇵",
},
ar: {
code: "ar",
name: "Arabic",
nativeName: "العربية",
direction: "rtl",
flag: "🇸🇦",
},
};
// Default language
const DEFAULT_LANGUAGE = "en";
// Browser language detection
function detectBrowserLanguage() {
if (typeof window === "undefined")
return DEFAULT_LANGUAGE;
const browserLang = navigator.language.slice(0, 2);
return Object.keys(translations).includes(browserLang)
? browserLang
: DEFAULT_LANGUAGE;
}
// Translation helper function
function t(key, lang) {
var _a;
return (((_a = translations[lang]) === null || _a === void 0 ? void 0 : _a[key]) || translations[DEFAULT_LANGUAGE][key] || key);
}
// RTL languages check
function isRTL(language) {
var _a;
return ((_a = languages[language]) === null || _a === void 0 ? void 0 : _a.direction) === "rtl";
}
// Text length adjustment for different languages
function adjustTextLength(text, language) {
// Different languages have different character densities
const languageMultipliers = {
ko: 0.8, // Korean characters are typically wider
en: 1.0, // English baseline
ja: 0.7, // Japanese characters can be very wide
ar: 1.2, // Arabic can be more compact
};
const baseMaxLength = 50;
const multiplier = languageMultipliers[language] || 1.0;
const adjustedMaxLength = Math.floor(baseMaxLength * multiplier);
if (text.length <= adjustedMaxLength) {
return {
isTruncated: false,
displayText: text,
maxLength: adjustedMaxLength,
};
}
return {
isTruncated: true,
displayText: text.slice(0, adjustedMaxLength - 3) + "...",
maxLength: adjustedMaxLength,
};
}
export { DEFAULT_LANGUAGE, adjustTextLength, detectBrowserLanguage, isRTL, languages, t, translations };
//# sourceMappingURL=i18n-config.js.map