UNPKG

@restnfeel/agentc-starter-kit

Version:

한국어 기업용 CMS 모듈 - Task Master AI와 함께 빠르게 웹사이트를 구현할 수 있는 재사용 가능한 컴포넌트 시스템

79 lines (68 loc) 2.23 kB
/** * @fileoverview Internationalization hook * @module hooks/useI18n */ import { useCallback, useState } from "react"; export type SupportedLanguage = "en" | "ko" | "ja" | "zh"; export interface UseI18nReturn { language: SupportedLanguage; setLanguage: (language: SupportedLanguage) => void; t: (key: string, params?: Record<string, string>) => string; isRTL: boolean; } const translations: Record<SupportedLanguage, Record<string, string>> = { en: { "chatbot.welcome": "Welcome! How can I help you today?", "chatbot.placeholder": "Type your message...", "chatbot.send": "Send", "chatbot.upload": "Upload", "chatbot.error": "Something went wrong", "chatbot.retry": "Retry", }, ko: { "chatbot.welcome": "안녕하세요! 무엇을 도와드릴까요?", "chatbot.placeholder": "메시지를 입력하세요...", "chatbot.send": "전송", "chatbot.upload": "업로드", "chatbot.error": "오류가 발생했습니다", "chatbot.retry": "다시 시도", }, ja: { "chatbot.welcome": "こんにちは!何をお手伝いできますか?", "chatbot.placeholder": "メッセージを入力してください...", "chatbot.send": "送信", "chatbot.upload": "アップロード", "chatbot.error": "エラーが発生しました", "chatbot.retry": "再試行", }, zh: { "chatbot.welcome": "您好!我可以为您做些什么?", "chatbot.placeholder": "输入您的消息...", "chatbot.send": "发送", "chatbot.upload": "上传", "chatbot.error": "出现错误", "chatbot.retry": "重试", }, }; export function useI18n(): UseI18nReturn { const [language, setLanguage] = useState<SupportedLanguage>("en"); const t = useCallback( (key: string, params?: Record<string, string>): string => { let text = translations[language][key] || key; if (params) { Object.entries(params).forEach(([param, value]) => { text = text.replace(`{{${param}}}`, value); }); } return text; }, [language] ); const isRTL = false; // RTL languages not supported in current language set return { language, setLanguage, t, isRTL, }; }