@fecommunity/reactpress 3.7.0 → 4.0.0-beta.0
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/bin/reactpress-cli-shim.js +2 -6
- package/bin/reactpress-theme-client.js +2 -0
- package/bin/reactpress.js +1 -380
- package/out/.source-fingerprint-cli +1 -0
- package/out/bin/reactpress-cli-shim.d.ts +3 -0
- package/out/bin/reactpress-cli-shim.d.ts.map +1 -0
- package/out/bin/reactpress-cli-shim.js +28 -0
- package/out/bin/reactpress-cli-shim.js.map +1 -0
- package/out/bin/reactpress-theme-client.d.ts +3 -0
- package/out/bin/reactpress-theme-client.d.ts.map +1 -0
- package/out/bin/reactpress-theme-client.js +113 -0
- package/out/bin/reactpress-theme-client.js.map +1 -0
- package/out/bin/reactpress.d.ts +3 -0
- package/out/bin/reactpress.d.ts.map +1 -0
- package/out/bin/reactpress.js +534 -0
- package/out/bin/reactpress.js.map +1 -0
- package/out/core/services/config.d.ts +12 -0
- package/out/core/services/config.d.ts.map +1 -0
- package/out/core/services/config.js +137 -0
- package/out/core/services/config.js.map +1 -0
- package/out/core/services/database/index.d.ts +17 -0
- package/out/core/services/database/index.d.ts.map +1 -0
- package/out/core/services/database/index.js +242 -0
- package/out/core/services/database/index.js.map +1 -0
- package/out/core/services/database/mysql.d.ts +14 -0
- package/out/core/services/database/mysql.d.ts.map +1 -0
- package/out/core/services/database/mysql.js +82 -0
- package/out/core/services/database/mysql.js.map +1 -0
- package/out/core/services/database/profile.d.ts +6 -0
- package/out/core/services/database/profile.d.ts.map +1 -0
- package/out/core/services/database/profile.js +60 -0
- package/out/core/services/database/profile.js.map +1 -0
- package/out/core/services/database/sqlite.d.ts +10 -0
- package/out/core/services/database/sqlite.d.ts.map +1 -0
- package/out/core/services/database/sqlite.js +73 -0
- package/out/core/services/database/sqlite.js.map +1 -0
- package/out/core/services/exec.d.ts +21 -0
- package/out/core/services/exec.d.ts.map +1 -0
- package/out/core/services/exec.js +56 -0
- package/out/core/services/exec.js.map +1 -0
- package/out/core/services/init.d.ts +11 -0
- package/out/core/services/init.d.ts.map +1 -0
- package/out/core/services/init.js +60 -0
- package/out/core/services/init.js.map +1 -0
- package/out/core/services/local-site.d.ts +24 -0
- package/out/core/services/local-site.d.ts.map +1 -0
- package/out/core/services/local-site.js +144 -0
- package/out/core/services/local-site.js.map +1 -0
- package/out/core/utils/cli-context.d.ts +3 -0
- package/out/core/utils/cli-context.d.ts.map +1 -0
- package/out/core/utils/cli-context.js +12 -0
- package/out/core/utils/cli-context.js.map +1 -0
- package/out/core/utils/paths.d.ts +20 -0
- package/out/core/utils/paths.d.ts.map +1 -0
- package/out/core/utils/paths.js +34 -0
- package/out/core/utils/paths.js.map +1 -0
- package/out/core/utils/platform.d.ts +7 -0
- package/out/core/utils/platform.d.ts.map +1 -0
- package/out/core/utils/platform.js +28 -0
- package/out/core/utils/platform.js.map +1 -0
- package/out/core/utils/port.d.ts +4 -0
- package/out/core/utils/port.d.ts.map +1 -0
- package/out/core/utils/port.js +32 -0
- package/out/core/utils/port.js.map +1 -0
- package/out/lib/api-dev-runner.d.ts +3 -0
- package/out/lib/api-dev-runner.d.ts.map +1 -0
- package/{lib → out/lib}/api-dev-runner.js +4 -1
- package/out/lib/api-dev-runner.js.map +1 -0
- package/out/lib/api-dev.d.ts +2 -0
- package/out/lib/api-dev.d.ts.map +1 -0
- package/out/lib/api-dev.js +101 -0
- package/out/lib/api-dev.js.map +1 -0
- package/out/lib/bootstrap.d.ts +18 -0
- package/out/lib/bootstrap.d.ts.map +1 -0
- package/out/lib/bootstrap.js +93 -0
- package/out/lib/bootstrap.js.map +1 -0
- package/out/lib/build.d.ts +2 -0
- package/out/lib/build.d.ts.map +1 -0
- package/out/lib/build.js +191 -0
- package/out/lib/build.js.map +1 -0
- package/out/lib/db-backup.d.ts +2 -0
- package/out/lib/db-backup.d.ts.map +1 -0
- package/out/lib/db-backup.js +68 -0
- package/out/lib/db-backup.js.map +1 -0
- package/out/lib/dev-banner.d.ts +2 -0
- package/out/lib/dev-banner.d.ts.map +1 -0
- package/out/lib/dev-banner.js +102 -0
- package/out/lib/dev-banner.js.map +1 -0
- package/out/lib/dev-child-io.d.ts +2 -0
- package/out/lib/dev-child-io.d.ts.map +1 -0
- package/out/lib/dev-child-io.js +80 -0
- package/out/lib/dev-child-io.js.map +1 -0
- package/out/lib/dev-log.d.ts +2 -0
- package/out/lib/dev-log.d.ts.map +1 -0
- package/out/lib/dev-log.js +64 -0
- package/out/lib/dev-log.js.map +1 -0
- package/out/lib/dev-session.d.ts +2 -0
- package/out/lib/dev-session.d.ts.map +1 -0
- package/out/lib/dev-session.js +95 -0
- package/out/lib/dev-session.js.map +1 -0
- package/out/lib/dev.d.ts +2 -0
- package/out/lib/dev.d.ts.map +1 -0
- package/out/lib/dev.js +906 -0
- package/out/lib/dev.js.map +1 -0
- package/out/lib/docker.d.ts +2 -0
- package/out/lib/docker.d.ts.map +1 -0
- package/out/lib/docker.js +398 -0
- package/out/lib/docker.js.map +1 -0
- package/out/lib/doctor.d.ts +2 -0
- package/out/lib/doctor.d.ts.map +1 -0
- package/out/lib/doctor.js +260 -0
- package/out/lib/doctor.js.map +1 -0
- package/out/lib/health-parse.d.ts +5 -0
- package/out/lib/health-parse.d.ts.map +1 -0
- package/out/lib/health-parse.js +36 -0
- package/out/lib/health-parse.js.map +1 -0
- package/out/lib/health-parse.test.d.ts +2 -0
- package/out/lib/health-parse.test.d.ts.map +1 -0
- package/out/lib/health-parse.test.js +19 -0
- package/out/lib/health-parse.test.js.map +1 -0
- package/out/lib/http.d.ts +2 -0
- package/out/lib/http.d.ts.map +1 -0
- package/out/lib/http.js +234 -0
- package/out/lib/http.js.map +1 -0
- package/out/lib/i18n/index.d.ts +2 -0
- package/out/lib/i18n/index.d.ts.map +1 -0
- package/out/lib/i18n/index.js +29 -0
- package/out/lib/i18n/index.js.map +1 -0
- package/out/lib/i18n/strings.d.ts +2 -0
- package/out/lib/i18n/strings.d.ts.map +1 -0
- package/out/lib/i18n/strings.js +1140 -0
- package/out/lib/i18n/strings.js.map +1 -0
- package/out/lib/lifecycle.d.ts +2 -0
- package/out/lib/lifecycle.d.ts.map +1 -0
- package/out/lib/lifecycle.js +169 -0
- package/out/lib/lifecycle.js.map +1 -0
- package/out/lib/nginx.d.ts +2 -0
- package/out/lib/nginx.d.ts.map +1 -0
- package/out/lib/nginx.js +618 -0
- package/out/lib/nginx.js.map +1 -0
- package/out/lib/paths.d.ts +2 -0
- package/out/lib/paths.d.ts.map +1 -0
- package/out/lib/paths.js +106 -0
- package/out/lib/paths.js.map +1 -0
- package/out/lib/plugin-build.d.ts +2 -0
- package/out/lib/plugin-build.d.ts.map +1 -0
- package/out/lib/plugin-build.js +104 -0
- package/out/lib/plugin-build.js.map +1 -0
- package/out/lib/plugin-cli.d.ts +2 -0
- package/out/lib/plugin-cli.d.ts.map +1 -0
- package/out/lib/plugin-cli.js +142 -0
- package/out/lib/plugin-cli.js.map +1 -0
- package/out/lib/pm2.d.ts +2 -0
- package/out/lib/pm2.d.ts.map +1 -0
- package/out/lib/pm2.js +32 -0
- package/out/lib/pm2.js.map +1 -0
- package/out/lib/ports.d.ts +2 -0
- package/out/lib/ports.d.ts.map +1 -0
- package/out/lib/ports.js +394 -0
- package/out/lib/ports.js.map +1 -0
- package/out/lib/process.d.ts +2 -0
- package/out/lib/process.d.ts.map +1 -0
- package/out/lib/process.js +47 -0
- package/out/lib/process.js.map +1 -0
- package/out/lib/prod-memory.d.ts +6 -0
- package/out/lib/prod-memory.d.ts.map +1 -0
- package/out/lib/prod-memory.js +57 -0
- package/out/lib/prod-memory.js.map +1 -0
- package/out/lib/project-type.d.ts +2 -0
- package/out/lib/project-type.d.ts.map +1 -0
- package/out/lib/project-type.js +77 -0
- package/out/lib/project-type.js.map +1 -0
- package/out/lib/publish.d.ts +3 -0
- package/out/lib/publish.d.ts.map +1 -0
- package/out/lib/publish.js +388 -0
- package/out/lib/publish.js.map +1 -0
- package/out/lib/remote-dev.d.ts +2 -0
- package/out/lib/remote-dev.d.ts.map +1 -0
- package/out/lib/remote-dev.js +158 -0
- package/out/lib/remote-dev.js.map +1 -0
- package/out/lib/root.d.ts +2 -0
- package/out/lib/root.d.ts.map +1 -0
- package/out/lib/root.js +85 -0
- package/out/lib/root.js.map +1 -0
- package/out/lib/spawn.d.ts +2 -0
- package/out/lib/spawn.d.ts.map +1 -0
- package/out/lib/spawn.js +96 -0
- package/out/lib/spawn.js.map +1 -0
- package/out/lib/status.d.ts +2 -0
- package/out/lib/status.d.ts.map +1 -0
- package/out/lib/status.js +78 -0
- package/out/lib/status.js.map +1 -0
- package/out/lib/theme-catalog.d.ts +2 -0
- package/out/lib/theme-catalog.d.ts.map +1 -0
- package/out/lib/theme-catalog.js +6 -0
- package/out/lib/theme-catalog.js.map +1 -0
- package/out/lib/theme-cli.d.ts +2 -0
- package/out/lib/theme-cli.d.ts.map +1 -0
- package/out/lib/theme-cli.js +50 -0
- package/out/lib/theme-cli.js.map +1 -0
- package/out/lib/theme-dev.d.ts +2 -0
- package/out/lib/theme-dev.d.ts.map +1 -0
- package/out/lib/theme-dev.js +759 -0
- package/out/lib/theme-dev.js.map +1 -0
- package/out/lib/theme-env.d.ts +2 -0
- package/out/lib/theme-env.d.ts.map +1 -0
- package/out/lib/theme-env.js +101 -0
- package/out/lib/theme-env.js.map +1 -0
- package/out/lib/theme-install.d.ts +2 -0
- package/out/lib/theme-install.d.ts.map +1 -0
- package/out/lib/theme-install.js +363 -0
- package/out/lib/theme-install.js.map +1 -0
- package/out/lib/theme-lock.d.ts +2 -0
- package/out/lib/theme-lock.d.ts.map +1 -0
- package/out/lib/theme-lock.js +70 -0
- package/out/lib/theme-lock.js.map +1 -0
- package/out/lib/theme-paths.d.ts +2 -0
- package/out/lib/theme-paths.d.ts.map +1 -0
- package/out/lib/theme-paths.js +73 -0
- package/out/lib/theme-paths.js.map +1 -0
- package/out/lib/theme-placeholder-cover.d.ts +13 -0
- package/out/lib/theme-placeholder-cover.d.ts.map +1 -0
- package/out/lib/theme-placeholder-cover.js +95 -0
- package/out/lib/theme-placeholder-cover.js.map +1 -0
- package/out/lib/theme-preview-frame.d.ts +2 -0
- package/out/lib/theme-preview-frame.d.ts.map +1 -0
- package/out/lib/theme-preview-frame.js +107 -0
- package/out/lib/theme-preview-frame.js.map +1 -0
- package/out/lib/theme-preview-pool.d.ts +2 -0
- package/out/lib/theme-preview-pool.d.ts.map +1 -0
- package/out/lib/theme-preview-pool.js +484 -0
- package/out/lib/theme-preview-pool.js.map +1 -0
- package/out/lib/theme-preview-proxy.d.ts +2 -0
- package/out/lib/theme-preview-proxy.d.ts.map +1 -0
- package/out/lib/theme-preview-proxy.js +101 -0
- package/out/lib/theme-preview-proxy.js.map +1 -0
- package/out/lib/theme-prod.d.ts +2 -0
- package/out/lib/theme-prod.d.ts.map +1 -0
- package/out/lib/theme-prod.js +400 -0
- package/out/lib/theme-prod.js.map +1 -0
- package/out/lib/theme-registry.d.ts +2 -0
- package/out/lib/theme-registry.d.ts.map +1 -0
- package/out/lib/theme-registry.js +135 -0
- package/out/lib/theme-registry.js.map +1 -0
- package/out/lib/theme-runtime.d.ts +2 -0
- package/out/lib/theme-runtime.d.ts.map +1 -0
- package/out/lib/theme-runtime.js +344 -0
- package/out/lib/theme-runtime.js.map +1 -0
- package/out/lib/theme-sources.d.ts +2 -0
- package/out/lib/theme-sources.d.ts.map +1 -0
- package/out/lib/theme-sources.js +347 -0
- package/out/lib/theme-sources.js.map +1 -0
- package/out/lib/theme-warmup.d.ts +2 -0
- package/out/lib/theme-warmup.d.ts.map +1 -0
- package/out/lib/theme-warmup.js +167 -0
- package/out/lib/theme-warmup.js.map +1 -0
- package/out/lib/toolkit-build.d.ts +2 -0
- package/out/lib/toolkit-build.d.ts.map +1 -0
- package/out/lib/toolkit-build.js +57 -0
- package/out/lib/toolkit-build.js.map +1 -0
- package/out/types/config.d.ts +57 -0
- package/out/types/config.d.ts.map +1 -0
- package/out/types/config.js +3 -0
- package/out/types/config.js.map +1 -0
- package/out/ui/banner.d.ts +2 -0
- package/out/ui/banner.d.ts.map +1 -0
- package/out/ui/banner.js +358 -0
- package/out/ui/banner.js.map +1 -0
- package/out/ui/interactive.d.ts +2 -0
- package/out/ui/interactive.d.ts.map +1 -0
- package/out/ui/interactive.js +328 -0
- package/out/ui/interactive.js.map +1 -0
- package/out/ui/theme.d.ts +2 -0
- package/out/ui/theme.d.ts.map +1 -0
- package/out/ui/theme.js +250 -0
- package/out/ui/theme.js.map +1 -0
- package/package.json +13 -7
- package/server/dist/common/api-messages.d.ts +9 -0
- package/server/dist/common/api-messages.js +9 -0
- package/server/dist/common/api-messages.js.map +1 -1
- package/server/dist/database/typeorm-options.d.ts +3 -0
- package/server/dist/database/typeorm-options.js +60 -0
- package/server/dist/database/typeorm-options.js.map +1 -0
- package/server/dist/modules/api-key/api-key.controller.js.map +1 -1
- package/server/dist/modules/api-key/api-key.entity.js.map +1 -1
- package/server/dist/modules/api-key/api-key.guard.js +2 -3
- package/server/dist/modules/api-key/api-key.guard.js.map +1 -1
- package/server/dist/modules/api-key/api-key.module.js.map +1 -1
- package/server/dist/modules/api-key/api-key.service.js +1 -1
- package/server/dist/modules/api-key/api-key.service.js.map +1 -1
- package/server/dist/modules/article/article-revision.entity.js +3 -3
- package/server/dist/modules/article/article-revision.entity.js.map +1 -1
- package/server/dist/modules/article/article-slug.util.d.ts +2 -0
- package/server/dist/modules/article/article-slug.util.js +19 -0
- package/server/dist/modules/article/article-slug.util.js.map +1 -0
- package/server/dist/modules/article/scheduled-publish.service.js.map +1 -1
- package/server/dist/modules/bootstrap/bootstrap.constants.d.ts +20 -0
- package/server/dist/modules/bootstrap/bootstrap.constants.js +171 -0
- package/server/dist/modules/bootstrap/bootstrap.constants.js.map +1 -0
- package/server/dist/modules/bootstrap/bootstrap.service.d.ts +22 -0
- package/server/dist/modules/bootstrap/bootstrap.service.js +183 -0
- package/server/dist/modules/bootstrap/bootstrap.service.js.map +1 -0
- package/server/dist/modules/bootstrap/install-locale.d.ts +2 -0
- package/server/dist/modules/bootstrap/install-locale.js +11 -0
- package/server/dist/modules/bootstrap/install-locale.js.map +1 -0
- package/server/dist/modules/extension/extension.module.d.ts +9 -0
- package/server/dist/modules/extension/extension.module.js +50 -0
- package/server/dist/modules/extension/extension.module.js.map +1 -0
- package/server/dist/modules/extension/plugin-loader.service.d.ts +12 -0
- package/server/dist/modules/extension/plugin-loader.service.js +96 -0
- package/server/dist/modules/extension/plugin-loader.service.js.map +1 -0
- package/server/dist/modules/extension/plugin-registry.bridge.d.ts +3 -0
- package/server/dist/modules/extension/plugin-registry.bridge.js +44 -0
- package/server/dist/modules/extension/plugin-registry.bridge.js.map +1 -0
- package/server/dist/modules/extension/plugin.controller.d.ts +22 -0
- package/server/dist/modules/extension/plugin.controller.js +155 -0
- package/server/dist/modules/extension/plugin.controller.js.map +1 -0
- package/server/dist/modules/extension/plugin.service.d.ts +52 -0
- package/server/dist/modules/extension/plugin.service.js +391 -0
- package/server/dist/modules/extension/plugin.service.js.map +1 -0
- package/server/dist/modules/extension/preview-draft.store.d.ts +13 -0
- package/server/dist/modules/extension/preview-draft.store.js +41 -0
- package/server/dist/modules/extension/preview-draft.store.js.map +1 -0
- package/server/dist/modules/extension/theme-registry.bridge.d.ts +56 -0
- package/server/dist/modules/extension/theme-registry.bridge.js +46 -0
- package/server/dist/modules/extension/theme-registry.bridge.js.map +1 -0
- package/server/dist/modules/extension/theme.controller.d.ts +66 -0
- package/server/dist/modules/extension/theme.controller.js +301 -0
- package/server/dist/modules/extension/theme.controller.js.map +1 -0
- package/server/dist/modules/extension/theme.service.d.ts +140 -0
- package/server/dist/modules/extension/theme.service.js +1039 -0
- package/server/dist/modules/extension/theme.service.js.map +1 -0
- package/server/dist/modules/file/file-optimization.controller.d.ts +12 -0
- package/server/dist/modules/file/file-optimization.controller.js +79 -0
- package/server/dist/modules/file/file-optimization.controller.js.map +1 -0
- package/server/dist/modules/file/file-optimization.service.d.ts +36 -0
- package/server/dist/modules/file/file-optimization.service.js +385 -0
- package/server/dist/modules/file/file-optimization.service.js.map +1 -0
- package/server/dist/modules/file/file-optimization.types.d.ts +66 -0
- package/server/dist/modules/file/file-optimization.types.js +5 -0
- package/server/dist/modules/file/file-optimization.types.js.map +1 -0
- package/server/dist/modules/file/image-optimizer-plugin.guard.d.ts +7 -0
- package/server/dist/modules/file/image-optimizer-plugin.guard.js +33 -0
- package/server/dist/modules/file/image-optimizer-plugin.guard.js.map +1 -0
- package/server/dist/modules/health/health.controller.js +2 -4
- package/server/dist/modules/health/health.controller.js.map +1 -1
- package/server/dist/modules/health/health.module.js.map +1 -1
- package/server/dist/modules/hook/hook.module.d.ts +2 -0
- package/server/dist/modules/hook/hook.module.js +22 -0
- package/server/dist/modules/hook/hook.module.js.map +1 -0
- package/server/dist/modules/hook/hook.service.d.ts +26 -0
- package/server/dist/modules/hook/hook.service.js +105 -0
- package/server/dist/modules/hook/hook.service.js.map +1 -0
- package/server/dist/modules/webhook/webhook.controller.js.map +1 -1
- package/server/dist/modules/webhook/webhook.entity.js.map +1 -1
- package/server/dist/modules/webhook/webhook.module.js.map +1 -1
- package/server/dist/modules/webhook/webhook.service.d.ts +1 -1
- package/server/dist/modules/webhook/webhook.service.js +5 -2
- package/server/dist/modules/webhook/webhook.service.js.map +1 -1
- package/server/dist/public/uploads/2026-05-30/QR3X4UZQ93ZTUPGXCFA9II..png +0 -0
- package/server/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8.webp +0 -0
- package/server/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_medium.webp +0 -0
- package/server/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_thumb.webp +0 -0
- package/server/dist/public/uploads/2026-05-31/I2SZC0ONA7CF31UM46MN56..jpg +0 -0
- package/server/dist/tsconfig.tsbuildinfo +1 -0
- package/server/dist/utils/image-processor.util.d.ts +23 -0
- package/server/dist/utils/image-processor.util.js +88 -0
- package/server/dist/utils/image-processor.util.js.map +1 -0
- package/server/dist/utils/local-api-quiet.util.d.ts +1 -0
- package/server/dist/utils/local-api-quiet.util.js +8 -0
- package/server/dist/utils/local-api-quiet.util.js.map +1 -0
- package/server/dist/utils/project-root.util.d.ts +2 -0
- package/server/dist/utils/project-root.util.js +42 -0
- package/server/dist/utils/project-root.util.js.map +1 -0
- package/server/public/uploads/2026-05-30/QR3X4UZQ93ZTUPGXCFA9II..png +0 -0
- package/server/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8.webp +0 -0
- package/server/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_medium.webp +0 -0
- package/server/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_thumb.webp +0 -0
- package/server/public/uploads/2026-05-31/I2SZC0ONA7CF31UM46MN56..jpg +0 -0
- package/templates/config.local.json +13 -0
- package/templates/env.local.default +10 -0
- package/templates/theme-catalog.json +27 -0
- package/lib/api-dev.js +0 -89
- package/lib/bootstrap.js +0 -114
- package/lib/build.js +0 -162
- package/lib/db-backup.js +0 -67
- package/lib/dev-banner.js +0 -72
- package/lib/dev.js +0 -141
- package/lib/docker.js +0 -275
- package/lib/doctor.js +0 -266
- package/lib/http.js +0 -182
- package/lib/i18n/index.js +0 -32
- package/lib/i18n/strings.js +0 -846
- package/lib/lifecycle.js +0 -190
- package/lib/nginx.js +0 -342
- package/lib/paths.js +0 -108
- package/lib/pm2.js +0 -32
- package/lib/process.js +0 -45
- package/lib/project-type.js +0 -72
- package/lib/publish.js +0 -968
- package/lib/root.js +0 -88
- package/lib/spawn.js +0 -92
- package/lib/status.js +0 -132
- package/ui/banner.js +0 -441
- package/ui/interactive.js +0 -380
- package/ui/theme.js +0 -265
|
@@ -0,0 +1,1140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/** CLI user-facing strings — English first, Chinese via REACTPRESS_LANG=zh or zh LANG */
|
|
4
|
+
const STRINGS = {
|
|
5
|
+
en: {
|
|
6
|
+
'cli.description': 'ReactPress CLI — init, dev, build, deploy, and publish',
|
|
7
|
+
'cli.init.description': 'Initialize project (.reactpress/config.json + .env + Docker MySQL)',
|
|
8
|
+
'cli.init.directory': 'Project directory',
|
|
9
|
+
'cli.init.force': 'Overwrite existing config',
|
|
10
|
+
'cli.init.local': 'Initialize with embedded SQLite (no Docker)',
|
|
11
|
+
'cli.dev.description': 'Zero-config dev: env check + toolkit build + API + frontend',
|
|
12
|
+
'cli.dev.apiOnly': 'API only (watch)',
|
|
13
|
+
'cli.dev.local': 'Local SQLite mode (no Docker/nginx)',
|
|
14
|
+
'cli.dev.clientOnly': 'Frontend only',
|
|
15
|
+
'cli.dev.webOnly': 'Admin SPA + API (web/)',
|
|
16
|
+
'cli.dev.remoteOrigin': 'Default remote API URL; with no admin/client flags, both use remote',
|
|
17
|
+
'cli.dev.adminOrigin': 'Admin API: local | remote | URL (remote uses --remote-origin default)',
|
|
18
|
+
'cli.dev.clientOrigin': 'Client/theme API (nginx /api): local | remote | URL',
|
|
19
|
+
'cli.dev.remoteOriginRequired': '--remote-origin requires a URL (e.g. api.gaoredu.com)',
|
|
20
|
+
'cli.dev.remoteDefaultRequired': 'Use remote with a URL: --remote-origin or pass a URL to admin/client-origin',
|
|
21
|
+
'cli.dev.invalidOrigin': 'Invalid origin; use local, remote, or a host/URL',
|
|
22
|
+
'cli.dev.remoteOriginIncompatibleApiOnly': 'Remote API flags cannot be used with --api-only',
|
|
23
|
+
'cli.desktopDev.description': 'Desktop dev: embedded SQLite API + admin SPA + Electron (no Docker/MySQL)',
|
|
24
|
+
'cli.server.description': 'Manage API service',
|
|
25
|
+
'cli.server.start.description': 'Start API (wait until HTTP ready)',
|
|
26
|
+
'cli.server.start.pm2': 'Start with PM2 (production)',
|
|
27
|
+
'cli.server.start.bg': 'Start in background without waiting for HTTP',
|
|
28
|
+
'cli.server.stop': 'Stop API',
|
|
29
|
+
'cli.server.restart': 'Restart API',
|
|
30
|
+
'cli.server.status': 'API status',
|
|
31
|
+
'cli.client.description': 'Manage frontend',
|
|
32
|
+
'cli.client.start': 'Start Next.js client',
|
|
33
|
+
'cli.client.start.pm2': 'Start with PM2',
|
|
34
|
+
'cli.client.restart': 'Rebuild active theme and restart visitor client',
|
|
35
|
+
'themeProd.building': 'Building active theme "{id}"…',
|
|
36
|
+
'themeProd.installingDeps': 'Installing dependencies for theme "{id}"…',
|
|
37
|
+
'themeProd.reusingBuild': 'Reusing existing build for theme "{id}" (skip rebuild)',
|
|
38
|
+
'themeProd.restarting': 'Restarting visitor client for theme "{id}"…',
|
|
39
|
+
'themeProd.restarted': 'Visitor client is running theme "{id}".',
|
|
40
|
+
'themePreview.backgroundBuildScheduled': 'Scheduling background production builds for {count} preview theme(s)…',
|
|
41
|
+
'themePreview.warmingAll': 'Pre-building {count} theme preview(s) for fast switching…',
|
|
42
|
+
'themePreview.warmingAllSkipped': '{count} preview build(s) already up to date',
|
|
43
|
+
'themePreview.installingDeps': 'Installing dependencies for preview theme "{id}"…',
|
|
44
|
+
'themePreview.building': 'Building preview theme "{id}"…',
|
|
45
|
+
'themePreview.reusingBuild': 'Reusing existing build for preview theme "{id}" (skip rebuild)',
|
|
46
|
+
'themePreview.buildDone': 'Preview theme "{id}" build finished.',
|
|
47
|
+
'themePreview.buildFailed': 'Preview theme "{id}" build failed: {message}',
|
|
48
|
+
'themePreview.starting': 'Preview theme "{id}" → {url} (port {port}, {dir}, {mode})',
|
|
49
|
+
'themePreview.ready': 'Preview ready: {url} (theme: {id})',
|
|
50
|
+
'cli.build.description': 'Build production artifacts',
|
|
51
|
+
'cli.docker.description': 'Docker dev environment (MySQL + nginx)',
|
|
52
|
+
'cli.docker.up': 'Start Docker services and wait for MySQL',
|
|
53
|
+
'cli.docker.down': 'Stop Docker services',
|
|
54
|
+
'cli.docker.start': 'Start Docker + full-stack dev (API + frontend)',
|
|
55
|
+
'cli.docker.restart': 'Restart Docker services',
|
|
56
|
+
'cli.docker.status': 'Docker container status',
|
|
57
|
+
'cli.docker.logs': 'Docker logs (db | nginx)',
|
|
58
|
+
'cli.nginx.description': 'Nginx reverse proxy (unified entry on :80)',
|
|
59
|
+
'cli.nginx.ensure': 'Write default nginx config if missing',
|
|
60
|
+
'cli.nginx.up': 'Start nginx container',
|
|
61
|
+
'cli.nginx.down': 'Stop nginx container',
|
|
62
|
+
'cli.nginx.restart': 'Restart nginx container',
|
|
63
|
+
'cli.nginx.status': 'Show nginx container and config status',
|
|
64
|
+
'cli.nginx.logs': 'Follow nginx container logs',
|
|
65
|
+
'cli.nginx.test': 'Validate nginx config inside container (nginx -t)',
|
|
66
|
+
'cli.nginx.reload': 'Reload nginx after config change',
|
|
67
|
+
'cli.nginx.open': 'Open nginx entry URL in browser',
|
|
68
|
+
'cli.nginx.prod': 'Use production compose + nginx.conf (monorepo only)',
|
|
69
|
+
'cli.nginx.force': 'Overwrite existing nginx config from template',
|
|
70
|
+
'cli.help.nginx': ' reactpress nginx up Start reverse proxy (:80)',
|
|
71
|
+
'cli.status.description': 'Project, API, frontend, and Docker status',
|
|
72
|
+
'cli.doctor.description': 'Diagnose Node, Docker, ports, database, and API health',
|
|
73
|
+
'cli.db.description': 'Database operations',
|
|
74
|
+
'cli.db.backup': 'Backup current project database with mysqldump',
|
|
75
|
+
'cli.db.backup.output': 'Output SQL file path',
|
|
76
|
+
'cli.publish.description': 'Build and publish npm packages',
|
|
77
|
+
'cli.publish.build': 'Build publish artifacts only',
|
|
78
|
+
'cli.publish.publish': 'Publish core packages to npm',
|
|
79
|
+
'cli.start.description': 'Production: start API + frontend',
|
|
80
|
+
'cli.help.examples': 'Examples:',
|
|
81
|
+
'cli.help.interactive': ' reactpress Interactive menu',
|
|
82
|
+
'cli.help.dev': ' reactpress dev Zero-config full-stack dev',
|
|
83
|
+
'cli.help.init': ' reactpress init --force Re-initialize config',
|
|
84
|
+
'cli.help.server': ' reactpress server start Start API',
|
|
85
|
+
'cli.help.status': ' reactpress status Combined status',
|
|
86
|
+
'cli.help.doctor': ' reactpress doctor Environment diagnostics',
|
|
87
|
+
'cli.help.docker': ' reactpress docker start Docker + full stack',
|
|
88
|
+
'cli.help.build': ' reactpress build -t client Build one target (toolkit|server|client|docs|all)',
|
|
89
|
+
'cli.help.publish': ' reactpress publish Publish npm packages',
|
|
90
|
+
'cli.help.theme': ' reactpress theme add <spec> Install theme from npm',
|
|
91
|
+
'cli.theme.description': 'Install and manage themes',
|
|
92
|
+
'cli.theme.add.description': 'Install a theme from an npm package spec or .tgz file',
|
|
93
|
+
'cli.theme.add.spec': 'npm package spec (e.g. @fecommunity/reactpress-theme-starter@1.0.0-beta.0)',
|
|
94
|
+
'cli.theme.add.catalog': 'Install from themes/{dir}/package.json by theme id',
|
|
95
|
+
'cli.theme.add.skipDeps': 'Skip pnpm/npm install in the theme directory',
|
|
96
|
+
'cli.theme.list.description': 'List available theme packages',
|
|
97
|
+
'themeInstall.specRequired': 'Theme npm spec is required',
|
|
98
|
+
'themeInstall.installing': 'Installing theme from npm: {spec}',
|
|
99
|
+
'themeInstall.success': 'Theme "{name}" installed as "{id}" → {dir}',
|
|
100
|
+
'themeInstall.nextActivate': 'Enable it in Admin → Appearance → Themes, or: POST /extension/themes/{id}/activate',
|
|
101
|
+
'themeInstall.listHeading': 'Available themes:',
|
|
102
|
+
'themeInstall.listEmpty': 'No theme packages found under themes/ or .reactpress/runtime/',
|
|
103
|
+
'cli.build.target': 'Build target: toolkit | server | client | docs | all',
|
|
104
|
+
'cli.build.lowMem': 'Cap Node heap for builds and skip unchanged steps (2GB VPS)',
|
|
105
|
+
'banner.subtitle': ' · Full-stack publishing CLI ',
|
|
106
|
+
/** Left label for the decorative pulse bar (not a URL — the repo link
|
|
107
|
+
* lives directly under the title bar at the top of the card). */
|
|
108
|
+
'banner.pulseLabel': 'Setup',
|
|
109
|
+
'banner.pulseReady': 'READY',
|
|
110
|
+
'banner.pulsePending': 'INIT',
|
|
111
|
+
'banner.label.mode': 'MODE',
|
|
112
|
+
'banner.label.path': 'PATH',
|
|
113
|
+
'banner.mode.standalone': 'STANDALONE',
|
|
114
|
+
'banner.mode.monorepo': 'MONOREPO',
|
|
115
|
+
'banner.mode.uninitialized': 'UNINITIALIZED',
|
|
116
|
+
'banner.systemLabel': 'SYSTEM',
|
|
117
|
+
'banner.systemOnline': 'ONLINE',
|
|
118
|
+
'banner.systemPending': 'PENDING',
|
|
119
|
+
'menu.dev': 'Zero-config dev (env + DB + API + frontend)',
|
|
120
|
+
'menu.init': 'Initialize project (.reactpress + .env + database)',
|
|
121
|
+
'menu.status': 'View project status',
|
|
122
|
+
'menu.doctor': 'Environment diagnostics (doctor)',
|
|
123
|
+
'menu.devApi': 'API only (dev watch)',
|
|
124
|
+
'menu.devClient': 'Frontend only',
|
|
125
|
+
'menu.serverStart': 'Start API (production background)',
|
|
126
|
+
'menu.serverStop': 'Stop API',
|
|
127
|
+
'menu.serverRestart': 'Restart API',
|
|
128
|
+
'menu.build': 'Build (toolkit → server → client)',
|
|
129
|
+
'menu.buildTarget': 'What do you want to build?',
|
|
130
|
+
'menu.buildAll': 'All (toolkit → server → client)',
|
|
131
|
+
'menu.dockerStart': 'Docker dev (DB + nginx + full stack)',
|
|
132
|
+
'menu.dockerUp': 'Docker: database only',
|
|
133
|
+
'menu.dockerStop': 'Stop Docker services',
|
|
134
|
+
'menu.openAdmin': 'Open admin in browser',
|
|
135
|
+
'menu.publish': 'Publish npm packages (interactive)',
|
|
136
|
+
'menu.exit': 'Exit',
|
|
137
|
+
'menu.prompt': 'Choose an action',
|
|
138
|
+
'menu.back': 'Return to main menu?',
|
|
139
|
+
'menu.retry': 'Return to main menu and retry?',
|
|
140
|
+
'menu.startingDev': 'Starting full-stack dev…',
|
|
141
|
+
'menu.initProject': 'Initializing project…',
|
|
142
|
+
'menu.done': 'Done',
|
|
143
|
+
'menu.opening': 'Opening {url}',
|
|
144
|
+
'menu.goodbye': ' Goodbye.',
|
|
145
|
+
'menu.section.run': 'Run',
|
|
146
|
+
'menu.section.lifecycle': 'Lifecycle',
|
|
147
|
+
'menu.section.build': 'Build & Deploy',
|
|
148
|
+
'menu.section.tools': 'Tools',
|
|
149
|
+
'menu.tip': 'Tip: arrow keys to navigate, Enter to select, Ctrl+C to quit.',
|
|
150
|
+
'menu.shortcuts': '↑/↓ navigate · enter select · esc back · ctrl+c quit',
|
|
151
|
+
'menu.statusHeader': 'Status',
|
|
152
|
+
'menu.contextStandalone': 'Project mode · standalone (using bundled API)',
|
|
153
|
+
'menu.contextMonorepo': 'Project mode · monorepo (server/src + client/)',
|
|
154
|
+
'menu.contextUnknown': 'Project mode · not initialized (run `init`)',
|
|
155
|
+
'menu.statusApi': 'API {status}',
|
|
156
|
+
'menu.statusDb': 'DB {status}',
|
|
157
|
+
'menu.statusDocker': 'Docker {status}',
|
|
158
|
+
'menu.statusLabelApi': 'API',
|
|
159
|
+
'menu.statusLabelDb': 'DB',
|
|
160
|
+
'menu.statusLabelDocker': 'Docker',
|
|
161
|
+
'menu.statusChecking': 'checking…',
|
|
162
|
+
'menu.startingApi': 'Starting API…',
|
|
163
|
+
'menu.stoppingApi': 'Stopping API…',
|
|
164
|
+
'menu.restartingApi': 'Restarting API…',
|
|
165
|
+
'menu.statusOn': 'online',
|
|
166
|
+
'menu.statusOff': 'offline',
|
|
167
|
+
'menu.statusReady': 'ready',
|
|
168
|
+
'menu.statusNotReady': 'not ready',
|
|
169
|
+
'menu.statusYes': 'available',
|
|
170
|
+
'menu.statusNo': 'unavailable',
|
|
171
|
+
'menu.hint.dev': 'API + DB + frontend',
|
|
172
|
+
'menu.hint.init': '.reactpress + .env',
|
|
173
|
+
'menu.hint.status': 'all services overview',
|
|
174
|
+
'menu.hint.doctor': 'environment diagnostics',
|
|
175
|
+
'menu.hint.devApi': 'watch mode',
|
|
176
|
+
'menu.hint.devClient': 'Next.js dev',
|
|
177
|
+
'menu.hint.serverStart': 'production background',
|
|
178
|
+
'menu.hint.serverStop': '',
|
|
179
|
+
'menu.hint.serverRestart': '',
|
|
180
|
+
'menu.hint.build': 'production output',
|
|
181
|
+
'menu.hint.dockerStart': 'DB + nginx + dev stack',
|
|
182
|
+
'menu.hint.dockerUp': 'database only',
|
|
183
|
+
'menu.hint.dockerStop': '',
|
|
184
|
+
'menu.nginxUp': 'Start nginx reverse proxy (:80)',
|
|
185
|
+
'menu.nginxOpen': 'Open nginx entry in browser',
|
|
186
|
+
'menu.nginxReload': 'Reload nginx after editing config',
|
|
187
|
+
'menu.hint.nginxUp': 'unified entry :80',
|
|
188
|
+
'menu.hint.nginxOpen': 'http://localhost',
|
|
189
|
+
'menu.hint.nginxReload': 'nginx -t && reload',
|
|
190
|
+
'menu.hint.openAdmin': 'opens in browser',
|
|
191
|
+
'menu.hint.publish': 'maintainers only',
|
|
192
|
+
'menu.hint.exit': '',
|
|
193
|
+
'menu.actionPrefix': 'action',
|
|
194
|
+
'dev.phaseApi': 'API → :3002',
|
|
195
|
+
'dev.phasePrerequisites': 'Checking Node.js and Docker…',
|
|
196
|
+
'dev.phaseInfra': 'Starting MySQL and nginx…',
|
|
197
|
+
'dev.phaseServices': 'Starting API, admin SPA, and theme…',
|
|
198
|
+
'dev.phasePrerequisitesDesktop': 'Checking Node.js…',
|
|
199
|
+
'dev.phaseInfraDesktop': 'Building toolkit & local workspace…',
|
|
200
|
+
'dev.phaseServicesDesktop': 'Starting admin SPA and Electron…',
|
|
201
|
+
'dev.phaseServicesLocalWeb': 'Starting admin SPA (browser preview)…',
|
|
202
|
+
'dev.previewPrewarmStarting': 'Pre-building theme previews for fast switching…',
|
|
203
|
+
'dev.remoteApiUsing': 'Using remote API (nginx /api → {url})',
|
|
204
|
+
'dev.adminApiRemote': 'Admin API → {url}',
|
|
205
|
+
'dev.clientApiRemote': 'Client API (nginx /api) → {url}',
|
|
206
|
+
'dev.nginxReadyRemote': 'nginx ready at {url} (client API → {api})',
|
|
207
|
+
'dev.checkNodeOk': 'Node.js {version}',
|
|
208
|
+
'dev.checkDockerOk': 'Docker is running',
|
|
209
|
+
'dev.prerequisitesOk': '✓ Node {version} · ✓ Docker',
|
|
210
|
+
'dev.prerequisitesOkDesktop': '✓ Node {version} · SQLite (no Docker)',
|
|
211
|
+
'dev.apiKept': 'Keeping healthy API on port {port}',
|
|
212
|
+
'dev.timingReady': 'Ready in {summary}',
|
|
213
|
+
'dev.timingInfra': 'infra',
|
|
214
|
+
'dev.timingServices': 'services',
|
|
215
|
+
'dev.timingApiReused': 'API reused',
|
|
216
|
+
'dev.waitingApiQuiet': 'Waiting for API…',
|
|
217
|
+
'dev.mysqlReadyQuiet': 'MySQL ready',
|
|
218
|
+
'dev.themeStarting': 'Theme "{id}" → :{port}',
|
|
219
|
+
'dev.themeCacheClearedForRemote': 'Cleared theme .next (remote API — stale SERVER_API_URL)',
|
|
220
|
+
'dev.themeReadyQuiet': 'Visitor site ready → {url}',
|
|
221
|
+
'dev.phaseAdmin': 'Starting admin SPA (internal :3000/admin/)…',
|
|
222
|
+
'dev.phaseTheme': 'Starting active theme site (internal :3001)…',
|
|
223
|
+
'dev.phaseClient': 'Starting legacy client…',
|
|
224
|
+
'dev.phaseNginx': 'Starting nginx unified entry (:80)…',
|
|
225
|
+
'dev.phaseNginxWait': 'Waiting for admin & theme, then nginx…',
|
|
226
|
+
'dev.waitingProxies': 'Waiting for admin & theme…',
|
|
227
|
+
'dev.startingAdmin': 'Admin dev server → {url}',
|
|
228
|
+
'dev.adminNginxSlow': '[reactpress] Admin via nginx not ready: {url} — ensure Vite base is /admin/ (restart pnpm dev)',
|
|
229
|
+
'dev.nginxReady': 'Nginx → {url}',
|
|
230
|
+
'dev.proxiesReady': 'Admin & theme dev servers listening',
|
|
231
|
+
'dev.portApiBusy': '[reactpress] Port {port} is already in use (API not healthy). Stop the other process or run: reactpress doctor',
|
|
232
|
+
'dev.portApiBusyHint': '[reactpress] Tip: lsof -i :3002 · avoid running pnpm dev in two terminals',
|
|
233
|
+
'dev.startingApi': 'Starting API (port 3002)…',
|
|
234
|
+
'dev.waitingApi': 'Waiting for API: {url}',
|
|
235
|
+
'dev.waitingApiCompile': 'compiling (port {port} not listening yet)',
|
|
236
|
+
'dev.waitingApiStarting': 'port open, waiting for health',
|
|
237
|
+
'dev.healthDbDown': 'database down',
|
|
238
|
+
'dev.healthDegraded': 'API degraded',
|
|
239
|
+
'dev.apiTimeout': '[reactpress] API not ready within {seconds}s.\n → Run reactpress doctor\n → Embedded MySQL: reactpress docker up\n → Check DB_* and SERVER_SITE_URL in .env',
|
|
240
|
+
'dev.apiReusing': 'API on :{port} (healthy, skipped restart)',
|
|
241
|
+
'dev.apiReady': 'API ready',
|
|
242
|
+
'dev.toolkitUpToDate': 'Toolkit build skipped (dist is up to date; set REACTPRESS_FORCE_TOOLKIT_BUILD=1 to rebuild)',
|
|
243
|
+
'dev.themeSiteSkipped': 'visitor site (:3001) will not start until the theme package exists',
|
|
244
|
+
'dev.themeBackground': 'Visitor site (:3001) compiling in background — banner shows when API & admin are ready',
|
|
245
|
+
'dev.themeBackgroundReady': 'Visitor site ready: {url}',
|
|
246
|
+
'themeDev.starting': '[reactpress] Active theme "{id}" → {url} (port {port}, {dir})',
|
|
247
|
+
'themeDev.startingShort': 'Theme "{id}" on :{port} ({dir})',
|
|
248
|
+
'themeDev.cacheCleared': 'Cleared theme .next (REACTPRESS_CLEAR_THEME_CACHE=1)',
|
|
249
|
+
'themeDev.cacheStaleCleared': 'Cleared theme .next (missing {marker})',
|
|
250
|
+
'themeDev.apiSplit': '[reactpress] Theme API — SSR: {ssr} · browser: {browser}',
|
|
251
|
+
'themeDev.ready': '[reactpress] Public site ready: {url} (theme: {id})',
|
|
252
|
+
'themeDev.slow': '[reactpress] Theme site slow to start: {url}',
|
|
253
|
+
'themeDev.notFound': 'Theme package "{id}" not found',
|
|
254
|
+
'themeDev.invalidManifest': 'Ignored invalid active-theme.json (only themes/ or .reactpress/runtime/ packages apply)',
|
|
255
|
+
'themeDev.unavailable': 'will not listen',
|
|
256
|
+
'themeDev.restart': 'active-theme.json changed — restarting theme on :3001…',
|
|
257
|
+
'themeDev.restartFailed': 'theme restart failed: {message}',
|
|
258
|
+
'themeDev.portBusy': 'Port {port} still in use after stopping the previous theme — skip restart (retry activate or restart pnpm dev)',
|
|
259
|
+
'themeDev.portBusyHint': 'Or free the port manually: {cmd}',
|
|
260
|
+
'dev.apiReadyAdmin': 'API ready · starting admin',
|
|
261
|
+
'dev.clientSlow': '[reactpress] Frontend not responding within {seconds}s; it may still be compiling. Visit {url} later',
|
|
262
|
+
'dev.adminSlow': '[reactpress] Admin SPA not responding within {seconds}s; it may still be compiling. Visit {url} later',
|
|
263
|
+
'dev.noWeb': '[reactpress] web/ directory not found; cannot start admin dev stack.',
|
|
264
|
+
'dev.envFailed': '[reactpress] Environment setup failed:',
|
|
265
|
+
'dev.toolkitFailed': 'toolkit build failed with exit code: {code}',
|
|
266
|
+
'dev.nextSteps': 'Suggested next steps:',
|
|
267
|
+
'dev.nextDoctor': ' → reactpress doctor Diagnostics',
|
|
268
|
+
'dev.nextDocker': ' → reactpress docker up Start embedded MySQL',
|
|
269
|
+
'dev.nextEnv': ' → Check DB_* and SERVER_SITE_URL in .env',
|
|
270
|
+
'dev.standaloneHint': '[reactpress] Standalone project: only API is started here; build your own frontend separately.',
|
|
271
|
+
'dev.desktopStarting': 'Starting Electron desktop → {url}',
|
|
272
|
+
'dev.desktopMissing': 'desktop/ package not found — run from monorepo root',
|
|
273
|
+
'dev.desktopIntro': 'Desktop dev — local-first mode (SQLite embedded, no Docker/MySQL)',
|
|
274
|
+
'dev.localWebIntro': 'Local web dev — SQLite API + admin SPA in browser (no Docker/Electron)',
|
|
275
|
+
'dev.desktopLocalApiStarting': 'Starting embedded SQLite API…',
|
|
276
|
+
'dev.desktopLocalApiReady': '✓ Local API ({db}) → {url}',
|
|
277
|
+
'dev.desktopLocalApi': 'Local SQLite API → {url}',
|
|
278
|
+
'dev.dbTypeSqlite': 'SQLite',
|
|
279
|
+
'devBanner.ready': 'ReactPress dev environment is ready',
|
|
280
|
+
'devBanner.readyWeb': 'ReactPress admin dev environment is ready',
|
|
281
|
+
'devBanner.readyLocalWeb': 'ReactPress local web dev environment is ready',
|
|
282
|
+
'devBanner.readyDesktop': 'ReactPress desktop dev environment is ready',
|
|
283
|
+
'devBanner.readyApi': 'ReactPress API is ready',
|
|
284
|
+
'devBanner.site': 'Site',
|
|
285
|
+
'devBanner.admin': 'Admin',
|
|
286
|
+
'devBanner.api': 'API',
|
|
287
|
+
'devBanner.database': 'Database',
|
|
288
|
+
'devBanner.sqliteEmbedded': 'SQLite (embedded, no Docker)',
|
|
289
|
+
'devBanner.mysqlDocker': 'MySQL (Docker)',
|
|
290
|
+
'devBanner.swagger': 'Swagger',
|
|
291
|
+
'devBanner.health': 'Health',
|
|
292
|
+
'devBanner.desktopLocalHint': 'Default login admin/admin · switch to remote API in Settings',
|
|
293
|
+
'devBanner.localWebHint': 'Open the admin URL in your browser · default login admin/admin',
|
|
294
|
+
'devBanner.localModeGo': 'LOCAL MODE READY',
|
|
295
|
+
'devBanner.hint': 'Diagnostics: reactpress doctor · Status: reactpress status',
|
|
296
|
+
'devBanner.nginxHint': 'Internal ports 3001 (site) / 3002 (API) / 3003 (preview) / 3000 (admin) — use URLs above only',
|
|
297
|
+
'devBanner.nginxRemoteHint': 'Client /api proxied to {url}',
|
|
298
|
+
'devBanner.adminRemoteHint': 'Admin /api proxied to {url}',
|
|
299
|
+
'devBanner.shortcuts': 'Ctrl+C stop',
|
|
300
|
+
'devBanner.allSystemsGo': 'ALL SYSTEMS GO',
|
|
301
|
+
'devBanner.dbDegraded': 'DB OFFLINE — run reactpress docker up',
|
|
302
|
+
'dev.nginxSkippedDocker': '[reactpress] Docker not running — skipping nginx (use direct ports or start Docker)',
|
|
303
|
+
'dev.nginxStartFailed': '[reactpress] nginx failed to start: {message}',
|
|
304
|
+
'dev.dbEnsureFailed': '[reactpress] Database not ready: {message}',
|
|
305
|
+
'dev.mysqlUnreachable': '[reactpress] MySQL is not reachable — theme/admin API calls will fail. Start Docker, then: reactpress docker up',
|
|
306
|
+
'dev.nginxSlow': '[reactpress] nginx entry slow to respond: {url}',
|
|
307
|
+
'doctor.nodeBad': 'Node.js {version} (requires ≥ 18)',
|
|
308
|
+
'doctor.nodeFix': 'Install Node.js 18+: https://nodejs.org/',
|
|
309
|
+
'doctor.dockerOk': 'Docker engine is available',
|
|
310
|
+
'doctor.dockerBad': 'Docker is not running or unavailable',
|
|
311
|
+
'doctor.dockerFix': 'Install and start Docker: https://docs.docker.com/get-docker/ , then run reactpress docker up; or use external MySQL in config.json',
|
|
312
|
+
'doctor.portApiBusy': 'API port {port} is in use',
|
|
313
|
+
'doctor.portClientBusy': 'Frontend port {port} is in use',
|
|
314
|
+
'doctor.portFix': 'Change SERVER_PORT / CLIENT_PORT in .env, or stop the blocking process',
|
|
315
|
+
'doctor.portOk': 'Ports {apiPort} (API) and {clientPort} (frontend) are available',
|
|
316
|
+
'doctor.dbNoMysql2': 'mysql2 not installed; cannot check database',
|
|
317
|
+
'doctor.dbMysql2Fix': 'Run pnpm install at monorepo root',
|
|
318
|
+
'doctor.dbOk': 'MySQL {host}:{port}/{database} connected',
|
|
319
|
+
'doctor.dbBad': 'Database connection failed: {error}',
|
|
320
|
+
'doctor.dbFix': 'Run reactpress docker up or check DB_* in .env',
|
|
321
|
+
'doctor.dbSqliteOk': 'SQLite ready ({detail})',
|
|
322
|
+
'doctor.dbSqliteBad': 'SQLite check failed: {error}',
|
|
323
|
+
'doctor.dbSqliteFix': 'Run reactpress init --local or check DB_DATABASE in .env',
|
|
324
|
+
'doctor.apiOk': 'API health check passed ({url})',
|
|
325
|
+
'doctor.apiBad': 'API health check failed ({url})',
|
|
326
|
+
'doctor.apiFix': 'Run reactpress server start or reactpress dev',
|
|
327
|
+
'doctor.pnpmBad': 'pnpm not found',
|
|
328
|
+
'doctor.pnpmFix': 'npm i -g pnpm, or enable corepack at monorepo root',
|
|
329
|
+
'doctor.check.config': 'Config file',
|
|
330
|
+
'doctor.check.env': 'Environment',
|
|
331
|
+
'doctor.check.ports': 'Ports',
|
|
332
|
+
'doctor.check.database': 'Database',
|
|
333
|
+
'doctor.check.api': 'API health',
|
|
334
|
+
'doctor.configOk': '.reactpress/config.json exists',
|
|
335
|
+
'doctor.configBad': 'Missing .reactpress/config.json',
|
|
336
|
+
'doctor.configFix': 'Run reactpress init',
|
|
337
|
+
'doctor.envOk': '.env exists',
|
|
338
|
+
'doctor.envBad': 'Missing .env',
|
|
339
|
+
'doctor.envFix': 'Run reactpress init or reactpress config --apply',
|
|
340
|
+
'doctor.project': 'Project {path}',
|
|
341
|
+
'doctor.allPass': 'All checks passed. You can start developing.',
|
|
342
|
+
'doctor.failed': '{count} item(s) need attention.',
|
|
343
|
+
'doctor.title': 'ReactPress Doctor',
|
|
344
|
+
'doctor.subtitle': 'environment diagnostics',
|
|
345
|
+
'doctor.checking': 'Checking {name}…',
|
|
346
|
+
'doctor.summary': '{passed} passed · {failed} failed · {total} total',
|
|
347
|
+
'doctor.fixesHeader': 'Suggested fixes',
|
|
348
|
+
'status.title': 'ReactPress project status',
|
|
349
|
+
'status.dir': 'Project {path}',
|
|
350
|
+
'status.apiSource': 'API source {source}',
|
|
351
|
+
'status.apiSource.monorepo': 'monorepo server/',
|
|
352
|
+
'status.apiSource.bundle': 'reactpress-cli',
|
|
353
|
+
'status.configOk': '.reactpress/config.json',
|
|
354
|
+
'status.configBad': 'not initialized',
|
|
355
|
+
'status.envOk': '.env',
|
|
356
|
+
'status.envBad': 'missing .env',
|
|
357
|
+
'status.apiOnline': 'online',
|
|
358
|
+
'status.apiOffline': 'offline',
|
|
359
|
+
'status.apiUnreachable': '{url} (offline or not started)',
|
|
360
|
+
'status.dbUp': 'connected',
|
|
361
|
+
'status.dbDown': 'unavailable',
|
|
362
|
+
'status.pidRunning': '(running)',
|
|
363
|
+
'status.frontend': 'Frontend',
|
|
364
|
+
'status.docker': 'Docker',
|
|
365
|
+
'status.dockerUp': 'available',
|
|
366
|
+
'status.dockerDown': 'not running',
|
|
367
|
+
'status.section.project': 'Project',
|
|
368
|
+
'status.section.api': 'API service',
|
|
369
|
+
'status.section.frontend': 'Frontend',
|
|
370
|
+
'status.section.docker': 'Docker',
|
|
371
|
+
'status.field.url': 'URL',
|
|
372
|
+
'status.field.http': 'HTTP',
|
|
373
|
+
'status.field.health': 'Health',
|
|
374
|
+
'status.field.database': 'Database',
|
|
375
|
+
'status.field.pid': 'PID',
|
|
376
|
+
'status.field.engine': 'Engine',
|
|
377
|
+
'status.field.config': 'Config',
|
|
378
|
+
'status.field.env': '.env',
|
|
379
|
+
'status.field.source': 'Source',
|
|
380
|
+
'status.field.dir': 'Directory',
|
|
381
|
+
'bootstrap.configReady': 'Config exists and database is ready.',
|
|
382
|
+
'bootstrap.projectDbPending': 'Project created, but database is not ready: {message}. Start Docker and run reactpress dev again.',
|
|
383
|
+
'bootstrap.ready': 'ReactPress dev environment is ready (config + database).',
|
|
384
|
+
'bootstrap.initFailed': 'Initialization failed',
|
|
385
|
+
'bootstrap.cliInitFailed': 'reactpress-cli init failed',
|
|
386
|
+
'bootstrap.dbPendingShort': 'Database not ready',
|
|
387
|
+
'bootstrap.dbNotReady': '{message}. Tip: start Docker and run reactpress docker up, or run reactpress doctor',
|
|
388
|
+
'bootstrap.dbReady': 'Database is ready',
|
|
389
|
+
'db.backup.to': 'Backing up database to {path}',
|
|
390
|
+
'db.backup.done': 'Backup complete',
|
|
391
|
+
'db.backup.viaDocker': 'mysqldump not on PATH; using mysqldump inside the db container…',
|
|
392
|
+
'db.backup.fail': 'mysqldump failed; install a MySQL client (e.g. brew install mysql-client), or ensure Docker db is running for automatic container backup',
|
|
393
|
+
'common.done': 'Done',
|
|
394
|
+
'common.yes': 'yes',
|
|
395
|
+
'common.no': 'no',
|
|
396
|
+
'common.none': '(none)',
|
|
397
|
+
'common.unknownError': 'Unknown error',
|
|
398
|
+
'lifecycle.apiStopped': '[reactpress] API process stopped (pid {pid})',
|
|
399
|
+
'lifecycle.stopPidFailed': '[reactpress] Failed to stop pid {pid}:',
|
|
400
|
+
'lifecycle.apiAlreadyRunning': '[reactpress] API already running (pid {pid})',
|
|
401
|
+
'lifecycle.noServerAvailable': '[reactpress] No API runtime found. Reinstall @fecommunity/reactpress or run from a project with server/src.',
|
|
402
|
+
'lifecycle.startingLocalApi': '[reactpress] Starting local API (server/)…',
|
|
403
|
+
'lifecycle.startingBundledApi': '[reactpress] Starting bundled API…',
|
|
404
|
+
'lifecycle.apiStartedBg': '[reactpress] API started in background (pid {pid})',
|
|
405
|
+
'lifecycle.apiTimeout120': '[reactpress] API not ready within 120s: {url}',
|
|
406
|
+
'lifecycle.apiReady': '[reactpress] API ready: {url}',
|
|
407
|
+
'lifecycle.apiStatusTitle': '[reactpress] API status',
|
|
408
|
+
'lifecycle.source': ' Source: {source}',
|
|
409
|
+
'lifecycle.source.monorepo': 'monorepo server/',
|
|
410
|
+
'lifecycle.source.bundle': 'bundled API (@fecommunity/reactpress)',
|
|
411
|
+
'lifecycle.pidFile': ' PID file: {path}',
|
|
412
|
+
'lifecycle.recordedPid': ' Recorded PID: {pid}',
|
|
413
|
+
'lifecycle.processAlive': ' Process alive: {alive}',
|
|
414
|
+
'lifecycle.httpStatus': ' HTTP ({url}): {status}',
|
|
415
|
+
'lifecycle.httpReachable': 'reachable',
|
|
416
|
+
'lifecycle.httpUnreachable': 'unreachable',
|
|
417
|
+
'lifecycle.unknownCommand': 'Unknown lifecycle command: {command}',
|
|
418
|
+
'docker.stopping': '[reactpress] Stopping Docker services…',
|
|
419
|
+
'docker.stopped': '[reactpress] Docker services stopped.',
|
|
420
|
+
'docker.stopFailed': '[reactpress] Failed to stop Docker:',
|
|
421
|
+
'docker.starting': '[reactpress] Starting Docker services…',
|
|
422
|
+
'docker.notRunning': 'Docker is not running. Please start Docker Desktop first.',
|
|
423
|
+
'docker.devStartBlocked': 'MySQL is not reachable on 127.0.0.1:{port} and Docker is not running. Start Docker Desktop, then run: reactpress docker up — or point DB_* in .env to an external MySQL instance.',
|
|
424
|
+
'docker.started': '[reactpress] Docker services started.',
|
|
425
|
+
'docker.waitingMysql': '[reactpress] Waiting for MySQL…',
|
|
426
|
+
'docker.mysqlReady': '[reactpress] MySQL is ready.',
|
|
427
|
+
'docker.mysqlExternalReady': '[reactpress] Using existing MySQL on port {port}.',
|
|
428
|
+
'docker.dbPortInUse': '[reactpress] Port {port} is already in use — skipping reactpress_db, using existing MySQL on that port.',
|
|
429
|
+
'docker.dbReuseExisting': '[reactpress] MySQL already reachable on port {port} — keeping Docker DB container',
|
|
430
|
+
'docker.dbPortInUseRecycle': '[reactpress] Port {port} is in use but MySQL is not reachable — recreating reactpress_db container…',
|
|
431
|
+
'docker.dbPortConflict': '[reactpress] MySQL on port {port} is unreachable. Run: docker start reactpress_cli_db reactpress_db OR docker compose -f docker-compose.dev.yml up -d db',
|
|
432
|
+
'docker.ensureDevDb': '[reactpress] MySQL not reachable — starting Docker database…',
|
|
433
|
+
'docker.waitingMysqlProgress': '[reactpress] Waiting for MySQL… ({attempts}/{max})',
|
|
434
|
+
'docker.mysqlTimeout': '[reactpress] MySQL not ready within timeout.',
|
|
435
|
+
'docker.mysqlNotReady': 'MySQL is not ready',
|
|
436
|
+
'docker.startDevStack': '[reactpress] Starting API + frontend (Docker MySQL)…',
|
|
437
|
+
'docker.visitUrls': '[reactpress] Visit: http://localhost (nginx) / http://localhost:3001 (client)',
|
|
438
|
+
'docker.devProcessExit': 'Dev process exited with code {code}',
|
|
439
|
+
'docker.unknownCommand': 'Unknown docker command: {command}',
|
|
440
|
+
'nginx.configCreated': '[reactpress] Created nginx config: {path}',
|
|
441
|
+
'nginx.configExists': '[reactpress] Nginx config already exists: {path}',
|
|
442
|
+
'nginx.ensureWarn': '[reactpress] Could not ensure nginx config: {message}',
|
|
443
|
+
'nginx.started': '[reactpress] Nginx started — {url}',
|
|
444
|
+
'nginx.configPath': '[reactpress] Config: {path}',
|
|
445
|
+
'nginx.stopped': '[reactpress] Nginx stopped.',
|
|
446
|
+
'nginx.startFailed': 'Failed to start nginx container',
|
|
447
|
+
'nginx.prodMonorepoOnly': 'Production nginx (--prod) requires monorepo with docker-compose.prod.yml',
|
|
448
|
+
'nginx.statusTitle': '[reactpress] Nginx status',
|
|
449
|
+
'nginx.statusContainer': ' Container {name}: {running}',
|
|
450
|
+
'nginx.statusConfig': ' Config {path}: {exists}',
|
|
451
|
+
'nginx.statusUrl': ' Entry {url} (port {port})',
|
|
452
|
+
'nginx.statusMode': ' Mode: {mode}',
|
|
453
|
+
'nginx.notRunning': 'Nginx container is not running. Run: reactpress nginx up',
|
|
454
|
+
'nginx.testOk': '[reactpress] Nginx config test passed.',
|
|
455
|
+
'nginx.testFailed': 'Nginx config test failed',
|
|
456
|
+
'nginx.reloadOk': '[reactpress] Nginx reloaded.',
|
|
457
|
+
'nginx.reloadFailed': 'Nginx reload failed',
|
|
458
|
+
'nginx.opening': '[reactpress] Opening {url}',
|
|
459
|
+
'nginx.unknownCommand': 'Unknown nginx command: {command}',
|
|
460
|
+
'nginx.templateMissing': 'Bundled nginx template missing: {path}',
|
|
461
|
+
'nginx.doctorSkippedDocker': 'Skipped (Docker not running)',
|
|
462
|
+
'nginx.doctorSkippedNotRunning': 'Not started (optional: reactpress nginx up)',
|
|
463
|
+
'nginx.doctorNotRunningFix': 'reactpress nginx up (or reactpress docker up)',
|
|
464
|
+
'nginx.doctorOk': 'Nginx healthy ({url}/health)',
|
|
465
|
+
'nginx.doctorUnhealthy': 'Nginx running but /health failed ({url})',
|
|
466
|
+
'nginx.doctorUnhealthyFix': 'Ensure client (:3001) and API (:3002) are running; reactpress nginx reload',
|
|
467
|
+
'doctor.check.nginx': 'Nginx proxy',
|
|
468
|
+
'apiDev.modeServer': '[reactpress] Dev mode: server/ (nest start --watch)',
|
|
469
|
+
'apiDev.modeBundled': '[reactpress] Dev mode: bundled API (built-in server)',
|
|
470
|
+
'apiDev.ctrlCHint': '[reactpress] Press Ctrl+C to stop API.',
|
|
471
|
+
'apiDev.stopHint': '[reactpress] Stop separately: reactpress server stop',
|
|
472
|
+
'build.unknownTarget': 'Unknown build target: {target}. Available: {available}',
|
|
473
|
+
'build.recursive': 'Build recursion detected (pnpm run build must not call itself). Use build:toolkit, build:server, or build:client.',
|
|
474
|
+
'build.forbiddenScript': 'Invalid build script "{script}"; use granular scripts like build:toolkit.',
|
|
475
|
+
'build.stepFailed': '[{current}/{total}] {label} failed',
|
|
476
|
+
'build.plan': 'Production build — {total} step(s): toolkit → server → client',
|
|
477
|
+
'build.step': '[{current}/{total}] {label}',
|
|
478
|
+
'build.stepDone': '[{current}/{total}] {label} ({seconds}s)',
|
|
479
|
+
'build.stepSkipped': 'skipped {label} (not part of this project layout)',
|
|
480
|
+
'build.stepSkippedFresh': 'skipped {label} (dist up to date)',
|
|
481
|
+
'build.stepSkippedReuse': 'skipped {label} — reusing build for "{id}"',
|
|
482
|
+
'build.done': 'Build finished in {seconds}s',
|
|
483
|
+
'build.label.toolkit': 'Toolkit',
|
|
484
|
+
'build.label.plugins': 'Plugins',
|
|
485
|
+
'build.label.server': 'API (server)',
|
|
486
|
+
'build.label.web': 'Admin (web)',
|
|
487
|
+
'build.label.theme': 'Visitor theme',
|
|
488
|
+
'build.label.docs': 'Documentation (docs)',
|
|
489
|
+
'pm2.startFailed': '[reactpress] PM2 failed to start API:',
|
|
490
|
+
'pm2.exitCode': 'PM2 exited with code {code}',
|
|
491
|
+
'spawn.commandFailed': 'Command failed ({command}): exit code {code}',
|
|
492
|
+
'spawn.exitCode': 'Exit code {code}',
|
|
493
|
+
'shim.deprecated': '\n[deprecated] reactpress-cli will be removed in 3.1. Use instead:\n npm i -g @fecommunity/reactpress\n reactpress init · reactpress dev · reactpress doctor\n',
|
|
494
|
+
'server.help.invokedBy': ' (usually invoked by reactpress server start)',
|
|
495
|
+
'publish.pkg.main': 'ReactPress 3.0 main package — single entry (init / dev / doctor / publish)',
|
|
496
|
+
'publish.pkg.server': 'NestJS backend API (deprecated — use bundled API in reactpress-cli)',
|
|
497
|
+
'bundle.cli.description': 'Zero-config init and manage ReactPress CMS & blog server',
|
|
498
|
+
'bundle.cli.cwd': 'ReactPress project directory (default: current working directory)',
|
|
499
|
+
'bundle.cli.init.description': 'One-click init ReactPress CMS & blog (zero config)',
|
|
500
|
+
'bundle.cli.init.directory': 'Project directory',
|
|
501
|
+
'bundle.cli.init.force': 'Overwrite existing config',
|
|
502
|
+
'bundle.cli.start.description': 'Start server (prepares database automatically)',
|
|
503
|
+
'bundle.cli.stop.description': 'Stop server',
|
|
504
|
+
'bundle.cli.stop.database': 'Also stop embedded database container',
|
|
505
|
+
'bundle.cli.restart.description': 'Restart server',
|
|
506
|
+
'bundle.cli.status.description': 'Server and database status',
|
|
507
|
+
'bundle.cli.config.description': 'View or update config (--apply to restart)',
|
|
508
|
+
'bundle.cli.config.key': 'Config key, e.g. server.port',
|
|
509
|
+
'bundle.cli.config.value': 'New value',
|
|
510
|
+
'bundle.cli.config.list': 'List all config keys',
|
|
511
|
+
'bundle.cli.config.apply': 'Restart automatically after update',
|
|
512
|
+
'bundle.cli.unknownCommand': 'Unknown command: {command}',
|
|
513
|
+
'bundle.cmd.init.spinner': 'Initializing ReactPress project…',
|
|
514
|
+
'bundle.cmd.init.succeed': 'Initialization complete',
|
|
515
|
+
'bundle.cmd.init.fail': 'Initialization failed',
|
|
516
|
+
'bundle.cmd.init.projectDir': 'Project directory: {path}',
|
|
517
|
+
'bundle.cmd.init.nextStep': 'Next: reactpress-cli start',
|
|
518
|
+
'bundle.cmd.notProject': 'This directory is not a ReactPress project.',
|
|
519
|
+
'bundle.cmd.notProjectInit': 'This directory is not a ReactPress project. Run reactpress-cli init first.',
|
|
520
|
+
'bundle.cmd.start.spinner': 'Preparing database and server…',
|
|
521
|
+
'bundle.cmd.start.succeed': 'Server started',
|
|
522
|
+
'bundle.cmd.start.fail': 'Start failed',
|
|
523
|
+
'bundle.cmd.stop.spinner': 'Stopping server…',
|
|
524
|
+
'bundle.cmd.stop.succeed': 'Stopped',
|
|
525
|
+
'bundle.cmd.stop.fail': 'Stop failed',
|
|
526
|
+
'bundle.cmd.restart.spinner': 'Restarting server…',
|
|
527
|
+
'bundle.cmd.restart.succeed': 'Restart complete',
|
|
528
|
+
'bundle.cmd.restart.fail': 'Restart failed',
|
|
529
|
+
'bundle.cmd.status.title': 'Service status',
|
|
530
|
+
'bundle.cmd.status.project': 'Project: {path}',
|
|
531
|
+
'bundle.cmd.status.service': 'Service: {status}{pid}',
|
|
532
|
+
'bundle.cmd.status.running': 'running',
|
|
533
|
+
'bundle.cmd.status.stopped': 'stopped',
|
|
534
|
+
'bundle.cmd.status.url': 'URL: {url}',
|
|
535
|
+
'bundle.cmd.status.database': 'Database: {status} ({mode})',
|
|
536
|
+
'bundle.cmd.status.dbReady': 'ready',
|
|
537
|
+
'bundle.cmd.status.dbNotReady': 'not ready',
|
|
538
|
+
'bundle.cmd.config.title': 'Configuration',
|
|
539
|
+
'bundle.cmd.config.keyRequired': 'Specify a config key, e.g.: reactpress-cli config server.port 3003',
|
|
540
|
+
'bundle.cmd.config.listHint': 'Use --list to show all keys',
|
|
541
|
+
'bundle.cmd.config.updated': 'Updated {key} = {value}',
|
|
542
|
+
'bundle.cmd.config.restartSpinner': 'Restarting to apply config…',
|
|
543
|
+
'bundle.cmd.config.applied': 'Config applied',
|
|
544
|
+
'bundle.cmd.config.restartFail': 'Restart failed',
|
|
545
|
+
'bundle.cmd.config.restartManual': 'Run reactpress-cli restart manually',
|
|
546
|
+
'bundle.cmd.config.applyHint': 'Run reactpress-cli restart or config --apply to apply changes',
|
|
547
|
+
'bundle.service.init.alreadyProject': 'Directory is already a ReactPress project. Use --force to overwrite config.',
|
|
548
|
+
'bundle.service.init.dbPending': 'Project created, but database is not ready: {message}. Run reactpress-cli start later.',
|
|
549
|
+
'bundle.service.init.complete': 'ReactPress project initialized. Run reactpress-cli start to launch the server.',
|
|
550
|
+
'bundle.service.init.templateMissing': 'Template file missing: {path}',
|
|
551
|
+
'bundle.service.config.notFound': 'ReactPress project not found. Run reactpress-cli init first.',
|
|
552
|
+
'bundle.service.config.keyMissing': 'Config key does not exist: {key}',
|
|
553
|
+
'bundle.service.server.alreadyRunning': 'Server already running (PID {pid}), visit {url}',
|
|
554
|
+
'bundle.service.server.portBusy': 'Port {port} is in use; ReactPress cannot bind. If you started via Docker Compose, run: docker stop reactpress_server. Or change server.port in .reactpress/config.json.',
|
|
555
|
+
'bundle.service.server.cannotStart': 'Could not start ReactPress server process.',
|
|
556
|
+
'bundle.service.server.noHttp': 'Server process started (PID {pid}) but no HTTP response at {url}. Check port conflicts or DB_* in .env.',
|
|
557
|
+
'bundle.service.server.started': 'ReactPress server started at {url}',
|
|
558
|
+
'bundle.service.server.stopped': 'ReactPress server stopped.',
|
|
559
|
+
'bundle.service.server.cannotStopPid': 'Could not stop process PID {pid}',
|
|
560
|
+
'bundle.service.database.dockerMissing': 'Docker not detected. Install and start Docker, or set database.mode to external with an existing MySQL.',
|
|
561
|
+
'bundle.service.database.portSwitched': 'Host port {previous} was in use; switched to {port} (.env updated)',
|
|
562
|
+
'bundle.service.database.portBindRetry': 'Port {port} bind failed, trying another port…',
|
|
563
|
+
'bundle.service.database.containerStartFailed': 'Failed to start database container: {detail}',
|
|
564
|
+
'bundle.service.database.credsMismatch': 'Database container is on port {port} but user "{user}" cannot connect (volume credentials differ from .env). Run: cd .reactpress && docker compose down -v && cd .. && reactpress-cli start',
|
|
565
|
+
'bundle.service.database.connectionTimeout': 'Database container started but connection timed out. Run: docker logs {container}',
|
|
566
|
+
'bundle.service.database.cannotConnect': 'Cannot connect to database {host}:{port}. Check DB_* in .env.',
|
|
567
|
+
'bundle.serverBundle.missing': 'Bundled server is missing. Reinstall reactpress-cli.',
|
|
568
|
+
'bundle.serverBundle.installFailed': 'Bundled server dependency install failed. In the reactpress-cli install dir run: cd server && npm install --omit=dev --no-bin-links',
|
|
569
|
+
'bundle.serverBundle.notBuilt': 'Bundled server is not built or dependencies are incomplete. Run npm run build:server (dev) or reinstall reactpress-cli.',
|
|
570
|
+
'bundle.port.notFound': 'No available port in range {start}-{end}',
|
|
571
|
+
},
|
|
572
|
+
zh: {
|
|
573
|
+
'cli.description': 'ReactPress 全栈 CLI — 初始化、开发、构建、部署、发布',
|
|
574
|
+
'cli.init.description': '初始化项目 (.reactpress/config.json + .env + Docker MySQL)',
|
|
575
|
+
'cli.init.directory': '项目目录',
|
|
576
|
+
'cli.init.force': '覆盖已有配置',
|
|
577
|
+
'cli.init.local': '使用嵌入式 SQLite 初始化(无需 Docker)',
|
|
578
|
+
'cli.dev.description': '零配置开发: 环境检查 + toolkit 构建 + API + 前端',
|
|
579
|
+
'cli.dev.apiOnly': '仅启动 API (watch)',
|
|
580
|
+
'cli.dev.local': '本地 SQLite 模式(无需 Docker/nginx)',
|
|
581
|
+
'cli.dev.clientOnly': '仅启动前端',
|
|
582
|
+
'cli.dev.webOnly': '管理后台 + API (web/)',
|
|
583
|
+
'cli.dev.remoteOrigin': '默认远程 API;未指定 admin/client 时两者均走远程',
|
|
584
|
+
'cli.dev.adminOrigin': '管理后台 API:local | remote | URL(remote 用 --remote-origin 默认值)',
|
|
585
|
+
'cli.dev.clientOrigin': '访客站 API(nginx /api):local | remote | URL',
|
|
586
|
+
'cli.dev.remoteOriginRequired': '--remote-origin 需要填写地址(如 api.gaoredu.com)',
|
|
587
|
+
'cli.dev.remoteDefaultRequired': 'remote 需配合 URL:使用 --remote-origin 或为 admin/client-origin 填写地址',
|
|
588
|
+
'cli.dev.invalidOrigin': '无效的 origin;请使用 local、remote 或主机/URL',
|
|
589
|
+
'cli.dev.remoteOriginIncompatibleApiOnly': '远程 API 参数不能与 --api-only 同时使用',
|
|
590
|
+
'cli.desktopDev.description': '桌面开发:内嵌 SQLite API + 管理后台 + Electron(无需 Docker/MySQL)',
|
|
591
|
+
'cli.server.description': '管理 API 服务',
|
|
592
|
+
'cli.server.start.description': '启动 API(等待 HTTP 就绪)',
|
|
593
|
+
'cli.server.start.pm2': '使用 PM2 启动(生产)',
|
|
594
|
+
'cli.server.start.bg': '后台启动,不等待 HTTP',
|
|
595
|
+
'cli.server.stop': '停止 API',
|
|
596
|
+
'cli.server.restart': '重启 API',
|
|
597
|
+
'cli.server.status': '查看 API 状态',
|
|
598
|
+
'cli.client.description': '管理前端',
|
|
599
|
+
'cli.client.start': '启动 Next.js 客户端',
|
|
600
|
+
'cli.client.start.pm2': '使用 PM2 启动',
|
|
601
|
+
'cli.client.restart': '重新构建当前主题并重启访客端',
|
|
602
|
+
'themeProd.building': '正在构建当前主题「{id}」…',
|
|
603
|
+
'themeProd.installingDeps': '正在为主题「{id}」安装依赖…',
|
|
604
|
+
'themeProd.reusingBuild': '复用主题「{id}」已有构建,跳过重新构建',
|
|
605
|
+
'themeProd.restarting': '正在为主题「{id}」重启访客端…',
|
|
606
|
+
'themeProd.restarted': '访客端已切换为主题「{id}」。',
|
|
607
|
+
'themePreview.backgroundBuildScheduled': '正在后台构建 {count} 个预览主题(生产模式)…',
|
|
608
|
+
'themePreview.warmingAll': '正在预构建 {count} 个主题预览(加速切换)…',
|
|
609
|
+
'themePreview.warmingAllSkipped': '{count} 个预览构建已是最新,已跳过',
|
|
610
|
+
'themePreview.installingDeps': '正在为预览主题「{id}」安装依赖…',
|
|
611
|
+
'themePreview.building': '正在构建预览主题「{id}」…',
|
|
612
|
+
'themePreview.reusingBuild': '复用预览主题「{id}」已有构建,跳过重新构建',
|
|
613
|
+
'themePreview.buildDone': '预览主题「{id}」构建完成。',
|
|
614
|
+
'themePreview.buildFailed': '预览主题「{id}」构建失败:{message}',
|
|
615
|
+
'themePreview.starting': '预览主题「{id}」→ {url}(端口 {port},{dir},{mode})',
|
|
616
|
+
'themePreview.ready': '预览已就绪:{url}(主题:{id})',
|
|
617
|
+
'cli.build.description': '构建生产产物',
|
|
618
|
+
'cli.docker.description': 'Docker 开发环境 (MySQL + nginx)',
|
|
619
|
+
'cli.docker.up': '仅启动 Docker 服务并等待 MySQL',
|
|
620
|
+
'cli.docker.down': '停止 Docker 服务',
|
|
621
|
+
'cli.docker.start': '启动 Docker + 全栈开发 (API + 前端)',
|
|
622
|
+
'cli.docker.restart': '重启 Docker 服务',
|
|
623
|
+
'cli.docker.status': '查看 Docker 容器状态',
|
|
624
|
+
'cli.docker.logs': '查看 Docker 日志 (db | nginx)',
|
|
625
|
+
'cli.nginx.description': 'Nginx 反向代理(统一入口 :80)',
|
|
626
|
+
'cli.nginx.ensure': '若缺失则生成默认 nginx 配置',
|
|
627
|
+
'cli.nginx.up': '启动 nginx 容器',
|
|
628
|
+
'cli.nginx.down': '停止 nginx 容器',
|
|
629
|
+
'cli.nginx.restart': '重启 nginx 容器',
|
|
630
|
+
'cli.nginx.status': '查看 nginx 容器与配置状态',
|
|
631
|
+
'cli.nginx.logs': '跟踪 nginx 容器日志',
|
|
632
|
+
'cli.nginx.test': '在容器内校验配置 (nginx -t)',
|
|
633
|
+
'cli.nginx.reload': '修改配置后热加载 nginx',
|
|
634
|
+
'cli.nginx.open': '在浏览器打开 nginx 入口',
|
|
635
|
+
'cli.nginx.prod': '使用生产 compose + nginx.conf(仅 monorepo)',
|
|
636
|
+
'cli.nginx.force': '用模板覆盖已有 nginx 配置',
|
|
637
|
+
'cli.help.nginx': ' reactpress nginx up 启动反向代理 (:80)',
|
|
638
|
+
'cli.status.description': '查看项目、API、前端、Docker 综合状态',
|
|
639
|
+
'cli.doctor.description': '诊断环境:Node、Docker、端口、数据库、API 健康',
|
|
640
|
+
'cli.db.description': '数据库运维',
|
|
641
|
+
'cli.db.backup': '使用 mysqldump 备份当前项目数据库',
|
|
642
|
+
'cli.db.backup.output': '输出 SQL 文件路径',
|
|
643
|
+
'cli.publish.description': '构建并发布 npm 包',
|
|
644
|
+
'cli.publish.build': '仅构建发布产物',
|
|
645
|
+
'cli.publish.publish': '发布核心 npm 包',
|
|
646
|
+
'cli.start.description': '生产模式: 启动 API + 前端',
|
|
647
|
+
'cli.help.examples': '示例:',
|
|
648
|
+
'cli.help.interactive': ' reactpress 交互式菜单',
|
|
649
|
+
'cli.help.dev': ' reactpress dev 零配置全栈开发',
|
|
650
|
+
'cli.help.init': ' reactpress init --force 重新初始化配置',
|
|
651
|
+
'cli.help.server': ' reactpress server start 启动 API',
|
|
652
|
+
'cli.help.status': ' reactpress status 综合状态',
|
|
653
|
+
'cli.help.doctor': ' reactpress doctor 环境诊断',
|
|
654
|
+
'cli.help.docker': ' reactpress docker start Docker + 全栈',
|
|
655
|
+
'cli.help.build': ' reactpress build -t client 构建指定目标 (toolkit|server|client|docs|all)',
|
|
656
|
+
'cli.help.publish': ' reactpress publish 发布 npm 包',
|
|
657
|
+
'cli.help.theme': ' reactpress theme add <spec> 从 npm 安装主题',
|
|
658
|
+
'cli.theme.description': '安装与管理主题',
|
|
659
|
+
'cli.theme.add.description': '从 npm 包 spec 或 .tgz 文件安装主题',
|
|
660
|
+
'cli.theme.add.spec': 'npm 包 spec(如 @fecommunity/reactpress-theme-starter@1.0.0-beta.0)',
|
|
661
|
+
'cli.theme.add.catalog': '按 themes/{dir}/package.json 中的主题 id 安装',
|
|
662
|
+
'cli.theme.add.skipDeps': '跳过主题目录内的 pnpm/npm install',
|
|
663
|
+
'cli.theme.list.description': '列出可用主题包',
|
|
664
|
+
'themeInstall.specRequired': '请提供 npm 主题包 spec',
|
|
665
|
+
'themeInstall.installing': '正在从 npm 安装主题: {spec}',
|
|
666
|
+
'themeInstall.success': '主题「{name}」已安装为「{id}」→ {dir}',
|
|
667
|
+
'themeInstall.nextActivate': '请在管理后台「外观 → 主题」中启用,或调用 POST /extension/themes/{id}/activate',
|
|
668
|
+
'themeInstall.listHeading': '可用主题:',
|
|
669
|
+
'themeInstall.listEmpty': '在 themes/ 或 .reactpress/runtime/ 下未找到主题包',
|
|
670
|
+
'cli.build.target': '构建目标: toolkit | server | client | docs | all',
|
|
671
|
+
'cli.build.lowMem': '低内存模式:限制构建堆内存并跳过未变化步骤(2G 小机)',
|
|
672
|
+
'banner.subtitle': ' · 全栈发布平台 CLI ',
|
|
673
|
+
/** 左侧装饰性进度条标签(不是网址;仓库地址放在卡片顶部 Title 正下方)。 */
|
|
674
|
+
'banner.pulseLabel': '准备',
|
|
675
|
+
'banner.pulseReady': '就绪',
|
|
676
|
+
'banner.pulsePending': '初始化',
|
|
677
|
+
'banner.label.mode': '模式',
|
|
678
|
+
'banner.label.path': '路径',
|
|
679
|
+
'banner.mode.standalone': '独立项目',
|
|
680
|
+
'banner.mode.monorepo': 'MONOREPO',
|
|
681
|
+
'banner.mode.uninitialized': '未初始化',
|
|
682
|
+
'banner.systemLabel': '系统',
|
|
683
|
+
'banner.systemOnline': '在线',
|
|
684
|
+
'banner.systemPending': '准备中',
|
|
685
|
+
'menu.dev': '零配置开发 (env + DB + API + 前端)',
|
|
686
|
+
'menu.init': '初始化项目 (.reactpress + .env + 数据库)',
|
|
687
|
+
'menu.status': '查看项目状态',
|
|
688
|
+
'menu.doctor': '环境诊断 (doctor)',
|
|
689
|
+
'menu.devApi': '仅启动 API (开发 watch)',
|
|
690
|
+
'menu.devClient': '仅启动前端',
|
|
691
|
+
'menu.serverStart': '启动 API (后台生产)',
|
|
692
|
+
'menu.serverStop': '停止 API',
|
|
693
|
+
'menu.serverRestart': '重启 API',
|
|
694
|
+
'menu.build': '构建 (toolkit → server → client)',
|
|
695
|
+
'menu.buildTarget': '选择要构建的目标',
|
|
696
|
+
'menu.buildAll': '全部 (toolkit → server → client)',
|
|
697
|
+
'menu.dockerStart': 'Docker 开发环境 (DB + nginx + 全栈)',
|
|
698
|
+
'menu.dockerUp': 'Docker 仅启动数据库',
|
|
699
|
+
'menu.dockerStop': '停止 Docker 服务',
|
|
700
|
+
'menu.openAdmin': '在浏览器打开管理后台',
|
|
701
|
+
'menu.publish': '发布 npm 包 (交互式)',
|
|
702
|
+
'menu.exit': '退出',
|
|
703
|
+
'menu.prompt': '选择操作',
|
|
704
|
+
'menu.back': '返回主菜单?',
|
|
705
|
+
'menu.retry': '返回主菜单重试?',
|
|
706
|
+
'menu.startingDev': '启动全栈开发…',
|
|
707
|
+
'menu.initProject': '初始化项目…',
|
|
708
|
+
'menu.done': '完成',
|
|
709
|
+
'menu.opening': '打开 {url}',
|
|
710
|
+
'menu.goodbye': ' 再见。',
|
|
711
|
+
'menu.section.run': '运行',
|
|
712
|
+
'menu.section.lifecycle': '生命周期',
|
|
713
|
+
'menu.section.build': '构建与部署',
|
|
714
|
+
'menu.section.tools': '工具',
|
|
715
|
+
'menu.tip': '提示:上下方向键选择,回车确认,Ctrl+C 退出。',
|
|
716
|
+
'menu.shortcuts': '↑/↓ 选择 · 回车 确认 · esc 返回 · Ctrl+C 退出',
|
|
717
|
+
'menu.statusHeader': '当前状态',
|
|
718
|
+
'menu.contextStandalone': '项目类型 · 独立项目(使用内置 API)',
|
|
719
|
+
'menu.contextMonorepo': '项目类型 · monorepo(server/src + client/)',
|
|
720
|
+
'menu.contextUnknown': '项目类型 · 未初始化(请先运行 init)',
|
|
721
|
+
'menu.statusApi': 'API {status}',
|
|
722
|
+
'menu.statusDb': '数据库 {status}',
|
|
723
|
+
'menu.statusDocker': 'Docker {status}',
|
|
724
|
+
'menu.statusLabelApi': 'API',
|
|
725
|
+
'menu.statusLabelDb': '数据库',
|
|
726
|
+
'menu.statusLabelDocker': 'Docker',
|
|
727
|
+
'menu.statusChecking': '检测中…',
|
|
728
|
+
'menu.startingApi': '正在启动 API…',
|
|
729
|
+
'menu.stoppingApi': '正在停止 API…',
|
|
730
|
+
'menu.restartingApi': '正在重启 API…',
|
|
731
|
+
'menu.statusOn': '在线',
|
|
732
|
+
'menu.statusOff': '离线',
|
|
733
|
+
'menu.statusReady': '就绪',
|
|
734
|
+
'menu.statusNotReady': '未就绪',
|
|
735
|
+
'menu.statusYes': '可用',
|
|
736
|
+
'menu.statusNo': '不可用',
|
|
737
|
+
'menu.hint.dev': 'API + 数据库 + 前端',
|
|
738
|
+
'menu.hint.init': '生成 .reactpress + .env',
|
|
739
|
+
'menu.hint.status': '所有服务概览',
|
|
740
|
+
'menu.hint.doctor': '环境健康检查',
|
|
741
|
+
'menu.hint.devApi': 'watch 模式',
|
|
742
|
+
'menu.hint.devClient': 'Next.js 开发',
|
|
743
|
+
'menu.hint.serverStart': '后台生产模式',
|
|
744
|
+
'menu.hint.serverStop': '',
|
|
745
|
+
'menu.hint.serverRestart': '',
|
|
746
|
+
'menu.hint.build': '生产构建产物',
|
|
747
|
+
'menu.hint.dockerStart': '数据库 + nginx + 全栈',
|
|
748
|
+
'menu.hint.dockerUp': '仅数据库',
|
|
749
|
+
'menu.hint.dockerStop': '',
|
|
750
|
+
'menu.nginxUp': '启动 nginx 反向代理 (:80)',
|
|
751
|
+
'menu.nginxOpen': '在浏览器打开 nginx 入口',
|
|
752
|
+
'menu.nginxReload': '修改配置后重载 nginx',
|
|
753
|
+
'menu.hint.nginxUp': '统一入口 :80',
|
|
754
|
+
'menu.hint.nginxOpen': 'http://localhost',
|
|
755
|
+
'menu.hint.nginxReload': 'nginx -t 后 reload',
|
|
756
|
+
'menu.hint.openAdmin': '在浏览器打开',
|
|
757
|
+
'menu.hint.publish': '仅维护者使用',
|
|
758
|
+
'menu.hint.exit': '',
|
|
759
|
+
'menu.actionPrefix': '操作',
|
|
760
|
+
'dev.phaseApi': 'API → :3002',
|
|
761
|
+
'dev.phasePrerequisites': '检查 Node.js 与 Docker…',
|
|
762
|
+
'dev.phaseInfra': '启动 MySQL 与 nginx…',
|
|
763
|
+
'dev.phaseServices': '启动 API、管理后台与主题…',
|
|
764
|
+
'dev.phasePrerequisitesDesktop': '检查 Node.js…',
|
|
765
|
+
'dev.phaseInfraDesktop': '构建 toolkit 与本地工作区…',
|
|
766
|
+
'dev.phaseServicesDesktop': '启动管理后台与 Electron…',
|
|
767
|
+
'dev.phaseServicesLocalWeb': '启动管理后台(浏览器预览)…',
|
|
768
|
+
'dev.previewPrewarmStarting': '预构建主题预览以加速切换…',
|
|
769
|
+
'dev.remoteApiUsing': '使用远程 API(nginx /api → {url})',
|
|
770
|
+
'dev.adminApiRemote': '管理后台 API → {url}',
|
|
771
|
+
'dev.clientApiRemote': '访客站 API(nginx /api)→ {url}',
|
|
772
|
+
'dev.nginxReadyRemote': 'nginx 已就绪:{url}(访客站 API → {api})',
|
|
773
|
+
'dev.checkNodeOk': 'Node.js {version}',
|
|
774
|
+
'dev.checkDockerOk': 'Docker 已运行',
|
|
775
|
+
'dev.prerequisitesOk': '✓ Node {version} · ✓ Docker',
|
|
776
|
+
'dev.prerequisitesOkDesktop': '✓ Node {version} · SQLite(无需 Docker)',
|
|
777
|
+
'dev.apiKept': '复用端口 {port} 上已健康的 API',
|
|
778
|
+
'dev.timingReady': '启动完成 · {summary}',
|
|
779
|
+
'dev.timingInfra': '基础设施',
|
|
780
|
+
'dev.timingServices': '服务',
|
|
781
|
+
'dev.timingApiReused': 'API 已复用',
|
|
782
|
+
'dev.waitingApiQuiet': '等待 API…',
|
|
783
|
+
'dev.mysqlReadyQuiet': 'MySQL 已就绪',
|
|
784
|
+
'dev.themeStarting': '主题「{id}」→ :{port}',
|
|
785
|
+
'dev.themeCacheClearedForRemote': '已清除主题 .next(远程 API,避免陈旧 SERVER_API_URL)',
|
|
786
|
+
'dev.themeReadyQuiet': '访客站已就绪 → {url}',
|
|
787
|
+
'dev.phaseAdmin': '启动管理后台(内部 :3000/admin/)…',
|
|
788
|
+
'dev.phaseTheme': '启动当前启用主题(内部 :3001)…',
|
|
789
|
+
'dev.phaseClient': '启动旧版 client 前端…',
|
|
790
|
+
'dev.phaseNginx': '启动 nginx 统一入口(:80)…',
|
|
791
|
+
'dev.phaseNginxWait': '等待管理端与主题就绪后启动 nginx…',
|
|
792
|
+
'dev.waitingProxies': '等待管理后台与主题…',
|
|
793
|
+
'dev.startingAdmin': '管理后台 → {url}',
|
|
794
|
+
'dev.adminNginxSlow': '[reactpress] 经 nginx 访问管理端未就绪: {url} — 请确认 Vite base 为 /admin/(重新执行 pnpm dev)',
|
|
795
|
+
'dev.nginxReady': 'Nginx → {url}',
|
|
796
|
+
'dev.proxiesReady': '管理后台与主题开发服务已监听',
|
|
797
|
+
'dev.portApiBusy': '[reactpress] 端口 {port} 已被占用(且 API 健康检查未通过)。请结束占用进程或运行: reactpress doctor',
|
|
798
|
+
'dev.portApiBusyHint': '[reactpress] 提示: lsof -i :3002 · 请勿在两个终端同时运行 pnpm dev',
|
|
799
|
+
'dev.startingApi': '启动 API(端口 3002)…',
|
|
800
|
+
'dev.waitingApi': '等待 API: {url}',
|
|
801
|
+
'dev.waitingApiCompile': '编译中(端口 {port} 尚未监听)',
|
|
802
|
+
'dev.waitingApiStarting': '端口已开,等待健康检查',
|
|
803
|
+
'dev.healthDbDown': '数据库未连接',
|
|
804
|
+
'dev.healthDegraded': 'API 降级',
|
|
805
|
+
'dev.apiTimeout': '[reactpress] API 在 {seconds}s 内未就绪。\n → 运行 reactpress doctor 查看详情\n → 嵌入式 MySQL:reactpress docker up\n → 检查 .env 中 DB_* 与 SERVER_SITE_URL',
|
|
806
|
+
'dev.apiReusing': 'API :{port} 已健康,跳过重启',
|
|
807
|
+
'dev.apiReady': 'API 已就绪',
|
|
808
|
+
'dev.toolkitUpToDate': '已跳过 toolkit 构建(dist 为最新;设置 REACTPRESS_FORCE_TOOLKIT_BUILD=1 可强制重建)',
|
|
809
|
+
'dev.themeSiteSkipped': '访客站(:3001)需在主题包就绪后才会启动',
|
|
810
|
+
'dev.themeBackground': '访客站(:3001)后台编译中 — API 与管理端就绪后将显示启动横幅',
|
|
811
|
+
'dev.themeBackgroundReady': '访客站已就绪: {url}',
|
|
812
|
+
'themeDev.starting': '[reactpress] 已启用主题「{id}」→ {url}(端口 {port},{dir})',
|
|
813
|
+
'themeDev.startingShort': '主题「{id}」→ :{port}({dir})',
|
|
814
|
+
'themeDev.cacheCleared': '已清理主题 .next(REACTPRESS_CLEAR_THEME_CACHE=1)',
|
|
815
|
+
'themeDev.cacheStaleCleared': '已清理主题 .next(缺少 {marker})',
|
|
816
|
+
'themeDev.apiSplit': '[reactpress] 主题 API — 服务端渲染: {ssr} · 浏览器: {browser}',
|
|
817
|
+
'themeDev.ready': '[reactpress] 访客站已就绪: {url}(主题: {id})',
|
|
818
|
+
'themeDev.slow': '[reactpress] 主题站点启动较慢: {url}',
|
|
819
|
+
'themeDev.notFound': '未找到主题包「{id}」',
|
|
820
|
+
'themeDev.invalidManifest': '已忽略无效的 active-theme.json(仅 themes/ 或 .reactpress/runtime/ 下的主题包会生效)',
|
|
821
|
+
'themeDev.unavailable': '无法监听',
|
|
822
|
+
'themeDev.restart': 'active-theme.json 已更新,正在重启 :3001 主题进程…',
|
|
823
|
+
'themeDev.restartFailed': '主题重启失败: {message}',
|
|
824
|
+
'themeDev.portBusy': '端口 {port} 仍被占用,已跳过本次主题重启(请再次启用主题或重启 pnpm dev)',
|
|
825
|
+
'themeDev.portBusyHint': '也可手动释放端口: {cmd}',
|
|
826
|
+
'dev.apiReadyAdmin': 'API 已就绪 · 启动管理后台',
|
|
827
|
+
'dev.clientSlow': '[reactpress] 前端在 {seconds}s 内未响应,可能仍在编译。稍后访问 {url}',
|
|
828
|
+
'dev.adminSlow': '[reactpress] 管理后台在 {seconds}s 内未响应,可能仍在编译。稍后访问 {url}',
|
|
829
|
+
'dev.noWeb': '[reactpress] 未找到 web/ 目录,无法启动管理后台开发栈。',
|
|
830
|
+
'dev.envFailed': '[reactpress] 环境准备失败:',
|
|
831
|
+
'dev.toolkitFailed': 'toolkit 构建失败,退出码: {code}',
|
|
832
|
+
'dev.nextSteps': '下一步建议:',
|
|
833
|
+
'dev.nextDoctor': ' → reactpress doctor 环境诊断',
|
|
834
|
+
'dev.nextDocker': ' → reactpress docker up 启动嵌入式 MySQL',
|
|
835
|
+
'dev.nextEnv': ' → 检查 .env 中 DB_* 与 SERVER_SITE_URL',
|
|
836
|
+
'dev.standaloneHint': '[reactpress] 独立项目:当前目录仅启动 API,前端请单独构建。',
|
|
837
|
+
'dev.desktopStarting': '正在启动 Electron 桌面客户端 → {url}',
|
|
838
|
+
'dev.desktopMissing': '未找到 desktop/ 包 — 请在 monorepo 根目录运行',
|
|
839
|
+
'dev.desktopIntro': '桌面开发 — 本地优先模式(内嵌 SQLite,无需 Docker/MySQL)',
|
|
840
|
+
'dev.localWebIntro': '本地 Web 开发 — SQLite API + 浏览器管理后台(无需 Docker/Electron)',
|
|
841
|
+
'dev.desktopLocalApiStarting': '正在启动内嵌 SQLite API…',
|
|
842
|
+
'dev.desktopLocalApiReady': '✓ 本地 API({db})→ {url}',
|
|
843
|
+
'dev.desktopLocalApi': '本地 SQLite API → {url}',
|
|
844
|
+
'dev.dbTypeSqlite': 'SQLite',
|
|
845
|
+
'devBanner.ready': 'ReactPress 开发环境已就绪',
|
|
846
|
+
'devBanner.readyWeb': 'ReactPress 管理后台开发环境已就绪',
|
|
847
|
+
'devBanner.readyLocalWeb': 'ReactPress 本地 Web 开发环境已就绪',
|
|
848
|
+
'devBanner.readyDesktop': 'ReactPress 桌面开发环境已就绪',
|
|
849
|
+
'devBanner.readyApi': 'ReactPress API 已就绪',
|
|
850
|
+
'devBanner.site': '前台',
|
|
851
|
+
'devBanner.admin': '管理端',
|
|
852
|
+
'devBanner.api': 'API',
|
|
853
|
+
'devBanner.database': '数据库',
|
|
854
|
+
'devBanner.sqliteEmbedded': 'SQLite(内嵌,无需 Docker)',
|
|
855
|
+
'devBanner.mysqlDocker': 'MySQL(Docker)',
|
|
856
|
+
'devBanner.swagger': 'Swagger',
|
|
857
|
+
'devBanner.health': '健康检查',
|
|
858
|
+
'devBanner.desktopLocalHint': '默认账号 admin/admin · 可在设置中切换远程 API 或同步',
|
|
859
|
+
'devBanner.localWebHint': '在浏览器打开管理端地址 · 默认账号 admin/admin',
|
|
860
|
+
'devBanner.localModeGo': '本地模式就绪',
|
|
861
|
+
'devBanner.hint': '诊断: reactpress doctor · 状态: reactpress status',
|
|
862
|
+
'devBanner.nginxHint': '内部端口:3001 访客站 / 3002 API / 3003 主题预览 / 3000 管理后台 — 请只使用上方地址',
|
|
863
|
+
'devBanner.nginxRemoteHint': '访客站 /api 已代理至 {url}',
|
|
864
|
+
'devBanner.adminRemoteHint': '管理后台 /api 已代理至 {url}',
|
|
865
|
+
'devBanner.shortcuts': 'Ctrl+C 停止',
|
|
866
|
+
'devBanner.allSystemsGo': '一切就绪',
|
|
867
|
+
'devBanner.dbDegraded': '数据库未连接 — 请执行 reactpress docker up',
|
|
868
|
+
'dev.nginxSkippedDocker': '[reactpress] Docker 未运行,已跳过 nginx(请启动 Docker 或直连各端口)',
|
|
869
|
+
'dev.nginxStartFailed': '[reactpress] nginx 启动失败: {message}',
|
|
870
|
+
'dev.dbEnsureFailed': '[reactpress] 数据库未就绪: {message}',
|
|
871
|
+
'dev.mysqlUnreachable': '[reactpress] MySQL 不可达,主题/后台接口会报错。请先启动 Docker,再执行: reactpress docker up',
|
|
872
|
+
'dev.nginxSlow': '[reactpress] nginx 入口响应较慢: {url}',
|
|
873
|
+
'doctor.nodeBad': 'Node.js {version}(需要 ≥ 18)',
|
|
874
|
+
'doctor.nodeFix': '请安装 Node.js 18+:https://nodejs.org/',
|
|
875
|
+
'doctor.dockerOk': 'Docker 引擎可用',
|
|
876
|
+
'doctor.dockerBad': 'Docker 未运行或不可用',
|
|
877
|
+
'doctor.dockerFix': '安装并启动 Docker:https://docs.docker.com/get-docker/ ,然后运行 reactpress docker up;或改 config.json 使用外部 MySQL',
|
|
878
|
+
'doctor.portApiBusy': 'API 端口 {port} 已被占用',
|
|
879
|
+
'doctor.portClientBusy': '前端端口 {port} 已被占用',
|
|
880
|
+
'doctor.portFix': '修改 .env 中 SERVER_PORT / CLIENT_PORT,或停止占用进程',
|
|
881
|
+
'doctor.portOk': '端口 {apiPort}(API)、{clientPort}(前端)可用',
|
|
882
|
+
'doctor.dbNoMysql2': '未安装 mysql2,无法检测数据库',
|
|
883
|
+
'doctor.dbMysql2Fix': '在 monorepo 根目录执行 pnpm install',
|
|
884
|
+
'doctor.dbOk': 'MySQL {host}:{port}/{database} 连通',
|
|
885
|
+
'doctor.dbBad': '数据库连接失败: {error}',
|
|
886
|
+
'doctor.dbFix': '运行 reactpress docker up 或检查 .env 中 DB_* 配置',
|
|
887
|
+
'doctor.dbSqliteOk': 'SQLite 就绪 ({detail})',
|
|
888
|
+
'doctor.dbSqliteBad': 'SQLite 检测失败: {error}',
|
|
889
|
+
'doctor.dbSqliteFix': '运行 reactpress init --local 或检查 .env 中 DB_DATABASE',
|
|
890
|
+
'doctor.apiOk': 'API 健康检查通过 ({url})',
|
|
891
|
+
'doctor.apiBad': 'API 未响应健康检查 ({url})',
|
|
892
|
+
'doctor.apiFix': '运行 reactpress server start 或 reactpress dev',
|
|
893
|
+
'doctor.pnpmBad': '未检测到 pnpm',
|
|
894
|
+
'doctor.pnpmFix': 'npm i -g pnpm,或在 monorepo 根目录使用 corepack enable',
|
|
895
|
+
'doctor.check.config': '配置文件',
|
|
896
|
+
'doctor.check.env': '环境变量',
|
|
897
|
+
'doctor.check.ports': '端口',
|
|
898
|
+
'doctor.check.database': '数据库',
|
|
899
|
+
'doctor.check.api': 'API 健康',
|
|
900
|
+
'doctor.configOk': '.reactpress/config.json 存在',
|
|
901
|
+
'doctor.configBad': '缺少 .reactpress/config.json',
|
|
902
|
+
'doctor.configFix': '运行 reactpress init',
|
|
903
|
+
'doctor.envOk': '.env 存在',
|
|
904
|
+
'doctor.envBad': '缺少 .env',
|
|
905
|
+
'doctor.envFix': '运行 reactpress init 或 reactpress config --apply',
|
|
906
|
+
'doctor.project': '项目目录 {path}',
|
|
907
|
+
'doctor.allPass': '全部检查通过,可以开始开发。',
|
|
908
|
+
'doctor.failed': '{count} 项需要处理。',
|
|
909
|
+
'doctor.title': 'ReactPress Doctor',
|
|
910
|
+
'doctor.subtitle': '环境健康检查',
|
|
911
|
+
'doctor.checking': '正在检查 {name}…',
|
|
912
|
+
'doctor.summary': '通过 {passed} · 失败 {failed} · 共 {total} 项',
|
|
913
|
+
'doctor.fixesHeader': '修复建议',
|
|
914
|
+
'status.title': 'ReactPress 项目状态',
|
|
915
|
+
'status.dir': '项目目录 {path}',
|
|
916
|
+
'status.apiSource': 'API 来源 {source}',
|
|
917
|
+
'status.apiSource.monorepo': 'monorepo server/',
|
|
918
|
+
'status.apiSource.bundle': 'reactpress-cli',
|
|
919
|
+
'status.configOk': '.reactpress/config.json',
|
|
920
|
+
'status.configBad': '未初始化',
|
|
921
|
+
'status.envOk': '.env',
|
|
922
|
+
'status.envBad': '缺少 .env',
|
|
923
|
+
'status.apiOnline': '在线',
|
|
924
|
+
'status.apiOffline': '离线',
|
|
925
|
+
'status.apiUnreachable': '{url} (离线或未启动)',
|
|
926
|
+
'status.dbUp': '连通',
|
|
927
|
+
'status.dbDown': '不可用',
|
|
928
|
+
'status.pidRunning': '(运行中)',
|
|
929
|
+
'status.frontend': '前端',
|
|
930
|
+
'status.docker': 'Docker',
|
|
931
|
+
'status.dockerUp': '可用',
|
|
932
|
+
'status.dockerDown': '未运行',
|
|
933
|
+
'status.section.project': '项目信息',
|
|
934
|
+
'status.section.api': 'API 服务',
|
|
935
|
+
'status.section.frontend': '前端',
|
|
936
|
+
'status.section.docker': 'Docker',
|
|
937
|
+
'status.field.url': 'URL',
|
|
938
|
+
'status.field.http': 'HTTP',
|
|
939
|
+
'status.field.health': '健康',
|
|
940
|
+
'status.field.database': '数据库',
|
|
941
|
+
'status.field.pid': 'PID',
|
|
942
|
+
'status.field.engine': '引擎',
|
|
943
|
+
'status.field.config': '配置',
|
|
944
|
+
'status.field.env': '环境',
|
|
945
|
+
'status.field.source': '来源',
|
|
946
|
+
'status.field.dir': '目录',
|
|
947
|
+
'bootstrap.configReady': '配置已存在,数据库已就绪。',
|
|
948
|
+
'bootstrap.projectDbPending': '项目已创建,但数据库未就绪: {message}。请确认 Docker 已启动后重试 reactpress dev。',
|
|
949
|
+
'bootstrap.ready': 'ReactPress 开发环境已就绪(配置 + 数据库)。',
|
|
950
|
+
'bootstrap.initFailed': '初始化失败',
|
|
951
|
+
'bootstrap.cliInitFailed': 'reactpress-cli init 失败',
|
|
952
|
+
'bootstrap.dbPendingShort': '数据库未就绪',
|
|
953
|
+
'bootstrap.dbNotReady': '{message}。建议:启动 Docker 后运行 reactpress docker up,或执行 reactpress doctor',
|
|
954
|
+
'bootstrap.dbReady': '数据库已就绪',
|
|
955
|
+
'db.backup.to': '备份数据库到 {path}',
|
|
956
|
+
'db.backup.done': '备份完成',
|
|
957
|
+
'db.backup.viaDocker': '本机未找到 mysqldump,改用 Docker 内 db 容器的 mysqldump…',
|
|
958
|
+
'db.backup.fail': 'mysqldump 失败:请安装 MySQL 客户端(如 brew install mysql-client),或确保 Docker 数据库已运行以便自动在容器内备份',
|
|
959
|
+
'common.done': '完成',
|
|
960
|
+
'common.yes': '是',
|
|
961
|
+
'common.no': '否',
|
|
962
|
+
'common.none': '(无)',
|
|
963
|
+
'common.unknownError': '未知错误',
|
|
964
|
+
'lifecycle.apiStopped': '[reactpress] 已停止 API 进程 (pid {pid})',
|
|
965
|
+
'lifecycle.stopPidFailed': '[reactpress] 停止 pid {pid} 失败:',
|
|
966
|
+
'lifecycle.apiAlreadyRunning': '[reactpress] API 已在运行 (pid {pid})',
|
|
967
|
+
'lifecycle.noServerAvailable': '[reactpress] 未找到可用的 API 运行时。请重新安装 @fecommunity/reactpress,或在含 server/src 的项目目录中运行。',
|
|
968
|
+
'lifecycle.startingLocalApi': '[reactpress] 正在启动本地 API (server/)…',
|
|
969
|
+
'lifecycle.startingBundledApi': '[reactpress] 正在启动内置 API…',
|
|
970
|
+
'lifecycle.apiStartedBg': '[reactpress] API 已后台启动 (pid {pid})',
|
|
971
|
+
'lifecycle.apiTimeout120': '[reactpress] API 在 120s 内未就绪: {url}',
|
|
972
|
+
'lifecycle.apiReady': '[reactpress] API 已就绪: {url}',
|
|
973
|
+
'lifecycle.apiStatusTitle': '[reactpress] API 状态',
|
|
974
|
+
'lifecycle.source': ' 来源: {source}',
|
|
975
|
+
'lifecycle.source.monorepo': 'monorepo server/',
|
|
976
|
+
'lifecycle.source.bundle': '内置 API (@fecommunity/reactpress)',
|
|
977
|
+
'lifecycle.pidFile': ' PID 文件: {path}',
|
|
978
|
+
'lifecycle.recordedPid': ' 记录 PID: {pid}',
|
|
979
|
+
'lifecycle.processAlive': ' 进程存活: {alive}',
|
|
980
|
+
'lifecycle.httpStatus': ' HTTP ({url}): {status}',
|
|
981
|
+
'lifecycle.httpReachable': '可访问',
|
|
982
|
+
'lifecycle.httpUnreachable': '不可访问',
|
|
983
|
+
'lifecycle.unknownCommand': '未知 lifecycle 命令: {command}',
|
|
984
|
+
'docker.stopping': '[reactpress] 正在停止 Docker 服务…',
|
|
985
|
+
'docker.stopped': '[reactpress] Docker 服务已停止。',
|
|
986
|
+
'docker.stopFailed': '[reactpress] 停止 Docker 失败:',
|
|
987
|
+
'docker.starting': '[reactpress] 正在启动 Docker 服务…',
|
|
988
|
+
'docker.notRunning': 'Docker 未运行,请先启动 Docker Desktop。',
|
|
989
|
+
'docker.devStartBlocked': '无法连接 127.0.0.1:{port} 上的 MySQL,且 Docker 未运行。请先启动 Docker Desktop,再执行:reactpress docker up — 或在 .env 中将 DB_* 指向已有 MySQL 实例。',
|
|
990
|
+
'docker.started': '[reactpress] Docker 服务已启动。',
|
|
991
|
+
'docker.waitingMysql': '[reactpress] 等待 MySQL 就绪…',
|
|
992
|
+
'docker.mysqlReady': '[reactpress] MySQL 已就绪。',
|
|
993
|
+
'docker.mysqlExternalReady': '[reactpress] 已使用端口 {port} 上的现有 MySQL。',
|
|
994
|
+
'docker.dbPortInUse': '[reactpress] 端口 {port} 已被占用 — 跳过 reactpress_db,改用该端口上的现有 MySQL。',
|
|
995
|
+
'docker.dbReuseExisting': '[reactpress] 端口 {port} 上 MySQL 已可用 — 保留 Docker 数据库容器',
|
|
996
|
+
'docker.dbPortInUseRecycle': '[reactpress] 端口 {port} 被占用且 MySQL 不可达 — 正在重建 reactpress_db 容器…',
|
|
997
|
+
'docker.dbPortConflict': '[reactpress] 端口 {port} 上的 MySQL 不可达。请执行:docker start reactpress_cli_db reactpress_db 或 docker compose -f docker-compose.dev.yml up -d db',
|
|
998
|
+
'docker.ensureDevDb': '[reactpress] MySQL 不可达 — 正在启动 Docker 数据库…',
|
|
999
|
+
'docker.waitingMysqlProgress': '[reactpress] 等待 MySQL… ({attempts}/{max})',
|
|
1000
|
+
'docker.mysqlTimeout': '[reactpress] MySQL 在超时时间内未就绪。',
|
|
1001
|
+
'docker.mysqlNotReady': 'MySQL 未就绪',
|
|
1002
|
+
'docker.startDevStack': '[reactpress] 启动 API + 前端 (Docker MySQL)…',
|
|
1003
|
+
'docker.visitUrls': '[reactpress] 访问: http://localhost (nginx) / http://localhost:3001 (client)',
|
|
1004
|
+
'docker.devProcessExit': '开发进程退出: {code}',
|
|
1005
|
+
'docker.unknownCommand': '未知 docker 命令: {command}',
|
|
1006
|
+
'nginx.configCreated': '[reactpress] 已生成 nginx 配置: {path}',
|
|
1007
|
+
'nginx.configExists': '[reactpress] nginx 配置已存在: {path}',
|
|
1008
|
+
'nginx.ensureWarn': '[reactpress] 无法确保 nginx 配置: {message}',
|
|
1009
|
+
'nginx.started': '[reactpress] Nginx 已启动 — {url}',
|
|
1010
|
+
'nginx.configPath': '[reactpress] 配置: {path}',
|
|
1011
|
+
'nginx.stopped': '[reactpress] Nginx 已停止。',
|
|
1012
|
+
'nginx.startFailed': '启动 nginx 容器失败',
|
|
1013
|
+
'nginx.prodMonorepoOnly': '生产 nginx(--prod)需要 monorepo 且存在 docker-compose.prod.yml',
|
|
1014
|
+
'nginx.statusTitle': '[reactpress] Nginx 状态',
|
|
1015
|
+
'nginx.statusContainer': ' 容器 {name}: {running}',
|
|
1016
|
+
'nginx.statusConfig': ' 配置 {path}: {exists}',
|
|
1017
|
+
'nginx.statusUrl': ' 入口 {url} (端口 {port})',
|
|
1018
|
+
'nginx.statusMode': ' 模式: {mode}',
|
|
1019
|
+
'nginx.notRunning': 'Nginx 容器未运行。请执行: reactpress nginx up',
|
|
1020
|
+
'nginx.testOk': '[reactpress] Nginx 配置校验通过。',
|
|
1021
|
+
'nginx.testFailed': 'Nginx 配置校验失败',
|
|
1022
|
+
'nginx.reloadOk': '[reactpress] Nginx 已重载。',
|
|
1023
|
+
'nginx.reloadFailed': 'Nginx 重载失败',
|
|
1024
|
+
'nginx.opening': '[reactpress] 正在打开 {url}',
|
|
1025
|
+
'nginx.unknownCommand': '未知 nginx 命令: {command}',
|
|
1026
|
+
'nginx.templateMissing': '内置 nginx 模板缺失: {path}',
|
|
1027
|
+
'nginx.doctorSkippedDocker': '已跳过(Docker 未运行)',
|
|
1028
|
+
'nginx.doctorSkippedNotRunning': '未启动(可选: reactpress nginx up)',
|
|
1029
|
+
'nginx.doctorNotRunningFix': 'reactpress nginx up(或 reactpress docker up)',
|
|
1030
|
+
'nginx.doctorOk': 'Nginx 健康 ({url}/health)',
|
|
1031
|
+
'nginx.doctorUnhealthy': 'Nginx 在运行但 /health 失败 ({url})',
|
|
1032
|
+
'nginx.doctorUnhealthyFix': '确认前端 (:3001) 与 API (:3002) 已启动;可执行 reactpress nginx reload',
|
|
1033
|
+
'doctor.check.nginx': 'Nginx 代理',
|
|
1034
|
+
'apiDev.modeServer': '[reactpress] 开发模式: server/ (nest start --watch)',
|
|
1035
|
+
'apiDev.modeBundled': '[reactpress] 开发模式: 内置 API(随包附带)',
|
|
1036
|
+
'apiDev.ctrlCHint': '[reactpress] 按 Ctrl+C 停止 API。',
|
|
1037
|
+
'apiDev.stopHint': '[reactpress] 单独停止: reactpress server stop',
|
|
1038
|
+
'build.unknownTarget': '未知构建目标: {target},可选: {available}',
|
|
1039
|
+
'build.recursive': '检测到构建递归(pnpm run build 不能再次调用自身)。请使用 build:toolkit、build:server 或 build:client。',
|
|
1040
|
+
'build.forbiddenScript': '无效的构建脚本 "{script}",请使用 build:toolkit 等细分脚本。',
|
|
1041
|
+
'build.stepFailed': '[{current}/{total}] {label} 失败',
|
|
1042
|
+
'build.plan': '生产构建 — 共 {total} 步:toolkit → server → client',
|
|
1043
|
+
'build.step': '[{current}/{total}] {label}',
|
|
1044
|
+
'build.stepDone': '[{current}/{total}] {label} ({seconds}s)',
|
|
1045
|
+
'build.stepSkipped': '已跳过 {label}(当前项目无对应源码包)',
|
|
1046
|
+
'build.stepSkippedFresh': '已跳过 {label}(dist 已是最新)',
|
|
1047
|
+
'build.stepSkippedReuse': '已跳过 {label} — 复用主题「{id}」已有构建',
|
|
1048
|
+
'build.done': '构建完成,耗时 {seconds}s',
|
|
1049
|
+
'build.label.toolkit': 'Toolkit',
|
|
1050
|
+
'build.label.plugins': '插件 (plugins)',
|
|
1051
|
+
'build.label.server': 'API (server)',
|
|
1052
|
+
'build.label.web': '管理后台 (web)',
|
|
1053
|
+
'build.label.theme': '访客主题 (theme)',
|
|
1054
|
+
'build.label.docs': '文档 (docs)',
|
|
1055
|
+
'pm2.startFailed': '[reactpress] PM2 启动 API 失败:',
|
|
1056
|
+
'pm2.exitCode': 'PM2 退出码 {code}',
|
|
1057
|
+
'spawn.commandFailed': '命令失败 ({command}): 退出码 {code}',
|
|
1058
|
+
'spawn.exitCode': '退出码 {code}',
|
|
1059
|
+
'shim.deprecated': '\n[deprecated] reactpress-cli 将在 3.1 移除。请改用:\n npm i -g @fecommunity/reactpress\n reactpress init · reactpress dev · reactpress doctor\n',
|
|
1060
|
+
'server.help.invokedBy': ' (通常由 reactpress server start 调用)',
|
|
1061
|
+
'publish.pkg.main': 'ReactPress 3.0 主包 — 唯一入口 (init / dev / doctor / publish)',
|
|
1062
|
+
'publish.pkg.server': 'NestJS 后端 API (deprecated — 使用 reactpress-cli 内置 API)',
|
|
1063
|
+
'bundle.cli.description': '零配置初始化与管理 ReactPress CMS & 博客服务器',
|
|
1064
|
+
'bundle.cli.cwd': 'ReactPress 项目目录(默认:当前工作目录)',
|
|
1065
|
+
'bundle.cli.init.description': '一键初始化 ReactPress CMS & 博客服务器(零配置)',
|
|
1066
|
+
'bundle.cli.init.directory': '项目目录',
|
|
1067
|
+
'bundle.cli.init.force': '覆盖已有配置',
|
|
1068
|
+
'bundle.cli.start.description': '启动服务器(自动准备数据库)',
|
|
1069
|
+
'bundle.cli.stop.description': '停止服务器',
|
|
1070
|
+
'bundle.cli.stop.database': '同时停止嵌入式数据库容器',
|
|
1071
|
+
'bundle.cli.restart.description': '重启服务器',
|
|
1072
|
+
'bundle.cli.status.description': '查看服务与数据库状态',
|
|
1073
|
+
'bundle.cli.config.description': '查看或更新配置(更新后可用 --apply 重启生效)',
|
|
1074
|
+
'bundle.cli.config.key': '配置键,如 server.port',
|
|
1075
|
+
'bundle.cli.config.value': '新值',
|
|
1076
|
+
'bundle.cli.config.list': '列出所有配置',
|
|
1077
|
+
'bundle.cli.config.apply': '更新后自动重启服务',
|
|
1078
|
+
'bundle.cli.unknownCommand': '未知命令: {command}',
|
|
1079
|
+
'bundle.cmd.init.spinner': '正在初始化 ReactPress 项目…',
|
|
1080
|
+
'bundle.cmd.init.succeed': '初始化完成',
|
|
1081
|
+
'bundle.cmd.init.fail': '初始化失败',
|
|
1082
|
+
'bundle.cmd.init.projectDir': '项目目录: {path}',
|
|
1083
|
+
'bundle.cmd.init.nextStep': '下一步: reactpress-cli start',
|
|
1084
|
+
'bundle.cmd.notProject': '当前目录不是 ReactPress 项目。',
|
|
1085
|
+
'bundle.cmd.notProjectInit': '当前目录不是 ReactPress 项目。请先运行 reactpress-cli init。',
|
|
1086
|
+
'bundle.cmd.start.spinner': '正在准备数据库与服务…',
|
|
1087
|
+
'bundle.cmd.start.succeed': '服务已启动',
|
|
1088
|
+
'bundle.cmd.start.fail': '启动失败',
|
|
1089
|
+
'bundle.cmd.stop.spinner': '正在停止服务…',
|
|
1090
|
+
'bundle.cmd.stop.succeed': '已停止',
|
|
1091
|
+
'bundle.cmd.stop.fail': '停止失败',
|
|
1092
|
+
'bundle.cmd.restart.spinner': '正在重启服务…',
|
|
1093
|
+
'bundle.cmd.restart.succeed': '重启完成',
|
|
1094
|
+
'bundle.cmd.restart.fail': '重启失败',
|
|
1095
|
+
'bundle.cmd.status.title': '服务状态',
|
|
1096
|
+
'bundle.cmd.status.project': '项目: {path}',
|
|
1097
|
+
'bundle.cmd.status.service': '服务: {status}{pid}',
|
|
1098
|
+
'bundle.cmd.status.running': '运行中',
|
|
1099
|
+
'bundle.cmd.status.stopped': '已停止',
|
|
1100
|
+
'bundle.cmd.status.url': '地址: {url}',
|
|
1101
|
+
'bundle.cmd.status.database': '数据库: {status} ({mode})',
|
|
1102
|
+
'bundle.cmd.status.dbReady': '就绪',
|
|
1103
|
+
'bundle.cmd.status.dbNotReady': '未就绪',
|
|
1104
|
+
'bundle.cmd.config.title': '配置项',
|
|
1105
|
+
'bundle.cmd.config.keyRequired': '请指定配置键,例如: reactpress-cli config server.port 3003',
|
|
1106
|
+
'bundle.cmd.config.listHint': '使用 --list 查看所有配置项',
|
|
1107
|
+
'bundle.cmd.config.updated': '已更新 {key} = {value}',
|
|
1108
|
+
'bundle.cmd.config.restartSpinner': '正在重启以使配置生效…',
|
|
1109
|
+
'bundle.cmd.config.applied': '配置已应用',
|
|
1110
|
+
'bundle.cmd.config.restartFail': '重启失败',
|
|
1111
|
+
'bundle.cmd.config.restartManual': '请手动运行 reactpress-cli restart',
|
|
1112
|
+
'bundle.cmd.config.applyHint': '运行 reactpress-cli restart 或 config --apply 使配置生效',
|
|
1113
|
+
'bundle.service.init.alreadyProject': '目录已是 ReactPress 项目。使用 --force 覆盖配置。',
|
|
1114
|
+
'bundle.service.init.dbPending': '项目已创建,但数据库未就绪: {message}。可稍后运行 reactpress-cli start。',
|
|
1115
|
+
'bundle.service.init.complete': 'ReactPress 项目初始化完成。运行 reactpress-cli start 启动服务。',
|
|
1116
|
+
'bundle.service.init.templateMissing': '模板文件缺失: {path}',
|
|
1117
|
+
'bundle.service.config.notFound': '未找到 ReactPress 项目。请先运行 reactpress-cli init 初始化。',
|
|
1118
|
+
'bundle.service.config.keyMissing': '配置项不存在: {key}',
|
|
1119
|
+
'bundle.service.server.alreadyRunning': '服务已在运行 (PID {pid}),访问 {url}',
|
|
1120
|
+
'bundle.service.server.portBusy': '端口 {port} 已被占用,ReactPress 无法绑定。若曾用 Docker Compose 启动过 ReactPress,请执行: docker stop reactpress_server。也可在 .reactpress/config.json 中修改 server.port。',
|
|
1121
|
+
'bundle.service.server.cannotStart': '无法启动 ReactPress 服务进程。',
|
|
1122
|
+
'bundle.service.server.noHttp': '服务进程已启动 (PID {pid}),但 {url} 无 HTTP 响应。请检查端口占用或 .env 数据库配置。',
|
|
1123
|
+
'bundle.service.server.started': 'ReactPress 服务已启动,访问 {url}',
|
|
1124
|
+
'bundle.service.server.stopped': 'ReactPress 服务已停止。',
|
|
1125
|
+
'bundle.service.server.cannotStopPid': '无法停止进程 PID {pid}',
|
|
1126
|
+
'bundle.service.database.dockerMissing': '未检测到 Docker。请安装并启动 Docker,或将 database.mode 设为 external 并使用已有 MySQL。',
|
|
1127
|
+
'bundle.service.database.portSwitched': '宿主机端口 {previous} 已被占用,已改用 {port}(已更新 .env)',
|
|
1128
|
+
'bundle.service.database.portBindRetry': '端口 {port} 绑定失败,正在尝试其他端口…',
|
|
1129
|
+
'bundle.service.database.containerStartFailed': '启动数据库容器失败: {detail}',
|
|
1130
|
+
'bundle.service.database.credsMismatch': '数据库容器已在端口 {port} 运行,但账号「{user}」无法连接(数据卷中的凭证与 .env 不一致)。请在项目目录执行: cd .reactpress && docker compose down -v && cd .. && reactpress-cli start',
|
|
1131
|
+
'bundle.service.database.connectionTimeout': '数据库容器已启动,但连接超时。请执行 docker logs {container} 查看详情。',
|
|
1132
|
+
'bundle.service.database.cannotConnect': '无法连接数据库 {host}:{port},请检查 .env 中的 DB_* 配置。',
|
|
1133
|
+
'bundle.serverBundle.missing': '内置服务端缺失,请重新安装 reactpress-cli。',
|
|
1134
|
+
'bundle.serverBundle.installFailed': '内置服务端依赖安装失败。请在 reactpress-cli 安装目录下手动执行: cd server && npm install --omit=dev --no-bin-links',
|
|
1135
|
+
'bundle.serverBundle.notBuilt': '内置服务端未构建或依赖不完整。请运行 npm run build:server(开发)或重新安装 reactpress-cli。',
|
|
1136
|
+
'bundle.port.notFound': '在 {start}-{end} 范围内未找到可用端口',
|
|
1137
|
+
},
|
|
1138
|
+
};
|
|
1139
|
+
module.exports = { STRINGS };
|
|
1140
|
+
//# sourceMappingURL=strings.js.map
|