@akanjs/cli 0.0.142 → 0.0.144
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/cjs/index.js +2437 -3204
- package/cjs/src/guidelines/___library/sharedUiStructureDescription.en.md +786 -0
- package/cjs/src/guidelines/___library/utilUiStructureDescription.en.md +395 -0
- package/cjs/src/guidelines/___lint/lintRuleDescription.en.md +64 -0
- package/cjs/src/guidelines/___module/moduleStructureDescription.en.md +80 -0
- package/cjs/src/guidelines/componentRule/componentRule.instruction.md +732 -0
- package/cjs/src/guidelines/databaseModule/databaseModule.instruction.md +691 -0
- package/cjs/src/guidelines/enumConstant/enumConstant.instruction.md +232 -0
- package/cjs/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +611 -0
- package/cjs/src/guidelines/framework/framework.instruction.md +1112 -0
- package/cjs/src/guidelines/modelConstant/modelConstant.instruction.md +958 -0
- package/cjs/src/guidelines/modelDictionary/modelDictionary.instruction.md +583 -0
- package/cjs/src/guidelines/modelDocument/modelDocument.instruction.md +683 -0
- package/cjs/src/guidelines/modelService/modelService.instruction.md +935 -0
- package/cjs/src/guidelines/modelSignal/modelSignal.instruction.md +588 -0
- package/cjs/src/guidelines/modelStore/modelStore.instruction.md +591 -0
- package/cjs/src/guidelines/modelTemplate/modelTemplate.instruction.md +577 -0
- package/cjs/src/guidelines/modelUnit/modelUnit.instruction.md +833 -0
- package/cjs/src/guidelines/modelUtil/modelUtil.instruction.md +752 -0
- package/cjs/src/guidelines/modelView/modelView.instruction.md +1005 -0
- package/cjs/src/guidelines/modelZone/modelZone.instruction.md +528 -0
- package/cjs/src/guidelines/scalarConstant/scalarConstant.instruction.md +489 -0
- package/cjs/src/guidelines/scalarDictionary/scalarDictionary.instruction.md +347 -0
- package/cjs/src/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +318 -0
- package/cjs/src/guidelines/utilUiUsage/utilUiUsage.instruction.md +339 -0
- package/cjs/src/templates/module/__model__.dictionary.js +4 -5
- package/esm/index.js +2524 -3286
- package/esm/src/guidelines/___library/sharedUiStructureDescription.en.md +786 -0
- package/esm/src/guidelines/___library/utilUiStructureDescription.en.md +395 -0
- package/esm/src/guidelines/___lint/lintRuleDescription.en.md +64 -0
- package/esm/src/guidelines/___module/moduleStructureDescription.en.md +80 -0
- package/esm/src/guidelines/componentRule/componentRule.instruction.md +732 -0
- package/esm/src/guidelines/databaseModule/databaseModule.instruction.md +691 -0
- package/esm/src/guidelines/enumConstant/enumConstant.instruction.md +232 -0
- package/esm/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +611 -0
- package/esm/src/guidelines/framework/framework.instruction.md +1112 -0
- package/esm/src/guidelines/modelConstant/modelConstant.instruction.md +958 -0
- package/esm/src/guidelines/modelDictionary/modelDictionary.instruction.md +583 -0
- package/esm/src/guidelines/modelDocument/modelDocument.instruction.md +683 -0
- package/esm/src/guidelines/modelService/modelService.instruction.md +935 -0
- package/esm/src/guidelines/modelSignal/modelSignal.instruction.md +588 -0
- package/esm/src/guidelines/modelStore/modelStore.instruction.md +591 -0
- package/esm/src/guidelines/modelTemplate/modelTemplate.instruction.md +577 -0
- package/esm/src/guidelines/modelUnit/modelUnit.instruction.md +833 -0
- package/esm/src/guidelines/modelUtil/modelUtil.instruction.md +752 -0
- package/esm/src/guidelines/modelView/modelView.instruction.md +1005 -0
- package/esm/src/guidelines/modelZone/modelZone.instruction.md +528 -0
- package/esm/src/guidelines/scalarConstant/scalarConstant.instruction.md +489 -0
- package/esm/src/guidelines/scalarDictionary/scalarDictionary.instruction.md +347 -0
- package/esm/src/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +318 -0
- package/esm/src/guidelines/utilUiUsage/utilUiUsage.instruction.md +339 -0
- package/esm/src/templates/module/__model__.dictionary.js +4 -5
- package/package.json +3 -1
- package/src/guideline/guideline.command.d.ts +7 -0
- package/src/guideline/guideline.prompt.d.ts +15 -0
- package/src/guideline/guideline.runner.d.ts +5 -0
- package/src/guideline/guideline.script.d.ts +6 -0
- package/src/guidelines/___library/sharedUiStructureDescription.en.md +786 -0
- package/src/guidelines/___library/utilUiStructureDescription.en.md +395 -0
- package/src/guidelines/___lint/lintRuleDescription.en.md +64 -0
- package/src/guidelines/___module/moduleStructureDescription.en.md +80 -0
- package/src/guidelines/componentRule/componentRule.instruction.md +732 -0
- package/src/guidelines/databaseModule/databaseModule.instruction.md +691 -0
- package/src/guidelines/enumConstant/enumConstant.instruction.md +232 -0
- package/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +611 -0
- package/src/guidelines/framework/framework.instruction.md +1112 -0
- package/src/guidelines/modelConstant/modelConstant.instruction.md +958 -0
- package/src/guidelines/modelDictionary/modelDictionary.instruction.md +583 -0
- package/src/guidelines/modelDocument/modelDocument.instruction.md +683 -0
- package/src/guidelines/modelService/modelService.instruction.md +935 -0
- package/src/guidelines/modelSignal/modelSignal.instruction.md +588 -0
- package/src/guidelines/modelStore/modelStore.instruction.md +591 -0
- package/src/guidelines/modelTemplate/modelTemplate.instruction.md +577 -0
- package/src/guidelines/modelUnit/modelUnit.instruction.md +833 -0
- package/src/guidelines/modelUtil/modelUtil.instruction.md +752 -0
- package/src/guidelines/modelView/modelView.instruction.md +1005 -0
- package/src/guidelines/modelZone/modelZone.instruction.md +528 -0
- package/src/guidelines/scalarConstant/scalarConstant.instruction.md +489 -0
- package/src/guidelines/scalarDictionary/scalarDictionary.instruction.md +347 -0
- package/src/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +318 -0
- package/src/guidelines/utilUiUsage/utilUiUsage.instruction.md +339 -0
- package/src/module/module.command.d.ts +6 -8
- package/src/module/module.prompt.d.ts +2 -15
- package/src/module/module.request.d.ts +22 -18
- package/src/module/module.runner.d.ts +4 -20
- package/src/module/module.script.d.ts +6 -7
- package/src/scalar/scalar.command.d.ts +7 -0
- package/src/scalar/scalar.prompt.d.ts +23 -0
- package/src/scalar/scalar.runner.d.ts +13 -0
- package/src/scalar/scalar.script.d.ts +6 -0
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/forgotpassword/page.js +0 -47
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/page.js +0 -128
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/privacy/page.js +0 -42
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/signin/page.js +0 -50
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/termsofservice/page.js +0 -41
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/unknown/page.js +0 -51
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(user)/layout.js +0 -43
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(user)/self/page.js +0 -60
- package/cjs/src/templates/app/app/[lang]/(__appName__)/layout.js +0 -54
- package/cjs/src/templates/app/app/[lang]/(__appName__)/styles.css.template +0 -19
- package/cjs/src/templates/app/app/[lang]/admin/layout.js +0 -54
- package/cjs/src/templates/app/app/[lang]/admin/page.js +0 -63
- package/cjs/src/templates/app/app/csr.js +0 -34
- package/cjs/src/templates/app/app/index.html.template +0 -13
- package/cjs/src/templates/app/app/layout.js +0 -38
- package/cjs/src/templates/app/capacitor.config.ts.template +0 -8
- package/cjs/src/templates/app/env/env.client.debug.ts.template +0 -7
- package/cjs/src/templates/app/env/env.client.develop.ts.template +0 -7
- package/cjs/src/templates/app/env/env.client.local.ts.template +0 -7
- package/cjs/src/templates/app/env/env.client.main.ts.template +0 -7
- package/cjs/src/templates/app/env/env.client.testing.ts.template +0 -7
- package/cjs/src/templates/app/env/env.server.debug.ts.template +0 -15
- package/cjs/src/templates/app/env/env.server.develop.ts.template +0 -15
- package/cjs/src/templates/app/env/env.server.local.ts.template +0 -15
- package/cjs/src/templates/app/env/env.server.main.ts.template +0 -15
- package/cjs/src/templates/app/env/env.server.testing.ts.template +0 -7
- package/cjs/src/templates/app/lib/setting/Setting.Template.js +0 -57
- package/cjs/src/templates/app/lib/setting/Setting.Unit.js +0 -38
- package/cjs/src/templates/app/lib/setting/Setting.Util.js +0 -34
- package/cjs/src/templates/app/lib/setting/Setting.View.js +0 -51
- package/cjs/src/templates/app/lib/setting/Setting.Zone.js +0 -80
- package/cjs/src/templates/app/lib/setting/index.js +0 -61
- package/cjs/src/templates/app/lib/summary/Summary.Template.js +0 -43
- package/cjs/src/templates/app/lib/summary/Summary.Unit.js +0 -38
- package/cjs/src/templates/app/lib/summary/Summary.Util.js +0 -33
- package/cjs/src/templates/app/lib/summary/Summary.View.js +0 -51
- package/cjs/src/templates/app/lib/summary/Summary.Zone.js +0 -62
- package/cjs/src/templates/app/lib/summary/index.js +0 -67
- package/cjs/src/templates/app/lib/user/User.Template.js +0 -65
- package/cjs/src/templates/app/lib/user/User.Unit.js +0 -38
- package/cjs/src/templates/app/lib/user/User.Util.js +0 -94
- package/cjs/src/templates/app/lib/user/User.View.js +0 -66
- package/cjs/src/templates/app/lib/user/User.Zone.js +0 -74
- package/cjs/src/templates/app/lib/user/index.js +0 -61
- package/cjs/src/templates/app/page.test.ts.template +0 -10
- package/cjs/src/templates/app/playwright.config.ts.template +0 -6
- package/cjs/src/templates/app/postcss.config.js.template +0 -10
- package/cjs/src/templates/app/public/manifest.json.template +0 -67
- package/cjs/src/templates/app/tsconfig.json.template +0 -22
- package/cjs/src/templates/app/tsconfig.spec.json.template +0 -7
- package/cjs/src/templates/app/ui/Footer.js +0 -67
- package/cjs/src/templates/app/ui/MainHeader.js +0 -131
- package/cjs/src/templates/crudPages/[__model__Id]/edit/page.js +0 -73
- package/cjs/src/templates/crudPages/[__model__Id]/page.js +0 -83
- package/cjs/src/templates/crudPages/new/page.js +0 -70
- package/cjs/src/templates/crudPages/page.js +0 -71
- package/cjs/src/templates/libRoot/.gitignore.template +0 -15
- package/cjs/src/templates/libRoot/env/env.server.example.ts.template +0 -7
- package/cjs/src/templates/libRoot/env/env.server.testing.ts.template +0 -7
- package/cjs/src/templates/libRoot/lib/setting/Setting.Template.js +0 -57
- package/cjs/src/templates/libRoot/lib/setting/Setting.Unit.js +0 -38
- package/cjs/src/templates/libRoot/lib/setting/Setting.Util.js +0 -34
- package/cjs/src/templates/libRoot/lib/setting/Setting.View.js +0 -51
- package/cjs/src/templates/libRoot/lib/setting/Setting.Zone.js +0 -80
- package/cjs/src/templates/libRoot/lib/setting/index.js +0 -61
- package/cjs/src/templates/libRoot/lib/summary/Summary.Template.js +0 -43
- package/cjs/src/templates/libRoot/lib/summary/Summary.Unit.js +0 -38
- package/cjs/src/templates/libRoot/lib/summary/Summary.Util.js +0 -33
- package/cjs/src/templates/libRoot/lib/summary/Summary.View.js +0 -51
- package/cjs/src/templates/libRoot/lib/summary/Summary.Zone.js +0 -62
- package/cjs/src/templates/libRoot/lib/summary/index.js +0 -67
- package/cjs/src/templates/libRoot/lib/user/User.Template.js +0 -65
- package/cjs/src/templates/libRoot/lib/user/User.Unit.js +0 -38
- package/cjs/src/templates/libRoot/lib/user/User.Util.js +0 -94
- package/cjs/src/templates/libRoot/lib/user/User.View.js +0 -66
- package/cjs/src/templates/libRoot/lib/user/User.Zone.js +0 -74
- package/cjs/src/templates/libRoot/lib/user/index.js +0 -61
- package/cjs/src/templates/libRoot/package.json.template +0 -4
- package/cjs/src/templates/libRoot/tsconfig.json.template +0 -13
- package/cjs/src/templates/libRoot/tsconfig.spec.json.template +0 -7
- package/cjs/src/templates/localDev/docker-compose.yaml.template +0 -36
- package/cjs/src/templates/module/__Model__.Template.js +0 -54
- package/cjs/src/templates/module/__Model__.Unit.js +0 -42
- package/cjs/src/templates/module/__Model__.Util.js +0 -70
- package/cjs/src/templates/module/__Model__.View.js +0 -48
- package/cjs/src/templates/module/__Model__.Zone.js +0 -83
- package/cjs/src/templates/module/index.js +0 -61
- package/cjs/src/templates/pkgRoot/tsconfig.json.template +0 -15
- package/cjs/src/templates/workspaceRoot/.env.template +0 -20
- package/cjs/src/templates/workspaceRoot/.gitignore.template +0 -118
- package/cjs/src/templates/workspaceRoot/.prettierignore.template +0 -10
- package/cjs/src/templates/workspaceRoot/.prettierrc.json.template +0 -6
- package/cjs/src/templates/workspaceRoot/.swcrc.template +0 -9
- package/cjs/src/templates/workspaceRoot/.vscode/settings.json.template +0 -13
- package/cjs/src/templates/workspaceRoot/README.md.template +0 -37
- package/cjs/src/templates/workspaceRoot/eslint.config.ts.template +0 -3
- package/cjs/src/templates/workspaceRoot/package.json.template +0 -43
- package/cjs/src/templates/workspaceRoot/tsconfig.json.template +0 -29
- package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/forgotpassword/page.js +0 -27
- package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/page.js +0 -108
- package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/privacy/page.js +0 -22
- package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/signin/page.js +0 -30
- package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/termsofservice/page.js +0 -21
- package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/unknown/page.js +0 -31
- package/esm/src/templates/app/app/[lang]/(__appName__)/(user)/layout.js +0 -23
- package/esm/src/templates/app/app/[lang]/(__appName__)/(user)/self/page.js +0 -40
- package/esm/src/templates/app/app/[lang]/(__appName__)/layout.js +0 -34
- package/esm/src/templates/app/app/[lang]/(__appName__)/styles.css.template +0 -19
- package/esm/src/templates/app/app/[lang]/admin/layout.js +0 -34
- package/esm/src/templates/app/app/[lang]/admin/page.js +0 -43
- package/esm/src/templates/app/app/csr.js +0 -14
- package/esm/src/templates/app/app/index.html.template +0 -13
- package/esm/src/templates/app/app/layout.js +0 -18
- package/esm/src/templates/app/capacitor.config.ts.template +0 -8
- package/esm/src/templates/app/env/env.client.debug.ts.template +0 -7
- package/esm/src/templates/app/env/env.client.develop.ts.template +0 -7
- package/esm/src/templates/app/env/env.client.local.ts.template +0 -7
- package/esm/src/templates/app/env/env.client.main.ts.template +0 -7
- package/esm/src/templates/app/env/env.client.testing.ts.template +0 -7
- package/esm/src/templates/app/env/env.server.debug.ts.template +0 -15
- package/esm/src/templates/app/env/env.server.develop.ts.template +0 -15
- package/esm/src/templates/app/env/env.server.local.ts.template +0 -15
- package/esm/src/templates/app/env/env.server.main.ts.template +0 -15
- package/esm/src/templates/app/env/env.server.testing.ts.template +0 -7
- package/esm/src/templates/app/lib/setting/Setting.Template.js +0 -37
- package/esm/src/templates/app/lib/setting/Setting.Unit.js +0 -18
- package/esm/src/templates/app/lib/setting/Setting.Util.js +0 -14
- package/esm/src/templates/app/lib/setting/Setting.View.js +0 -31
- package/esm/src/templates/app/lib/setting/Setting.Zone.js +0 -60
- package/esm/src/templates/app/lib/setting/index.js +0 -41
- package/esm/src/templates/app/lib/summary/Summary.Template.js +0 -23
- package/esm/src/templates/app/lib/summary/Summary.Unit.js +0 -18
- package/esm/src/templates/app/lib/summary/Summary.Util.js +0 -13
- package/esm/src/templates/app/lib/summary/Summary.View.js +0 -31
- package/esm/src/templates/app/lib/summary/Summary.Zone.js +0 -42
- package/esm/src/templates/app/lib/summary/index.js +0 -47
- package/esm/src/templates/app/lib/user/User.Template.js +0 -45
- package/esm/src/templates/app/lib/user/User.Unit.js +0 -18
- package/esm/src/templates/app/lib/user/User.Util.js +0 -74
- package/esm/src/templates/app/lib/user/User.View.js +0 -46
- package/esm/src/templates/app/lib/user/User.Zone.js +0 -54
- package/esm/src/templates/app/lib/user/index.js +0 -41
- package/esm/src/templates/app/page.test.ts.template +0 -10
- package/esm/src/templates/app/playwright.config.ts.template +0 -6
- package/esm/src/templates/app/postcss.config.js.template +0 -10
- package/esm/src/templates/app/public/manifest.json.template +0 -67
- package/esm/src/templates/app/tsconfig.json.template +0 -22
- package/esm/src/templates/app/tsconfig.spec.json.template +0 -7
- package/esm/src/templates/app/ui/Footer.js +0 -47
- package/esm/src/templates/app/ui/MainHeader.js +0 -111
- package/esm/src/templates/crudPages/[__model__Id]/edit/page.js +0 -53
- package/esm/src/templates/crudPages/[__model__Id]/page.js +0 -63
- package/esm/src/templates/crudPages/new/page.js +0 -50
- package/esm/src/templates/crudPages/page.js +0 -51
- package/esm/src/templates/libRoot/.gitignore.template +0 -15
- package/esm/src/templates/libRoot/env/env.server.example.ts.template +0 -7
- package/esm/src/templates/libRoot/env/env.server.testing.ts.template +0 -7
- package/esm/src/templates/libRoot/lib/setting/Setting.Template.js +0 -37
- package/esm/src/templates/libRoot/lib/setting/Setting.Unit.js +0 -18
- package/esm/src/templates/libRoot/lib/setting/Setting.Util.js +0 -14
- package/esm/src/templates/libRoot/lib/setting/Setting.View.js +0 -31
- package/esm/src/templates/libRoot/lib/setting/Setting.Zone.js +0 -60
- package/esm/src/templates/libRoot/lib/setting/index.js +0 -41
- package/esm/src/templates/libRoot/lib/summary/Summary.Template.js +0 -23
- package/esm/src/templates/libRoot/lib/summary/Summary.Unit.js +0 -18
- package/esm/src/templates/libRoot/lib/summary/Summary.Util.js +0 -13
- package/esm/src/templates/libRoot/lib/summary/Summary.View.js +0 -31
- package/esm/src/templates/libRoot/lib/summary/Summary.Zone.js +0 -42
- package/esm/src/templates/libRoot/lib/summary/index.js +0 -47
- package/esm/src/templates/libRoot/lib/user/User.Template.js +0 -45
- package/esm/src/templates/libRoot/lib/user/User.Unit.js +0 -18
- package/esm/src/templates/libRoot/lib/user/User.Util.js +0 -74
- package/esm/src/templates/libRoot/lib/user/User.View.js +0 -46
- package/esm/src/templates/libRoot/lib/user/User.Zone.js +0 -54
- package/esm/src/templates/libRoot/lib/user/index.js +0 -41
- package/esm/src/templates/libRoot/package.json.template +0 -4
- package/esm/src/templates/libRoot/tsconfig.json.template +0 -13
- package/esm/src/templates/libRoot/tsconfig.spec.json.template +0 -7
- package/esm/src/templates/localDev/docker-compose.yaml.template +0 -36
- package/esm/src/templates/module/__Model__.Template.js +0 -34
- package/esm/src/templates/module/__Model__.Unit.js +0 -22
- package/esm/src/templates/module/__Model__.Util.js +0 -50
- package/esm/src/templates/module/__Model__.View.js +0 -28
- package/esm/src/templates/module/__Model__.Zone.js +0 -63
- package/esm/src/templates/module/index.js +0 -41
- package/esm/src/templates/pkgRoot/tsconfig.json.template +0 -15
- package/esm/src/templates/workspaceRoot/.env.template +0 -20
- package/esm/src/templates/workspaceRoot/.gitignore.template +0 -118
- package/esm/src/templates/workspaceRoot/.prettierignore.template +0 -10
- package/esm/src/templates/workspaceRoot/.prettierrc.json.template +0 -6
- package/esm/src/templates/workspaceRoot/.swcrc.template +0 -9
- package/esm/src/templates/workspaceRoot/.vscode/settings.json.template +0 -13
- package/esm/src/templates/workspaceRoot/README.md.template +0 -37
- package/esm/src/templates/workspaceRoot/eslint.config.ts.template +0 -3
- package/esm/src/templates/workspaceRoot/package.json.template +0 -43
- package/esm/src/templates/workspaceRoot/tsconfig.json.template +0 -29
- package/src/application/application.prompt.d.ts +0 -2
- package/src/templates/app/app/[lang]/(__appName__)/(public)/forgotpassword/page.d.ts +0 -9
- package/src/templates/app/app/[lang]/(__appName__)/(public)/page.d.ts +0 -9
- package/src/templates/app/app/[lang]/(__appName__)/(public)/privacy/page.d.ts +0 -9
- package/src/templates/app/app/[lang]/(__appName__)/(public)/signin/page.d.ts +0 -9
- package/src/templates/app/app/[lang]/(__appName__)/(public)/termsofservice/page.d.ts +0 -10
- package/src/templates/app/app/[lang]/(__appName__)/(public)/unknown/page.d.ts +0 -9
- package/src/templates/app/app/[lang]/(__appName__)/(user)/layout.d.ts +0 -9
- package/src/templates/app/app/[lang]/(__appName__)/(user)/self/page.d.ts +0 -9
- package/src/templates/app/app/[lang]/(__appName__)/layout.d.ts +0 -9
- package/src/templates/app/app/[lang]/admin/layout.d.ts +0 -9
- package/src/templates/app/app/[lang]/admin/page.d.ts +0 -9
- package/src/templates/app/app/csr.d.ts +0 -9
- package/src/templates/app/app/layout.d.ts +0 -9
- package/src/templates/app/lib/setting/Setting.Template.d.ts +0 -9
- package/src/templates/app/lib/setting/Setting.Unit.d.ts +0 -9
- package/src/templates/app/lib/setting/Setting.Util.d.ts +0 -9
- package/src/templates/app/lib/setting/Setting.View.d.ts +0 -9
- package/src/templates/app/lib/setting/Setting.Zone.d.ts +0 -9
- package/src/templates/app/lib/setting/index.d.ts +0 -9
- package/src/templates/app/lib/summary/Summary.Template.d.ts +0 -9
- package/src/templates/app/lib/summary/Summary.Unit.d.ts +0 -9
- package/src/templates/app/lib/summary/Summary.Util.d.ts +0 -9
- package/src/templates/app/lib/summary/Summary.View.d.ts +0 -9
- package/src/templates/app/lib/summary/Summary.Zone.d.ts +0 -9
- package/src/templates/app/lib/summary/index.d.ts +0 -9
- package/src/templates/app/lib/user/User.Template.d.ts +0 -9
- package/src/templates/app/lib/user/User.Unit.d.ts +0 -9
- package/src/templates/app/lib/user/User.Util.d.ts +0 -9
- package/src/templates/app/lib/user/User.View.d.ts +0 -9
- package/src/templates/app/lib/user/User.Zone.d.ts +0 -9
- package/src/templates/app/lib/user/index.d.ts +0 -9
- package/src/templates/app/ui/Footer.d.ts +0 -9
- package/src/templates/app/ui/MainHeader.d.ts +0 -10
- package/src/templates/crudPages/[__model__Id]/edit/page.d.ts +0 -11
- package/src/templates/crudPages/[__model__Id]/page.d.ts +0 -11
- package/src/templates/crudPages/new/page.d.ts +0 -11
- package/src/templates/crudPages/page.d.ts +0 -11
- package/src/templates/libRoot/lib/setting/Setting.Template.d.ts +0 -9
- package/src/templates/libRoot/lib/setting/Setting.Unit.d.ts +0 -9
- package/src/templates/libRoot/lib/setting/Setting.Util.d.ts +0 -9
- package/src/templates/libRoot/lib/setting/Setting.View.d.ts +0 -9
- package/src/templates/libRoot/lib/setting/Setting.Zone.d.ts +0 -9
- package/src/templates/libRoot/lib/setting/index.d.ts +0 -9
- package/src/templates/libRoot/lib/summary/Summary.Template.d.ts +0 -9
- package/src/templates/libRoot/lib/summary/Summary.Unit.d.ts +0 -9
- package/src/templates/libRoot/lib/summary/Summary.Util.d.ts +0 -9
- package/src/templates/libRoot/lib/summary/Summary.View.d.ts +0 -9
- package/src/templates/libRoot/lib/summary/Summary.Zone.d.ts +0 -9
- package/src/templates/libRoot/lib/summary/index.d.ts +0 -9
- package/src/templates/libRoot/lib/user/User.Template.d.ts +0 -9
- package/src/templates/libRoot/lib/user/User.Unit.d.ts +0 -9
- package/src/templates/libRoot/lib/user/User.Util.d.ts +0 -9
- package/src/templates/libRoot/lib/user/User.View.d.ts +0 -9
- package/src/templates/libRoot/lib/user/User.Zone.d.ts +0 -9
- package/src/templates/libRoot/lib/user/index.d.ts +0 -9
- package/src/templates/module/__Model__.Template.d.ts +0 -11
- package/src/templates/module/__Model__.Unit.d.ts +0 -11
- package/src/templates/module/__Model__.Util.d.ts +0 -11
- package/src/templates/module/__Model__.View.d.ts +0 -11
- package/src/templates/module/__Model__.Zone.d.ts +0 -11
- package/src/templates/module/index.d.ts +0 -11
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
# Akan.js Model Dictionary Guide (`model.dictionary.ts`)
|
|
2
|
+
|
|
3
|
+
## 1. Purpose
|
|
4
|
+
|
|
5
|
+
The `model.dictionary.ts` file serves as a centralized translation management system for your Akan.js applications, providing:
|
|
6
|
+
|
|
7
|
+
- **Multilingual UI Text**: Labels, buttons, tooltips, and messages
|
|
8
|
+
- **Field Translations**: Model field names and descriptions
|
|
9
|
+
- **API Documentation**: Endpoint names and parameter descriptions
|
|
10
|
+
- **Enum Translations**: Consistent terminology for status values and options
|
|
11
|
+
- **Error Messages**: Standardized error text for validation and business logic
|
|
12
|
+
- **Filter Query UI**: Search and filter interface elements
|
|
13
|
+
|
|
14
|
+
This system ensures consistent terminology across all application layers and supports multiple languages.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 2. File Structure
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import {
|
|
22
|
+
ModelDictionary,
|
|
23
|
+
SignalDictionary,
|
|
24
|
+
SummaryDictionary,
|
|
25
|
+
baseTrans,
|
|
26
|
+
getBaseSignalTrans,
|
|
27
|
+
} from "@akanjs/dictionary";
|
|
28
|
+
|
|
29
|
+
import type { YourModel, YourFilter, YourInsight, YourSummary } from "./your-model.constant";
|
|
30
|
+
import type { YourSignal } from "./your-model.signal";
|
|
31
|
+
|
|
32
|
+
// Core model translations
|
|
33
|
+
const modelDictionary = {
|
|
34
|
+
...baseTrans, // Include base translations (id, createdAt, etc.)
|
|
35
|
+
modelName: ["Model Name", "모델명"],
|
|
36
|
+
modelDesc: ["Model description", "모델 설명"],
|
|
37
|
+
|
|
38
|
+
// * ==================== Model ==================== * //
|
|
39
|
+
fieldName: ["Field Label", "필드 라벨"],
|
|
40
|
+
"desc-fieldName": ["Field description", "필드 설명"],
|
|
41
|
+
// * ==================== Model ==================== * //
|
|
42
|
+
|
|
43
|
+
// * ==================== Insight ==================== * //
|
|
44
|
+
count: ["Count", "개수"],
|
|
45
|
+
"desc-count": ["Item count in current query", "현재 쿼리 설정에 맞는 항목 수"],
|
|
46
|
+
// * ==================== Insight ==================== * //
|
|
47
|
+
|
|
48
|
+
// * ==================== Filter ==================== * //
|
|
49
|
+
"qry-filterName": ["Filter Label", "필터 라벨"],
|
|
50
|
+
"qrydesc-filterName": ["Filter description", "필터 설명"],
|
|
51
|
+
"qarg-filterName-arg": ["Argument Label", "인자 라벨"],
|
|
52
|
+
"qargdesc-filterName-arg": ["Argument description", "인자 설명"],
|
|
53
|
+
// * ==================== Filter ==================== * //
|
|
54
|
+
|
|
55
|
+
// * ==================== Etc ==================== * //
|
|
56
|
+
"enum-field-value": ["Enum Label", "열거형 라벨"],
|
|
57
|
+
"enumdesc-field-value": ["Enum description", "열거형 설명"],
|
|
58
|
+
customKey: ["Custom text", "사용자 정의 텍스트"],
|
|
59
|
+
// * ==================== Etc ==================== * //
|
|
60
|
+
} satisfies ModelDictionary<YourModel, YourInsight, YourFilter>;
|
|
61
|
+
|
|
62
|
+
// Summary model translations (optional)
|
|
63
|
+
export const yourSummaryDictionary = {
|
|
64
|
+
// * ==================== Summary ==================== * //
|
|
65
|
+
totalItems: ["Total Items", "총 항목 수"],
|
|
66
|
+
"desc-totalItems": ["Total item count in database", "데이터베이스의 총 항목 수"],
|
|
67
|
+
// * ==================== Summary ==================== * //
|
|
68
|
+
} satisfies SummaryDictionary<YourSummary>;
|
|
69
|
+
|
|
70
|
+
// API endpoint translations
|
|
71
|
+
const signalDictionary = {
|
|
72
|
+
...getBaseSignalTrans("modelName"), // Auto-generate standard API texts
|
|
73
|
+
|
|
74
|
+
// * ==================== Endpoint ==================== * //
|
|
75
|
+
"api-customEndpoint": ["Endpoint Label", "엔드포인트 라벨"],
|
|
76
|
+
"apidesc-customEndpoint": ["Endpoint description", "엔드포인트 설명"],
|
|
77
|
+
"arg-customEndpoint-arg": ["Argument Label", "인자 라벨"],
|
|
78
|
+
"argdesc-customEndpoint-arg": ["Argument description", "인자 설명"],
|
|
79
|
+
// * ==================== Endpoint ==================== * //
|
|
80
|
+
} satisfies SignalDictionary<YourSignal, YourModel>;
|
|
81
|
+
|
|
82
|
+
// Combined export
|
|
83
|
+
export const yourDictionary = { ...modelDictionary, ...signalDictionary };
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 3. Translation Key Convention
|
|
89
|
+
|
|
90
|
+
All translations follow a structured naming pattern:
|
|
91
|
+
|
|
92
|
+
| Key Type | Pattern | Example | Required |
|
|
93
|
+
| ----------------------- | ------------------------------ | --------------------------- | -------- |
|
|
94
|
+
| **Model Name** | `modelName` | `modelName` | ✅ |
|
|
95
|
+
| **Model Description** | `modelDesc` | `modelDesc` | ✅ |
|
|
96
|
+
| **Field Label** | `fieldName` | `email` | ✅ |
|
|
97
|
+
| **Field Description** | `desc-fieldName` | `desc-email` | ✅ |
|
|
98
|
+
| **Enum Value** | `enum-{field}-{value}` | `enum-status-active` | ✅ |
|
|
99
|
+
| **Enum Description** | `enumdesc-{field}-{value}` | `enumdesc-status-active` | ✅ |
|
|
100
|
+
| **Filter Query** | `qry-{filterName}` | `qry-byStatus` | ✅ |
|
|
101
|
+
| **Filter Description** | `qrydesc-{filterName}` | `qrydesc-byStatus` | ✅ |
|
|
102
|
+
| **Filter Argument** | `qarg-{filterName}-{arg}` | `qarg-byStatus-status` | ✅ |
|
|
103
|
+
| **Filter Arg Desc** | `qargdesc-{filterName}-{arg}` | `qargdesc-byStatus-status` | ✅ |
|
|
104
|
+
| **API Endpoint** | `api-{endpointName}` | `api-updateUser` | ✅ |
|
|
105
|
+
| **API Description** | `apidesc-{endpointName}` | `apidesc-updateUser` | ✅ |
|
|
106
|
+
| **API Argument** | `arg-{endpointName}-{argName}` | `arg-updateUser-userId` | ✅ |
|
|
107
|
+
| **API Arg Description** | `argdesc-{endpoint}-{arg}` | `argdesc-updateUser-userId` | ✅ |
|
|
108
|
+
| **Custom UI Text** | `customKey` | `deleteConfirm` | ➖ |
|
|
109
|
+
|
|
110
|
+
### Translation Array Format
|
|
111
|
+
|
|
112
|
+
Each translation is an array with entries for each supported language:
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
// [English, Korean]
|
|
116
|
+
fieldName: ["Field Name", "필드 이름"],
|
|
117
|
+
|
|
118
|
+
// With description
|
|
119
|
+
"desc-fieldName": ["Field description", "필드 설명"],
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## 4. How to Add Model Translations
|
|
125
|
+
|
|
126
|
+
### Model Fields
|
|
127
|
+
|
|
128
|
+
Every model field requires both a label and description:
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
// * ==================== Model ==================== * //
|
|
132
|
+
title: ["Title", "제목"],
|
|
133
|
+
"desc-title": ["Content title", "콘텐츠 제목"],
|
|
134
|
+
|
|
135
|
+
description: ["Description", "설명"],
|
|
136
|
+
"desc-description": ["Content description", "콘텐츠 설명"],
|
|
137
|
+
|
|
138
|
+
author: ["Author", "작성자"],
|
|
139
|
+
"desc-author": ["Content creator", "콘텐츠 작성자"],
|
|
140
|
+
// * ==================== Model ==================== * //
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Summary Translations
|
|
144
|
+
|
|
145
|
+
Summary statistics and aggregated metrics:
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
// * ==================== Summary ==================== * //
|
|
149
|
+
totalUsers: ["Total Users", "총 사용자 수"],
|
|
150
|
+
"desc-totalUsers": ["Total registered users", "등록된 총 사용자 수"],
|
|
151
|
+
|
|
152
|
+
activeUsers: ["Active Users", "활성 사용자 수"],
|
|
153
|
+
"desc-activeUsers": ["Users active in last 7 days", "최근 7일간 활성 사용자 수"],
|
|
154
|
+
// * ==================== Summary ==================== * //
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Signal Translations
|
|
158
|
+
|
|
159
|
+
API endpoint names, descriptions and parameters:
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
// * ==================== Endpoint ==================== * //
|
|
163
|
+
"api-fetchRecent": ["Fetch Recent", "최근 데이터 조회"],
|
|
164
|
+
"apidesc-fetchRecent": ["Get recently modified items", "최근 수정된 항목 조회"],
|
|
165
|
+
"arg-fetchRecent-days": ["Days", "일 수"],
|
|
166
|
+
"argdesc-fetchRecent-days": ["Number of days to look back", "조회할 과거 일 수"],
|
|
167
|
+
// * ==================== Endpoint ==================== * //
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Enum Translations
|
|
171
|
+
|
|
172
|
+
For dropdown options, status values, and other enumerated types:
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
// * ==================== Etc ==================== * //
|
|
176
|
+
"enum-status-active": ["Active", "활성"],
|
|
177
|
+
"enumdesc-status-active": ["Item is visible and usable", "항목이 표시되고 사용 가능함"],
|
|
178
|
+
|
|
179
|
+
"enum-status-inactive": ["Inactive", "비활성"],
|
|
180
|
+
"enumdesc-status-inactive": ["Item is hidden but exists", "항목이 숨겨져 있지만 존재함"],
|
|
181
|
+
|
|
182
|
+
"enum-role-admin": ["Administrator", "관리자"],
|
|
183
|
+
"enumdesc-role-admin": ["Full system access", "시스템 전체 접근 권한"],
|
|
184
|
+
// * ==================== Etc ==================== * //
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## 5. How to Add Filter Query Translations
|
|
190
|
+
|
|
191
|
+
Filter queries need labels, descriptions, and argument translations:
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
// * ==================== Filter ==================== * //
|
|
195
|
+
"qry-byStatus": ["By Status", "상태별 조회"],
|
|
196
|
+
"qrydesc-byStatus": ["Filter items by status", "상태별로 항목 필터링"],
|
|
197
|
+
"qarg-byStatus-status": ["Status", "상태"],
|
|
198
|
+
"qargdesc-byStatus-status": ["Status value to filter by", "필터링할 상태 값"],
|
|
199
|
+
|
|
200
|
+
"qry-byCreator": ["By Creator", "작성자별 조회"],
|
|
201
|
+
"qrydesc-byCreator": ["Filter items by creator", "작성자별로 항목 필터링"],
|
|
202
|
+
"qarg-byCreator-userId": ["User ID", "사용자 ID"],
|
|
203
|
+
"qargdesc-byCreator-userId": ["Creator's user ID", "작성자의 사용자 ID"],
|
|
204
|
+
// * ==================== Filter ==================== * //
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
For each filter:
|
|
208
|
+
|
|
209
|
+
1. Define the filter query name (`qry-filterName`)
|
|
210
|
+
2. Add a filter description (`qrydesc-filterName`)
|
|
211
|
+
3. For each argument:
|
|
212
|
+
- Add argument label (`qarg-filterName-argName`)
|
|
213
|
+
- Add argument description (`qargdesc-filterName-argName`)
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## 6. Extended Model Patterns
|
|
218
|
+
|
|
219
|
+
For special models like users, settings, or summaries:
|
|
220
|
+
|
|
221
|
+
### User Extensions
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
// Extended user-specific fields
|
|
225
|
+
const userDictionary = {
|
|
226
|
+
// * ==================== Model ==================== * //
|
|
227
|
+
lastLogin: ["Last Login", "마지막 로그인"],
|
|
228
|
+
"desc-lastLogin": ["User's last login time", "사용자 마지막 로그인 시간"],
|
|
229
|
+
|
|
230
|
+
accountStatus: ["Account Status", "계정 상태"],
|
|
231
|
+
"desc-accountStatus": ["Current account status", "현재 계정 상태"],
|
|
232
|
+
// * ==================== Model ==================== * //
|
|
233
|
+
|
|
234
|
+
// * ==================== Etc ==================== * //
|
|
235
|
+
"enum-accountStatus-active": ["Active", "활성"],
|
|
236
|
+
"enumdesc-accountStatus-active": ["Account is usable", "계정이 사용 가능함"],
|
|
237
|
+
|
|
238
|
+
"enum-accountStatus-suspended": ["Suspended", "정지됨"],
|
|
239
|
+
"enumdesc-accountStatus-suspended": ["Account is temporarily disabled", "계정이 일시적으로 비활성화됨"],
|
|
240
|
+
// * ==================== Etc ==================== * //
|
|
241
|
+
} satisfies ExtendModelDictionary<User>;
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Settings Model
|
|
245
|
+
|
|
246
|
+
```typescript
|
|
247
|
+
// Settings-specific translations
|
|
248
|
+
const settingDictionary = {
|
|
249
|
+
// * ==================== Model ==================== * //
|
|
250
|
+
darkMode: ["Dark Mode", "다크 모드"],
|
|
251
|
+
"desc-darkMode": ["Enable dark theme", "다크 테마 사용"],
|
|
252
|
+
|
|
253
|
+
notificationLevel: ["Notification Level", "알림 수준"],
|
|
254
|
+
"desc-notificationLevel": ["Control notification frequency", "알림 빈도 제어"],
|
|
255
|
+
// * ==================== Model ==================== * //
|
|
256
|
+
|
|
257
|
+
// * ==================== Etc ==================== * //
|
|
258
|
+
"enum-notificationLevel-all": ["All", "모두"],
|
|
259
|
+
"enumdesc-notificationLevel-all": ["Receive all notifications", "모든 알림 수신"],
|
|
260
|
+
|
|
261
|
+
"enum-notificationLevel-important": ["Important Only", "중요한 것만"],
|
|
262
|
+
"enumdesc-notificationLevel-important": ["Only receive important alerts", "중요한 알림만 수신"],
|
|
263
|
+
// * ==================== Etc ==================== * //
|
|
264
|
+
} satisfies ExtendModelDictionary<Setting>;
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## 7. Validation Rules and Checklist
|
|
270
|
+
|
|
271
|
+
### Automated Validation
|
|
272
|
+
|
|
273
|
+
Run in development to check dictionary completeness:
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
akan dict:check
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
This validates:
|
|
280
|
+
|
|
281
|
+
1. All model fields have matching descriptions
|
|
282
|
+
2. All enum values have translations
|
|
283
|
+
3. All API arguments have descriptions
|
|
284
|
+
4. All filter arguments have descriptions
|
|
285
|
+
5. No orphaned/unused translations
|
|
286
|
+
|
|
287
|
+
### Manual Checklist
|
|
288
|
+
|
|
289
|
+
Before committing your dictionary, verify:
|
|
290
|
+
|
|
291
|
+
- [ ] Section comments (`// * ==================== * //`) are maintained
|
|
292
|
+
- [ ] All model fields have matching `desc-` entries
|
|
293
|
+
- [ ] All enums have both value and description entries
|
|
294
|
+
- [ ] All filters have proper query, description, argument, and argument description entries
|
|
295
|
+
- [ ] All API endpoints have proper endpoint, description, argument, and argument description entries
|
|
296
|
+
- [ ] Translation arrays follow consistent language order (English first, Korean second)
|
|
297
|
+
- [ ] Signal arguments match backend definitions
|
|
298
|
+
- [ ] Filter arguments match model definitions
|
|
299
|
+
- [ ] Enum values match model definitions
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## 8. Common Mistakes and How to Fix
|
|
304
|
+
|
|
305
|
+
| Mistake | Symptom | Fix |
|
|
306
|
+
| ----------------------------- | --------------------------------- | ---------------------------------------------- |
|
|
307
|
+
| Missing field description | Dictionary validation errors | Add `"desc-fieldName"` entry |
|
|
308
|
+
| Missing enum description | Tooltips show keys not values | Add `"enumdesc-field-value"` entry |
|
|
309
|
+
| Missing filter arg desc | Filter UI shows raw keys | Add `"qargdesc-filter-arg"` entry |
|
|
310
|
+
| Missing API arg desc | API docs show raw parameter names | Add `"argdesc-endpoint-arg"` entry |
|
|
311
|
+
| Inconsistent section comments | Hard to navigate code | Use standard `// * ===== * //` format |
|
|
312
|
+
| Orphaned translations | Validation warnings | Remove unused keys or add missing fields |
|
|
313
|
+
| Translation array order | Incorrect language display | Maintain consistent order: `[English, Korean]` |
|
|
314
|
+
|
|
315
|
+
### Example Fixes:
|
|
316
|
+
|
|
317
|
+
```typescript
|
|
318
|
+
// INCORRECT - Missing description
|
|
319
|
+
title: ["Title", "제목"],
|
|
320
|
+
|
|
321
|
+
// CORRECT
|
|
322
|
+
title: ["Title", "제목"],
|
|
323
|
+
"desc-title": ["Item title", "항목 제목"],
|
|
324
|
+
|
|
325
|
+
// INCORRECT - Missing enum description
|
|
326
|
+
"enum-status-active": ["Active", "활성"],
|
|
327
|
+
|
|
328
|
+
// CORRECT
|
|
329
|
+
"enum-status-active": ["Active", "활성"],
|
|
330
|
+
"enumdesc-status-active": ["Item is visible and usable", "항목이 표시되고 사용 가능함"],
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## 9. Required Imports
|
|
336
|
+
|
|
337
|
+
Always include these imports in your dictionary file:
|
|
338
|
+
|
|
339
|
+
```typescript
|
|
340
|
+
// Dictionary system imports
|
|
341
|
+
import {
|
|
342
|
+
ModelDictionary,
|
|
343
|
+
SignalDictionary,
|
|
344
|
+
SummaryDictionary,
|
|
345
|
+
ExtendModelDictionary, // For extended models
|
|
346
|
+
baseTrans, // Common translations
|
|
347
|
+
getBaseSignalTrans, // Auto-generated API translations
|
|
348
|
+
} from "@akanjs/dictionary";
|
|
349
|
+
|
|
350
|
+
// Model type imports
|
|
351
|
+
import type { YourModel, YourFilter, YourInsight } from "./your-model.constant";
|
|
352
|
+
import type { YourSignal } from "./your-model.signal";
|
|
353
|
+
import type { YourSummary } from "./your-model.summary"; // If using summary
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## 10. Full Example of model.dictionary.ts
|
|
359
|
+
|
|
360
|
+
```typescript
|
|
361
|
+
import {
|
|
362
|
+
ModelDictionary,
|
|
363
|
+
SignalDictionary,
|
|
364
|
+
SummaryDictionary,
|
|
365
|
+
baseTrans,
|
|
366
|
+
getBaseSignalTrans,
|
|
367
|
+
} from "@akanjs/dictionary";
|
|
368
|
+
|
|
369
|
+
import type { Post, PostFilter, PostInsight } from "./post.constant";
|
|
370
|
+
import type { PostSignal } from "./post.signal";
|
|
371
|
+
import type { PostSummary } from "./post.summary";
|
|
372
|
+
|
|
373
|
+
const modelDictionary = {
|
|
374
|
+
...baseTrans,
|
|
375
|
+
modelName: ["Post", "게시물"],
|
|
376
|
+
modelDesc: ["Blog or forum post content", "블로그 또는 포럼 게시물 콘텐츠"],
|
|
377
|
+
|
|
378
|
+
// * ==================== Model ==================== * //
|
|
379
|
+
title: ["Title", "제목"],
|
|
380
|
+
"desc-title": ["Post headline", "게시물 제목"],
|
|
381
|
+
|
|
382
|
+
content: ["Content", "내용"],
|
|
383
|
+
"desc-content": ["Post body text", "게시물 본문 텍스트"],
|
|
384
|
+
|
|
385
|
+
author: ["Author", "작성자"],
|
|
386
|
+
"desc-author": ["Post creator", "게시물 작성자"],
|
|
387
|
+
|
|
388
|
+
category: ["Category", "카테고리"],
|
|
389
|
+
"desc-category": ["Content classification", "콘텐츠 분류"],
|
|
390
|
+
|
|
391
|
+
tags: ["Tags", "태그"],
|
|
392
|
+
"desc-tags": ["Content labels", "콘텐츠 라벨"],
|
|
393
|
+
|
|
394
|
+
viewCount: ["Views", "조회수"],
|
|
395
|
+
"desc-viewCount": ["Number of post views", "게시물 조회 수"],
|
|
396
|
+
|
|
397
|
+
commentCount: ["Comments", "댓글수"],
|
|
398
|
+
"desc-commentCount": ["Number of comments", "댓글 수"],
|
|
399
|
+
// * ==================== Model ==================== * //
|
|
400
|
+
|
|
401
|
+
// * ==================== Insight ==================== * //
|
|
402
|
+
count: ["Count", "개수"],
|
|
403
|
+
"desc-count": ["Post count in current query", "현재 쿼리의 게시물 수"],
|
|
404
|
+
|
|
405
|
+
avgViewCount: ["Average Views", "평균 조회수"],
|
|
406
|
+
"desc-avgViewCount": ["Average view count per post", "게시물당 평균 조회 수"],
|
|
407
|
+
// * ==================== Insight ==================== * //
|
|
408
|
+
|
|
409
|
+
// * ==================== Filter ==================== * //
|
|
410
|
+
"qry-byAuthor": ["By Author", "작성자별 조회"],
|
|
411
|
+
"qrydesc-byAuthor": ["Filter posts by author", "작성자별로 게시물 필터링"],
|
|
412
|
+
"qarg-byAuthor-authorId": ["Author ID", "작성자 ID"],
|
|
413
|
+
"qargdesc-byAuthor-authorId": ["Author's user ID", "작성자의 사용자 ID"],
|
|
414
|
+
|
|
415
|
+
"qry-byCategory": ["By Category", "카테고리별 조회"],
|
|
416
|
+
"qrydesc-byCategory": ["Filter posts by category", "카테고리별로 게시물 필터링"],
|
|
417
|
+
"qarg-byCategory-categoryId": ["Category ID", "카테고리 ID"],
|
|
418
|
+
"qargdesc-byCategory-categoryId": ["Category identifier", "카테고리 식별자"],
|
|
419
|
+
|
|
420
|
+
"qry-byTags": ["By Tags", "태그별 조회"],
|
|
421
|
+
"qrydesc-byTags": ["Filter posts by tags", "태그별로 게시물 필터링"],
|
|
422
|
+
"qarg-byTags-tags": ["Tags", "태그"],
|
|
423
|
+
"qargdesc-byTags-tags": ["List of tag values", "태그 값 목록"],
|
|
424
|
+
// * ==================== Filter ==================== * //
|
|
425
|
+
|
|
426
|
+
// * ==================== Etc ==================== * //
|
|
427
|
+
"enum-status-draft": ["Draft", "초안"],
|
|
428
|
+
"enumdesc-status-draft": ["Not yet published", "아직 게시되지 않음"],
|
|
429
|
+
|
|
430
|
+
"enum-status-published": ["Published", "게시됨"],
|
|
431
|
+
"enumdesc-status-published": ["Publicly available", "공개적으로 사용 가능"],
|
|
432
|
+
|
|
433
|
+
"enum-status-archived": ["Archived", "보관됨"],
|
|
434
|
+
"enumdesc-status-archived": ["No longer active but preserved", "더 이상 활성화되지 않지만 보존됨"],
|
|
435
|
+
|
|
436
|
+
deleteConfirm: ["Delete this post?", "이 게시물을 삭제하시겠습니까?"],
|
|
437
|
+
publishConfirm: ["Publish this post?", "이 게시물을 게시하시겠습니까?"],
|
|
438
|
+
// * ==================== Etc ==================== * //
|
|
439
|
+
} satisfies ModelDictionary<Post, PostInsight, PostFilter>;
|
|
440
|
+
|
|
441
|
+
export const postSummaryDictionary = {
|
|
442
|
+
// * ==================== Summary ==================== * //
|
|
443
|
+
totalPosts: ["Total Posts", "총 게시물 수"],
|
|
444
|
+
"desc-totalPosts": ["Total post count in database", "데이터베이스의 총 게시물 수"],
|
|
445
|
+
|
|
446
|
+
publishedPosts: ["Published Posts", "게시된 게시물 수"],
|
|
447
|
+
"desc-publishedPosts": ["Number of published posts", "게시된 게시물 수"],
|
|
448
|
+
|
|
449
|
+
draftPosts: ["Draft Posts", "초안 게시물 수"],
|
|
450
|
+
"desc-draftPosts": ["Number of draft posts", "초안 게시물 수"],
|
|
451
|
+
// * ==================== Summary ==================== * //
|
|
452
|
+
} satisfies SummaryDictionary<PostSummary>;
|
|
453
|
+
|
|
454
|
+
const signalDictionary = {
|
|
455
|
+
...getBaseSignalTrans("post"),
|
|
456
|
+
|
|
457
|
+
// * ==================== Endpoint ==================== * //
|
|
458
|
+
"api-publishPost": ["Publish Post", "게시물 게시"],
|
|
459
|
+
"apidesc-publishPost": ["Change post status to published", "게시물 상태를 게시됨으로 변경"],
|
|
460
|
+
"arg-publishPost-postId": ["Post ID", "게시물 ID"],
|
|
461
|
+
"argdesc-publishPost-postId": ["Target post identifier", "대상 게시물 식별자"],
|
|
462
|
+
|
|
463
|
+
"api-featurePost": ["Feature Post", "게시물 주목"],
|
|
464
|
+
"apidesc-featurePost": ["Mark post as featured", "게시물을 주목 대상으로 표시"],
|
|
465
|
+
"arg-featurePost-postId": ["Post ID", "게시물 ID"],
|
|
466
|
+
"argdesc-featurePost-postId": ["Target post identifier", "대상 게시물 식별자"],
|
|
467
|
+
|
|
468
|
+
"api-getPopularPosts": ["Get Popular Posts", "인기 게시물 가져오기"],
|
|
469
|
+
"apidesc-getPopularPosts": ["Retrieve most viewed posts", "가장 많이 본 게시물 검색"],
|
|
470
|
+
"arg-getPopularPosts-limit": ["Limit", "제한"],
|
|
471
|
+
"argdesc-getPopularPosts-limit": ["Maximum number of results", "최대 결과 수"],
|
|
472
|
+
// * ==================== Endpoint ==================== * //
|
|
473
|
+
} satisfies SignalDictionary<PostSignal, Post>;
|
|
474
|
+
|
|
475
|
+
export const postDictionary = { ...modelDictionary, ...signalDictionary };
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
---
|
|
479
|
+
|
|
480
|
+
## 11. Extended Model Example
|
|
481
|
+
|
|
482
|
+
For models that extend base functionality, like user settings:
|
|
483
|
+
|
|
484
|
+
```typescript
|
|
485
|
+
import { ExtendModelDictionary, SignalDictionary } from "@akanjs/dictionary";
|
|
486
|
+
import type { UserSetting } from "./userSetting.constant";
|
|
487
|
+
import type { UserSettingSignal } from "./userSetting.signal";
|
|
488
|
+
|
|
489
|
+
const userSettingDictionary = {
|
|
490
|
+
// * ==================== Model ==================== * //
|
|
491
|
+
notificationEnabled: ["Enable Notifications", "알림 활성화"],
|
|
492
|
+
"desc-notificationEnabled": ["Toggle all notifications", "모든 알림 토글"],
|
|
493
|
+
|
|
494
|
+
emailFrequency: ["Email Frequency", "이메일 빈도"],
|
|
495
|
+
"desc-emailFrequency": ["How often to send emails", "이메일 발송 빈도"],
|
|
496
|
+
|
|
497
|
+
theme: ["Theme", "테마"],
|
|
498
|
+
"desc-theme": ["UI color scheme", "UI 색상 구성표"],
|
|
499
|
+
|
|
500
|
+
language: ["Language", "언어"],
|
|
501
|
+
"desc-language": ["Interface language", "인터페이스 언어"],
|
|
502
|
+
// * ==================== Model ==================== * //
|
|
503
|
+
|
|
504
|
+
// * ==================== Etc ==================== * //
|
|
505
|
+
"enum-emailFrequency-never": ["Never", "안 함"],
|
|
506
|
+
"enumdesc-emailFrequency-never": ["Don't send emails", "이메일 발송 안 함"],
|
|
507
|
+
|
|
508
|
+
"enum-emailFrequency-daily": ["Daily", "매일"],
|
|
509
|
+
"enumdesc-emailFrequency-daily": ["Send digest once a day", "하루에 한 번 다이제스트 발송"],
|
|
510
|
+
|
|
511
|
+
"enum-emailFrequency-weekly": ["Weekly", "주간"],
|
|
512
|
+
"enumdesc-emailFrequency-weekly": ["Send digest once a week", "일주일에 한 번 다이제스트 발송"],
|
|
513
|
+
|
|
514
|
+
"enum-theme-light": ["Light", "라이트"],
|
|
515
|
+
"enumdesc-theme-light": ["Bright color scheme", "밝은 색상 구성표"],
|
|
516
|
+
|
|
517
|
+
"enum-theme-dark": ["Dark", "다크"],
|
|
518
|
+
"enumdesc-theme-dark": ["Dark color scheme", "어두운 색상 구성표"],
|
|
519
|
+
|
|
520
|
+
"enum-theme-system": ["System", "시스템"],
|
|
521
|
+
"enumdesc-theme-system": ["Follow system settings", "시스템 설정 따름"],
|
|
522
|
+
|
|
523
|
+
"enum-language-en": ["English", "영어"],
|
|
524
|
+
"enumdesc-language-en": ["English language", "영어"],
|
|
525
|
+
|
|
526
|
+
"enum-language-ko": ["Korean", "한국어"],
|
|
527
|
+
"enumdesc-language-ko": ["Korean language", "한국어"],
|
|
528
|
+
// * ==================== Etc ==================== * //
|
|
529
|
+
|
|
530
|
+
// * ==================== Endpoint ==================== * //
|
|
531
|
+
"api-saveUserPreferences": ["Save Preferences", "환경설정 저장"],
|
|
532
|
+
"apidesc-saveUserPreferences": ["Update user settings", "사용자 설정 업데이트"],
|
|
533
|
+
"arg-saveUserPreferences-settings": ["Settings", "설정"],
|
|
534
|
+
"argdesc-saveUserPreferences-settings": ["New settings values", "새 설정 값"],
|
|
535
|
+
// * ==================== Endpoint ==================== * //
|
|
536
|
+
} satisfies ExtendModelDictionary<UserSetting> & SignalDictionary<UserSettingSignal, UserSetting>;
|
|
537
|
+
|
|
538
|
+
export const settingDictionary = userSettingDictionary;
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
---
|
|
542
|
+
|
|
543
|
+
## 12. Best Practices
|
|
544
|
+
|
|
545
|
+
1. **Section Organization**: Maintain the standard section comments for code readability
|
|
546
|
+
|
|
547
|
+
```typescript
|
|
548
|
+
// * ==================== Model ==================== * //
|
|
549
|
+
// Field translations here
|
|
550
|
+
// * ==================== Model ==================== * //
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
2. **Complete Descriptions**: Every field must have a matching description
|
|
554
|
+
|
|
555
|
+
```typescript
|
|
556
|
+
title: ["Title", "제목"],
|
|
557
|
+
"desc-title": ["Content title", "콘텐츠 제목"],
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
3. **Consistent Language Order**: Always use the same order in translation arrays
|
|
561
|
+
|
|
562
|
+
```typescript
|
|
563
|
+
// [English, Korean]
|
|
564
|
+
fieldName: ["Field Label", "필드 라벨"],
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
4. **Group Related Items**: Keep related translations together by type and function
|
|
568
|
+
|
|
569
|
+
5. **Reuse Base Translations**: Always include `baseTrans` and `getBaseSignalTrans`
|
|
570
|
+
|
|
571
|
+
6. **Use Type Safety**: Always use the `satisfies` keyword with proper types
|
|
572
|
+
|
|
573
|
+
7. **Validate Dictionary**: Run `akan dict:check` before committing changes
|
|
574
|
+
|
|
575
|
+
8. **Consistent Casing**:
|
|
576
|
+
|
|
577
|
+
- Model field names: camelCase
|
|
578
|
+
- Enum values: camelCase
|
|
579
|
+
- Custom keys: camelCase
|
|
580
|
+
|
|
581
|
+
9. **Documentation Comments**: Add comments for complex or non-obvious translations
|
|
582
|
+
|
|
583
|
+
10. **No Duplicate Keys**: Don't define the same key multiple times in different places
|