Skip to main content
Sonamu automatically extracts labels from Entity definitions and includes them in sd.generated.ts. This eliminates the need to manually write Entity-related text in the dictionary.

Auto-extracted Items

1. Entity Title

The Entityโ€™s title property is extracted as the entity.{EntityId} key:
// entity.json
{
  "id": "User",
  "title": "์‚ฌ์šฉ์ž",
  "table": "users",
  "props": [...]
}
// sd.generated.ts (auto-generated)
const entityLabels = {
  "entity.User": "์‚ฌ์šฉ์ž",
  // ...
};

// Usage
SD("entity.User"); // "์‚ฌ์šฉ์ž"

2. Prop Labels

Each propโ€™s desc property is extracted as the entity.{EntityId}.{propName} key:
// 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 (auto-generated)
const entityLabels = {
  "entity.User": "USER",
  "entity.User.id": "ID",
  "entity.User.email": "์ด๋ฉ”์ผ",
  "entity.User.username": "์ด๋ฆ„",
  "entity.User.created_at": "๋“ฑ๋ก์ผ์‹œ",
  // ...
};

// Usage
SD("entity.User.email"); // "์ด๋ฉ”์ผ"

3. Enum Labels

enumLabels defined in the Entity are extracted as enum.{EnumId}.{value} keys:
// entity.json
{
  "id": "User",
  "enums": {
    "UserRole": ["admin", "normal"]
  },
  "enumLabels": {
    "UserRole": {
      "admin": "๊ด€๋ฆฌ์ž",
      "normal": "์ผ๋ฐ˜"
    }
  }
}
// sd.generated.ts (auto-generated)
const entityLabels = {
  "enum.UserRole.admin": "๊ด€๋ฆฌ์ž",
  "enum.UserRole.normal": "์ผ๋ฐ˜",
  // ...
};

// Usage
SD("enum.UserRole.admin"); // "๊ด€๋ฆฌ์ž"
SD.enumLabels("UserRole")["admin"]; // "๊ด€๋ฆฌ์ž"

4. OrderBy / SearchField Labels

Enums used in ListParams are also automatically extracted:
// sd.generated.ts (auto-generated)
const entityLabels = {
  "enum.UserOrderBy.id-desc": "ID์ตœ์‹ ์ˆœ",
  "enum.UserSearchField.id": "ID",
  "enum.UserSearchField.email": "์ด๋ฉ”์ผ",
  // ...
};

Editing Labels in Sonamu UI

You can directly edit labels in Sonamu UIโ€™s Entity edit screen:
  1. Entity Title: Edit on the Entity detail page
  2. Prop Labels: Edit each propโ€™s desc field
  3. Enum Labels: Edit in the Enum edit modal
After saving, entity.json is updated, and it will be reflected in sd.generated.ts upon pnpm sync.

Multilingual Entity Labels

Entity labels are stored only in defaultLocale. Translations for other locales should be written directly in the respective localeโ€™s dictionary file:
// en.ts
import { defineLocale } from "./sd.generated";

export default defineLocale({
  // Entity label translations
  "entity.User": "User",
  "entity.User.email": "Email",
  "entity.User.username": "Username",

  // Enum label translations
  "enum.UserRole.admin": "Administrator",
  "enum.UserRole.normal": "Normal User",

  // Rest of project dictionary
  "common.save": "Save",
  // ...
});

Bulk Translation via Excel

You can export all keys including Entity labels as Excel from Sonamu UIโ€™s i18n management page, translate them, and import back.

Excel Import/Export

Bulk translation file management

Using the SD Function

Writing and using dictionaries