i18n 적용
CI / test (push) Failing after 11m12s
CI / e2e (push) Has been cancelled
CI / pr_and_merge (push) Has been cancelled

This commit is contained in:
2025-12-10 15:56:51 +09:00
parent 73e9bc6a1c
commit f71207aeb5
127 changed files with 7346 additions and 2079 deletions
@@ -0,0 +1,301 @@
import type { AppLocale } from "../locale";
import { DEFAULT_LOCALE } from "../locale";
export type EditorSectionPanelMessages = {
backgroundColorLabel: string;
backgroundColorPickerAria: string;
backgroundColorHexAria: string;
backgroundImageSourceLabel: string;
backgroundImageSourceAria: string;
backgroundImageSourceOptionNone: string;
backgroundImageSourceOptionUrl: string;
backgroundImageSourceOptionUpload: string;
backgroundImageUrlLabel: string;
backgroundImageUrlAria: string;
backgroundImageUploadLabel: string;
backgroundImageUploadAria: string;
backgroundImagePositionModeLabel: string;
backgroundImagePositionModeAria: string;
backgroundImagePositionModeOptionPreset: string;
backgroundImagePositionModeOptionCustom: string;
backgroundImageSizeLabel: string;
backgroundImageSizeAria: string;
backgroundImagePositionLabel: string;
backgroundImagePositionAria: string;
backgroundImagePositionOptionCenter: string;
backgroundImagePositionOptionTop: string;
backgroundImagePositionOptionBottom: string;
backgroundImagePositionOptionLeft: string;
backgroundImagePositionOptionRight: string;
backgroundImagePositionXLabel: string;
backgroundImagePositionYLabel: string;
backgroundImageRepeatLabel: string;
backgroundImageRepeatAria: string;
backgroundImageRepeatOptionNone: string;
backgroundImageRepeatOptionBoth: string;
backgroundImageRepeatOptionX: string;
backgroundImageRepeatOptionY: string;
backgroundVideoSourceLabel: string;
backgroundVideoSourceAria: string;
backgroundVideoSourceOptionNone: string;
backgroundVideoSourceOptionUrl: string;
backgroundVideoSourceOptionUpload: string;
backgroundVideoUrlLabel: string;
backgroundVideoUrlAria: string;
backgroundVideoUploadLabel: string;
backgroundVideoUploadAria: string;
paddingYLabel: string;
paddingYUnitLabel: string;
paddingYPresetExtraTight: string;
paddingYPresetTight: string;
paddingYPresetNormal: string;
paddingYPresetRelaxed: string;
paddingYPresetExtraRelaxed: string;
layoutSectionTitle: string;
columnLayoutLabel: string;
columnLayoutAria: string;
columnLayoutOptionOneFull: string;
columnLayoutOptionTwoEqual: string;
columnLayoutOptionTwoOneTwo: string;
columnLayoutOptionTwoTwoOne: string;
columnLayoutOptionThreeEqual: string;
columnLayoutOptionCustom: string;
maxWidthLabel: string;
maxWidthUnitLabel: string;
maxWidthPresetExtraNarrow: string;
maxWidthPresetNarrow: string;
maxWidthPresetNormal: string;
maxWidthPresetWide: string;
maxWidthPresetExtraWide: string;
gapXLabel: string;
gapXUnitLabel: string;
gapXPresetZero: string;
gapXPresetTight: string;
gapXPresetNormal: string;
gapXPresetRelaxed: string;
gapXPresetExtraRelaxed: string;
gapXPresetMax: string;
alignItemsLabel: string;
alignItemsAria: string;
alignItemsOptionTop: string;
alignItemsOptionCenter: string;
alignItemsOptionBottom: string;
};
const EDITOR_SECTION_PANEL_MESSAGES: Record<AppLocale, EditorSectionPanelMessages> = {
en: {
backgroundColorLabel: "Background color",
backgroundColorPickerAria: "Section background color picker",
backgroundColorHexAria: "Section background color HEX",
backgroundImageSourceLabel: "Background image source",
backgroundImageSourceAria: "Background image source",
backgroundImageSourceOptionNone: "None",
backgroundImageSourceOptionUrl: "URL",
backgroundImageSourceOptionUpload: "File upload",
backgroundImageUrlLabel: "Background image URL",
backgroundImageUrlAria: "Background image URL",
backgroundImageUploadLabel: "Background image file upload",
backgroundImageUploadAria: "Background image file upload",
backgroundImagePositionModeLabel: "Background image position mode",
backgroundImagePositionModeAria: "Background image position mode",
backgroundImagePositionModeOptionPreset: "Preset",
backgroundImagePositionModeOptionCustom: "Custom (X/Y)",
backgroundImageSizeLabel: "Background image size",
backgroundImageSizeAria: "Background image size",
backgroundImagePositionLabel: "Background image position",
backgroundImagePositionAria: "Background image position",
backgroundImagePositionOptionCenter: "Center",
backgroundImagePositionOptionTop: "Top",
backgroundImagePositionOptionBottom: "Bottom",
backgroundImagePositionOptionLeft: "Left",
backgroundImagePositionOptionRight: "Right",
backgroundImagePositionXLabel: "Background image horizontal position",
backgroundImagePositionYLabel: "Background image vertical position",
backgroundImageRepeatLabel: "Background image repeat",
backgroundImageRepeatAria: "Background image repeat",
backgroundImageRepeatOptionNone: "No repeat",
backgroundImageRepeatOptionBoth: "Repeat (x/y)",
backgroundImageRepeatOptionX: "Repeat horizontally",
backgroundImageRepeatOptionY: "Repeat vertically",
backgroundVideoSourceLabel: "Background video source",
backgroundVideoSourceAria: "Background video source",
backgroundVideoSourceOptionNone: "None",
backgroundVideoSourceOptionUrl: "URL",
backgroundVideoSourceOptionUpload: "File upload",
backgroundVideoUrlLabel: "Background video URL",
backgroundVideoUrlAria: "Background video URL",
backgroundVideoUploadLabel: "Background video file upload",
backgroundVideoUploadAria: "Background video file upload",
paddingYLabel: "Vertical padding",
paddingYUnitLabel: "(px)",
paddingYPresetExtraTight: "Very tight",
paddingYPresetTight: "Tight",
paddingYPresetNormal: "Normal",
paddingYPresetRelaxed: "Wide",
paddingYPresetExtraRelaxed: "Very wide",
layoutSectionTitle: "Section layout",
columnLayoutLabel: "Section column layout",
columnLayoutAria: "Section column layout",
columnLayoutOptionOneFull: "1 column (1/1)",
columnLayoutOptionTwoEqual: "2 columns (1/2 - 1/2)",
columnLayoutOptionTwoOneTwo: "2 columns (1/3 - 2/3)",
columnLayoutOptionTwoTwoOne: "2 columns (2/3 - 1/3)",
columnLayoutOptionThreeEqual: "3 columns (1/3 - 1/3 - 1/3)",
columnLayoutOptionCustom: "Custom",
maxWidthLabel: "Max width (px)",
maxWidthUnitLabel: "(px)",
maxWidthPresetExtraNarrow: "Very narrow",
maxWidthPresetNarrow: "Narrow",
maxWidthPresetNormal: "Normal",
maxWidthPresetWide: "Wide",
maxWidthPresetExtraWide: "Very wide",
gapXLabel: "Column gap (px)",
gapXUnitLabel: "(px)",
gapXPresetZero: "0",
gapXPresetTight: "Tight",
gapXPresetNormal: "Normal",
gapXPresetRelaxed: "Wide",
gapXPresetExtraRelaxed: "Very wide",
gapXPresetMax: "Max",
alignItemsLabel: "Column vertical alignment",
alignItemsAria: "Section column vertical alignment",
alignItemsOptionTop: "Top",
alignItemsOptionCenter: "Center",
alignItemsOptionBottom: "Bottom",
},
ko: {
backgroundColorLabel: "배경 색상",
backgroundColorPickerAria: "섹션 배경 색상 선택",
backgroundColorHexAria: "섹션 배경 색상 HEX 입력",
backgroundImageSourceLabel: "배경 이미지 소스",
backgroundImageSourceAria: "배경 이미지 소스",
backgroundImageSourceOptionNone: "없음",
backgroundImageSourceOptionUrl: "URL",
backgroundImageSourceOptionUpload: "파일 업로드",
backgroundImageUrlLabel: "배경 이미지 URL",
backgroundImageUrlAria: "배경 이미지 URL",
backgroundImageUploadLabel: "배경 이미지 파일 업로드",
backgroundImageUploadAria: "배경 이미지 파일 업로드",
backgroundImagePositionModeLabel: "배경 이미지 위치 모드",
backgroundImagePositionModeAria: "배경 이미지 위치 모드",
backgroundImagePositionModeOptionPreset: "프리셋",
backgroundImagePositionModeOptionCustom: "커스텀 (X/Y)",
backgroundImageSizeLabel: "배경 이미지 크기",
backgroundImageSizeAria: "배경 이미지 크기",
backgroundImagePositionLabel: "배경 이미지 위치",
backgroundImagePositionAria: "배경 이미지 위치",
backgroundImagePositionOptionCenter: "가운데",
backgroundImagePositionOptionTop: "위",
backgroundImagePositionOptionBottom: "아래",
backgroundImagePositionOptionLeft: "왼쪽",
backgroundImagePositionOptionRight: "오른쪽",
backgroundImagePositionXLabel: "배경 이미지 가로 위치",
backgroundImagePositionYLabel: "배경 이미지 세로 위치",
backgroundImageRepeatLabel: "배경 이미지 반복",
backgroundImageRepeatAria: "배경 이미지 반복",
backgroundImageRepeatOptionNone: "반복 없음",
backgroundImageRepeatOptionBoth: "가로/세로 반복",
backgroundImageRepeatOptionX: "가로 반복",
backgroundImageRepeatOptionY: "세로 반복",
backgroundVideoSourceLabel: "배경 비디오 소스",
backgroundVideoSourceAria: "배경 비디오 소스",
backgroundVideoSourceOptionNone: "없음",
backgroundVideoSourceOptionUrl: "URL",
backgroundVideoSourceOptionUpload: "파일 업로드",
backgroundVideoUrlLabel: "배경 비디오 URL",
backgroundVideoUrlAria: "배경 비디오 URL",
backgroundVideoUploadLabel: "배경 비디오 파일 업로드",
backgroundVideoUploadAria: "배경 비디오 파일 업로드",
paddingYLabel: "세로 패딩",
paddingYUnitLabel: "(px)",
paddingYPresetExtraTight: "매우 좁게",
paddingYPresetTight: "좁게",
paddingYPresetNormal: "보통",
paddingYPresetRelaxed: "넓게",
paddingYPresetExtraRelaxed: "아주 넓게",
layoutSectionTitle: "섹션 레이아웃",
columnLayoutLabel: "섹션 컬럼 레이아웃",
columnLayoutAria: "섹션 컬럼 레이아웃",
columnLayoutOptionOneFull: "1열 (1/1)",
columnLayoutOptionTwoEqual: "2열 (1/2 - 1/2)",
columnLayoutOptionTwoOneTwo: "2열 (1/3 - 2/3)",
columnLayoutOptionTwoTwoOne: "2열 (2/3 - 1/3)",
columnLayoutOptionThreeEqual: "3열 (1/3 - 1/3 - 1/3)",
columnLayoutOptionCustom: "직접 조정",
maxWidthLabel: "최대 폭 (px)",
maxWidthUnitLabel: "(px)",
maxWidthPresetExtraNarrow: "매우 좁게",
maxWidthPresetNarrow: "좁게",
maxWidthPresetNormal: "보통",
maxWidthPresetWide: "넓게",
maxWidthPresetExtraWide: "아주 넓게",
gapXLabel: "컬럼 간 간격 (px)",
gapXUnitLabel: "(px)",
gapXPresetZero: "0",
gapXPresetTight: "좁게",
gapXPresetNormal: "보통",
gapXPresetRelaxed: "넓게",
gapXPresetExtraRelaxed: "아주 넓게",
gapXPresetMax: "최대",
alignItemsLabel: "컬럼 세로 정렬",
alignItemsAria: "섹션 컬럼 세로 정렬",
alignItemsOptionTop: "위",
alignItemsOptionCenter: "가운데",
alignItemsOptionBottom: "아래",
},
};
export function getEditorSectionPanelMessages(
locale: AppLocale | null | undefined,
): EditorSectionPanelMessages {
const key = (locale ?? DEFAULT_LOCALE) as AppLocale;
return EDITOR_SECTION_PANEL_MESSAGES[key] ?? EDITOR_SECTION_PANEL_MESSAGES[DEFAULT_LOCALE];
}