diff --git a/frontend/components/admin/MenuFormModal.tsx b/frontend/components/admin/MenuFormModal.tsx index a2eb5ceb..be3c2132 100644 --- a/frontend/components/admin/MenuFormModal.tsx +++ b/frontend/components/admin/MenuFormModal.tsx @@ -10,7 +10,7 @@ import { Textarea } from "@/components/ui/textarea"; import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { toast } from "sonner"; -import { getMenuTextSync, MENU_MANAGEMENT_KEYS, setTranslationCache } from "@/lib/utils/multilang"; +import { MENU_MANAGEMENT_KEYS } from "@/lib/utils/multilang"; interface Company { company_code: string; @@ -27,6 +27,8 @@ interface MenuFormModalProps { menuType?: string; level?: number; parentCompanyCode?: string; + // 다국어 텍스트 props 추가 + uiTexts: Record; } export const MenuFormModal: React.FC = ({ @@ -38,6 +40,7 @@ export const MenuFormModal: React.FC = ({ menuType, level, parentCompanyCode, + uiTexts, }) => { console.log("🎯 MenuFormModal 렌더링 - Props:", { isOpen, @@ -48,6 +51,11 @@ export const MenuFormModal: React.FC = ({ parentCompanyCode, }); + // 다국어 텍스트 가져오기 함수 + const getText = (key: string, fallback?: string): string => { + return uiTexts[key] || fallback || key; + }; + console.log("🔍 MenuFormModal 컴포넌트 마운트됨"); const [formData, setFormData] = useState({ @@ -149,7 +157,7 @@ export const MenuFormModal: React.FC = ({ stack: error?.stack, response: error?.response, }); - toast.error(getMenuTextSync(MENU_MANAGEMENT_KEYS.MESSAGE_ERROR_LOAD_MENU_INFO)); + toast.error(getText(MENU_MANAGEMENT_KEYS.MESSAGE_ERROR_LOAD_MENU_INFO)); } finally { setLoading(false); } @@ -254,7 +262,7 @@ export const MenuFormModal: React.FC = ({ setCompanies(companyList); } catch (error) { console.error("회사 목록 로딩 오류:", error); - toast.error(getMenuTextSync(MENU_MANAGEMENT_KEYS.MESSAGE_ERROR_LOAD_COMPANY_LIST)); + toast.error(getText(MENU_MANAGEMENT_KEYS.MESSAGE_ERROR_LOAD_COMPANY_LIST)); } }; @@ -273,7 +281,7 @@ export const MenuFormModal: React.FC = ({ } } catch (error) { console.error("❌ 다국어 키 목록 로딩 오류:", error); - toast.error(getMenuTextSync(MENU_MANAGEMENT_KEYS.MESSAGE_ERROR_LOAD_LANG_KEY_LIST)); + toast.error(getText(MENU_MANAGEMENT_KEYS.MESSAGE_ERROR_LOAD_LANG_KEY_LIST)); setLangKeys([]); } }; @@ -282,12 +290,12 @@ export const MenuFormModal: React.FC = ({ e.preventDefault(); if (!formData.menuNameKor.trim()) { - toast.error(getMenuTextSync(MENU_MANAGEMENT_KEYS.MESSAGE_VALIDATION_MENU_NAME_REQUIRED)); + toast.error(getText(MENU_MANAGEMENT_KEYS.MESSAGE_VALIDATION_MENU_NAME_REQUIRED)); return; } if (!formData.companyCode) { - toast.error(getMenuTextSync(MENU_MANAGEMENT_KEYS.MESSAGE_VALIDATION_COMPANY_REQUIRED)); + toast.error(getText(MENU_MANAGEMENT_KEYS.MESSAGE_VALIDATION_COMPANY_REQUIRED)); return; } @@ -324,7 +332,7 @@ export const MenuFormModal: React.FC = ({ } } catch (error) { console.error("메뉴 저장/수정 실패:", error); - toast.error(getMenuTextSync(MENU_MANAGEMENT_KEYS.MESSAGE_MENU_SAVE_FAILED)); + toast.error(getText(MENU_MANAGEMENT_KEYS.MESSAGE_MENU_SAVE_FAILED)); } finally { setLoading(false); } @@ -356,68 +364,52 @@ export const MenuFormModal: React.FC = ({ {isEdit - ? getMenuTextSync(MENU_MANAGEMENT_KEYS.MODAL_MENU_MODIFY_TITLE, getCurrentUserLang()) - : getMenuTextSync(MENU_MANAGEMENT_KEYS.MODAL_MENU_REGISTER_TITLE, getCurrentUserLang())} + ? getText(MENU_MANAGEMENT_KEYS.MODAL_MENU_MODIFY_TITLE) + : getText(MENU_MANAGEMENT_KEYS.MODAL_MENU_REGISTER_TITLE)}
- +
- +
- + {!isEdit && level !== 1 && ( -

- {getMenuTextSync(MENU_MANAGEMENT_KEYS.FORM_COMPANY_SUBMENU_NOTE, getCurrentUserLang())} -

+

{getText(MENU_MANAGEMENT_KEYS.FORM_COMPANY_SUBMENU_NOTE)}

)}
- +
{selectedLangKeyInfo && (

- {getMenuTextSync(MENU_MANAGEMENT_KEYS.FORM_LANG_KEY_SELECTED, { - key: selectedLangKeyInfo.langKey, - description: selectedLangKeyInfo.description, - })} + {getText(MENU_MANAGEMENT_KEYS.FORM_LANG_KEY_SELECTED) + .replace("{key}", selectedLangKeyInfo.langKey) + .replace("{description}", selectedLangKeyInfo.description)}

)}
- + handleInputChange("menuNameKor", e.target.value)} - placeholder={getMenuTextSync(MENU_MANAGEMENT_KEYS.FORM_MENU_NAME_PLACEHOLDER, getCurrentUserLang())} + placeholder={getText(MENU_MANAGEMENT_KEYS.FORM_MENU_NAME_PLACEHOLDER)} required />
- + handleInputChange("menuUrl", e.target.value)} - placeholder={getMenuTextSync(MENU_MANAGEMENT_KEYS.FORM_MENU_URL_PLACEHOLDER, getCurrentUserLang())} + placeholder={getText(MENU_MANAGEMENT_KEYS.FORM_MENU_URL_PLACEHOLDER)} />
- +