영어버전도 나오게 추가

This commit is contained in:
2026-05-12 14:27:09 +09:00
parent 9835170cd7
commit 154db0ac27
4 changed files with 45 additions and 8 deletions

View File

@@ -1,6 +1,9 @@
package com.kamco.cd.training.common.utils; package com.kamco.cd.training.common.utils;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
public final class HeaderUtil { public final class HeaderUtil {
@@ -20,4 +23,20 @@ public final class HeaderUtil {
public static String getRequired(HttpServletRequest request, String headerName) { public static String getRequired(HttpServletRequest request, String headerName) {
return get(request, headerName); return get(request, headerName);
} }
public static boolean isEnglishRequest() {
RequestAttributes attrs = RequestContextHolder.getRequestAttributes();
if (!(attrs instanceof ServletRequestAttributes servletAttrs)) {
return false;
}
String acceptLanguage = servletAttrs.getRequest().getHeader("Accept-Language");
if (acceptLanguage == null || acceptLanguage.isBlank()) {
return false;
}
return acceptLanguage.toLowerCase().startsWith("en");
}
} }

View File

@@ -1,5 +1,6 @@
package com.kamco.cd.training.common.utils.enums; package com.kamco.cd.training.common.utils.enums;
import com.kamco.cd.training.common.utils.HeaderUtil;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@@ -31,10 +32,11 @@ public class Enums {
// enum -> CodeDto list // enum -> CodeDto list
public static List<CodeDto> toList(Class<? extends Enum<?>> enumClass) { public static List<CodeDto> toList(Class<? extends Enum<?>> enumClass) {
Object[] enums = enumClass.getEnumConstants(); Object[] enums = enumClass.getEnumConstants();
boolean english = HeaderUtil.isEnglishRequest();
return Arrays.stream(enums) return Arrays.stream(enums)
.map(e -> (EnumType) e) .map(e -> (EnumType) e)
.map(e -> new CodeDto(e.getId(), e.getText())) .map(e -> new CodeDto(e.getId(), english ? e.getId() : e.getText()))
.toList(); .toList();
} }

View File

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import com.kamco.cd.training.common.enums.LearnDataRegister; import com.kamco.cd.training.common.enums.LearnDataRegister;
import com.kamco.cd.training.common.enums.LearnDataType; import com.kamco.cd.training.common.enums.LearnDataType;
import com.kamco.cd.training.common.enums.ModelType; import com.kamco.cd.training.common.enums.ModelType;
import com.kamco.cd.training.common.utils.HeaderUtil;
import com.kamco.cd.training.common.utils.enums.Enums; import com.kamco.cd.training.common.utils.enums.Enums;
import com.kamco.cd.training.common.utils.interfaces.JsonFormatDttm; import com.kamco.cd.training.common.utils.interfaces.JsonFormatDttm;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
@@ -90,7 +91,8 @@ public class DatasetDto {
public String getStatus(String status) { public String getStatus(String status) {
LearnDataRegister type = Enums.fromId(LearnDataRegister.class, status); LearnDataRegister type = Enums.fromId(LearnDataRegister.class, status);
return type == null ? null : type.getText(); boolean english = HeaderUtil.isEnglishRequest();
return type == null ? null : (english ? type.getId() : type.getText());
} }
public String getYear() { public String getYear() {
@@ -99,7 +101,8 @@ public class DatasetDto {
public String getDataTypeName() { public String getDataTypeName() {
LearnDataType type = Enums.fromId(LearnDataType.class, this.dataType); LearnDataType type = Enums.fromId(LearnDataType.class, this.dataType);
return type == null ? null : type.getText(); boolean english = HeaderUtil.isEnglishRequest();
return type == null ? null : (english ? type.getId() : type.getText());
} }
} }

View File

@@ -3,6 +3,7 @@ package com.kamco.cd.training.model.dto;
import com.kamco.cd.training.common.dto.HyperParam; import com.kamco.cd.training.common.dto.HyperParam;
import com.kamco.cd.training.common.enums.TrainStatusType; import com.kamco.cd.training.common.enums.TrainStatusType;
import com.kamco.cd.training.common.enums.TrainType; import com.kamco.cd.training.common.enums.TrainType;
import com.kamco.cd.training.common.utils.HeaderUtil;
import com.kamco.cd.training.common.utils.interfaces.JsonFormatDttm; import com.kamco.cd.training.common.utils.interfaces.JsonFormatDttm;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@@ -260,7 +261,9 @@ public class ModelTrainMngDto {
public String getStatusName() { public String getStatusName() {
if (this.statusCd == null || this.statusCd.isBlank()) return null; if (this.statusCd == null || this.statusCd.isBlank()) return null;
try { try {
return TrainStatusType.valueOf(this.statusCd).getText(); // 또는 getName() return HeaderUtil.isEnglishRequest()
? TrainStatusType.valueOf(this.statusCd).getId()
: TrainStatusType.valueOf(this.statusCd).getText(); // 또는 getName()
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
return this.statusCd; // 매핑 못하면 코드 그대로 반환(원하면 null 처리) return this.statusCd; // 매핑 못하면 코드 그대로 반환(원하면 null 처리)
} }
@@ -269,7 +272,9 @@ public class ModelTrainMngDto {
public String getStep1StatusName() { public String getStep1StatusName() {
if (this.step1Status == null || this.step1Status.isBlank()) return null; if (this.step1Status == null || this.step1Status.isBlank()) return null;
try { try {
return TrainStatusType.valueOf(this.step1Status).getText(); // 또는 getName() return HeaderUtil.isEnglishRequest()
? TrainStatusType.valueOf(this.step1Status).getId()
: TrainStatusType.valueOf(this.step1Status).getText(); // 또는 getName()
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
return this.step1Status; // 매핑 못하면 코드 그대로 반환(원하면 null 처리) return this.step1Status; // 매핑 못하면 코드 그대로 반환(원하면 null 처리)
} }
@@ -278,7 +283,9 @@ public class ModelTrainMngDto {
public String getStep2StatusName() { public String getStep2StatusName() {
if (this.step2Status == null || this.step2Status.isBlank()) return null; if (this.step2Status == null || this.step2Status.isBlank()) return null;
try { try {
return TrainStatusType.valueOf(this.step2Status).getText(); // 또는 getName() return HeaderUtil.isEnglishRequest()
? TrainStatusType.valueOf(this.step2Status).getId()
: TrainStatusType.valueOf(this.step2Status).getText(); // 또는 getName()
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
return this.step2Status; // 매핑 못하면 코드 그대로 반환(원하면 null 처리) return this.step2Status; // 매핑 못하면 코드 그대로 반환(원하면 null 처리)
} }
@@ -287,7 +294,9 @@ public class ModelTrainMngDto {
public String getTrainTypeName() { public String getTrainTypeName() {
if (this.trainType == null || this.trainType.isBlank()) return null; if (this.trainType == null || this.trainType.isBlank()) return null;
try { try {
return TrainType.valueOf(this.trainType).getText(); // 또는 getName() return HeaderUtil.isEnglishRequest()
? TrainType.valueOf(this.trainType).getId()
: TrainType.valueOf(this.trainType).getText(); // 또는 getName()
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
return this.trainType; // 매핑 못하면 코드 그대로 반환(원하면 null 처리) return this.trainType; // 매핑 못하면 코드 그대로 반환(원하면 null 처리)
} }
@@ -304,8 +313,12 @@ public class ModelTrainMngDto {
long minutes = (totalSeconds % 3600) / 60; long minutes = (totalSeconds % 3600) / 60;
long seconds = totalSeconds % 60; long seconds = totalSeconds % 60;
if (HeaderUtil.isEnglishRequest()) {
return String.format("%dh %dm %ds", hours, minutes, seconds);
} else {
return String.format("%d시간 %d분 %d초", hours, minutes, seconds); return String.format("%d시간 %d분 %d초", hours, minutes, seconds);
} }
}
public String getStep1Duration() { public String getStep1Duration() {
return formatDuration(this.step1StrtDttm, this.step1EndDttm); return formatDuration(this.step1StrtDttm, this.step1EndDttm);