메인 콘텐츠로 건너뛰기
Sonamu는 Entity 정의에서 라벨을 자동으로 추출하여 sd.generated.ts에 포함시킵니다. 이를 통해 Entity 관련 텍스트를 별도로 딕셔너리에 작성할 필요가 없습니다.

자동 추출되는 항목

1. Entity 타이틀

Entity의 title 속성이 entity.{EntityId} 키로 추출됩니다:
// entity.json
{
  "id": "User",
  "title": "사용자",
  "table": "users",
  "props": [...]
}
// sd.generated.ts (자동 생성)
const entityLabels = {
  "entity.User": "사용자",
  // ...
};

// 사용
SD("entity.User")  // "사용자"

2. Prop 라벨

각 prop의 desc 속성이 entity.{EntityId}.{propName} 키로 추출됩니다:
// entity.json
{
  "id": "User",
  "props": [
    { "name": "id", "type": "integer", "desc": "ID" },
    { "name": "email", "type": "string", "desc": "이메일" },
    { "name": "username", "type": "string", "desc": "이름" },
    { "name": "created_at", "type": "datetime", "desc": "등록일시" }
  ]
}
// sd.generated.ts (자동 생성)
const entityLabels = {
  "entity.User": "USER",
  "entity.User.id": "ID",
  "entity.User.email": "이메일",
  "entity.User.username": "이름",
  "entity.User.created_at": "등록일시",
  // ...
};

// 사용
SD("entity.User.email")  // "이메일"

3. Enum 라벨

Entity에 정의된 enumLabelsenum.{EnumId}.{value} 키로 추출됩니다:
// entity.json
{
  "id": "User",
  "enums": {
    "UserRole": ["admin", "normal"]
  },
  "enumLabels": {
    "UserRole": {
      "admin": "관리자",
      "normal": "일반"
    }
  }
}
// sd.generated.ts (자동 생성)
const entityLabels = {
  "enum.UserRole.admin": "관리자",
  "enum.UserRole.normal": "일반",
  // ...
};

// 사용
SD("enum.UserRole.admin")  // "관리자"
SD.enumLabels("UserRole")["admin"]  // "관리자"

4. OrderBy / SearchField 라벨

ListParams에서 사용되는 enum들도 자동으로 추출됩니다:
// sd.generated.ts (자동 생성)
const entityLabels = {
  "enum.UserOrderBy.id-desc": "ID최신순",
  "enum.UserSearchField.id": "ID",
  "enum.UserSearchField.email": "이메일",
  // ...
};

Sonamu UI에서 라벨 편집

Sonamu UI의 Entity 편집 화면에서 직접 라벨을 수정할 수 있습니다:
  1. Entity 타이틀: Entity 상세 페이지에서 수정
  2. Prop 라벨: 각 prop의 desc 필드 수정
  3. Enum 라벨: Enum 편집 모달에서 수정
수정 후 저장하면 entity.json이 업데이트되고, pnpm syncsd.generated.ts에 반영됩니다.

다국어 Entity 라벨

Entity 라벨은 defaultLocale에만 저장됩니다. 다른 locale의 번역은 해당 locale의 딕셔너리 파일에 직접 작성합니다:
// en.ts
import { defineLocale } from "./sd.generated";

export default defineLocale({
  // Entity 라벨 번역
  "entity.User": "User",
  "entity.User.email": "Email",
  "entity.User.username": "Username",
  
  // Enum 라벨 번역
  "enum.UserRole.admin": "Administrator",
  "enum.UserRole.normal": "Normal User",
  
  // 나머지 프로젝트 딕셔너리
  "common.save": "Save",
  // ...
});

Excel로 일괄 번역

Sonamu UI의 i18n 관리 페이지에서 Entity 라벨을 포함한 모든 키를 Excel로 export하고, 번역 후 import할 수 있습니다.