/** * DOLCE 코드 값 번역 유틸리티 * * 코드 값을 다국어로 번역하고, 검색 시 번역된 텍스트도 매칭할 수 있도록 지원 */ // B3 DrawingUsage 번역 export function translateB3DrawingUsage(code: string, lng: string): string { const translations: Record> = { "Approval": { ko: "승인용", en: "Approval", }, "Working": { ko: "작업용", en: "Working", }, "APP": { ko: "승인용", en: "Approval", }, "WOR": { ko: "작업용", en: "Working", }, }; return translations[code]?.[lng] || code; } // B3 RegisterKind 번역 export function translateB3RegisterKind(code: string, lng: string): string { const translations: Record> = { "APPR": { ko: "승인 제출용 도면(Full)", en: "For Approval(Full)", }, "APPP": { ko: "승인 제출용 도면(Partial)", en: "For Approval(Partial)", }, "WORK": { ko: "작업용 입수도면(Full)", en: "For Working(Full)", }, "WORP": { ko: "작업용 입수도면(Partial)", en: "For Working(Partial)", }, }; return translations[code]?.[lng] || code; } // B4 DrawingUsage 번역 export function translateB4DrawingUsage(code: string, lng: string): string { const translations: Record> = { "REC": { ko: "입수용", en: "GTT→SHI", }, "SUB": { ko: "제출용", en: "SHI→GTT", }, }; return translations[code]?.[lng] || code; } // B4 RegisterKind 번역 export function translateB4RegisterKind(code: string, lng: string): string { const translations: Record> = { "RECW": { ko: "Working 도면입수(GTT→SHI)", en: "Working Dwg(GTT→SHI)", }, "RECP": { ko: "Pre. 도면입수(GTT→SHI)", en: "Pre. Dwg(GTT→SHI)", }, "SUBW": { ko: "Working 제출용(SHI→GTT)", en: "Working Submission(SHI→GTT)", }, "SUBP": { ko: "Pre. 제출용(SHI→GTT)", en: "Pre. Submission(SHI→GTT)", }, }; return translations[code]?.[lng] || code; } // DrawingMoveGbn 번역 (B4 GTT) export function translateDrawingMoveGbn(code: string, lng: string): string { const translations: Record> = { "도면입수": { ko: "도면입수", en: "Receipt", }, "도면제출": { ko: "도면제출", en: "Submission", }, }; return translations[code]?.[lng] || code; } // 통합 번역 함수 export function translateDolceCode( codeType: "B3_DrawingUsage" | "B3_RegisterKind" | "B4_DrawingUsage" | "B4_RegisterKind" | "DrawingMoveGbn", code: string, lng: string ): string { switch (codeType) { case "B3_DrawingUsage": return translateB3DrawingUsage(code, lng); case "B3_RegisterKind": return translateB3RegisterKind(code, lng); case "B4_DrawingUsage": return translateB4DrawingUsage(code, lng); case "B4_RegisterKind": return translateB4RegisterKind(code, lng); case "DrawingMoveGbn": return translateDrawingMoveGbn(code, lng); default: return code; } } // 검색용: 코드와 번역된 텍스트 모두 매칭 export function matchesTranslatedCode( codeType: "B3_DrawingUsage" | "B3_RegisterKind" | "B4_DrawingUsage" | "B4_RegisterKind" | "DrawingMoveGbn", code: string, searchTerm: string, lng: string ): boolean { if (!searchTerm) return true; const normalizedSearch = searchTerm.toLowerCase(); // 원본 코드로 검색 if (code.toLowerCase().includes(normalizedSearch)) { return true; } // 번역된 텍스트로 검색 const translated = translateDolceCode(codeType, code, lng); if (translated.toLowerCase().includes(normalizedSearch)) { return true; } // 다른 언어의 번역도 검색 (한국어 사용자가 영어로 검색하는 경우) const otherLng = lng === "ko" ? "en" : "ko"; const otherTranslated = translateDolceCode(codeType, code, otherLng); if (otherTranslated.toLowerCase().includes(normalizedSearch)) { return true; } return false; } // 옵션 목록 생성 (Select 컴포넌트용) export function getB3DrawingUsageOptions(lng: string) { return [ { value: "APP", label: translateB3DrawingUsage("APP", lng) }, { value: "WOR", label: translateB3DrawingUsage("WOR", lng) }, ]; } export function getB3RegisterKindOptions(drawingUsage: string, lng: string) { if (drawingUsage === "APP") { return [ { value: "APPR", label: translateB3RegisterKind("APPR", lng) }, { value: "APPP", label: translateB3RegisterKind("APPP", lng) }, ]; } else if (drawingUsage === "WOR") { return [ { value: "WORK", label: translateB3RegisterKind("WORK", lng) }, { value: "WORP", label: translateB3RegisterKind("WORP", lng) }, ]; } return []; } export function getB4DrawingUsageOptions(lng: string) { return [ { value: "REC", label: translateB4DrawingUsage("REC", lng) }, ]; } export function getB4RegisterKindOptions(drawingUsage: string, lng: string) { if (drawingUsage === "REC") { return [ { value: "RECP", label: translateB4RegisterKind("RECP", lng) }, { value: "RECW", label: translateB4RegisterKind("RECW", lng) }, ]; } else if (drawingUsage === "SUB") { return [ { value: "SUBP", label: translateB4RegisterKind("SUBP", lng) }, { value: "SUBW", label: translateB4RegisterKind("SUBW", lng) }, ]; } return []; }