@inneranimalmedia/agentsam-sdk 2.6.10 → 2.6.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/TRADEMARKS.md +22 -0
- package/apps/README.md +3 -0
- package/apps/cad-creator/LICENSE +21 -0
- package/apps/cad-creator/README.md +4 -1
- package/apps/cad-creator/shared/cad/package.json +1 -1
- package/apps/client-cms-editor/LICENSE +21 -0
- package/apps/client-cms-editor/README.md +3 -0
- package/apps/client-cms-editor/backend/package.json +2 -2
- package/apps/client-cms-editor/frontend/package.json +3 -3
- package/apps/client-cms-editor/frontend/src/adapters/http-authoring.test.ts +161 -0
- package/apps/client-cms-editor/frontend/src/adapters/http.ts +296 -65
- package/apps/client-cms-editor/frontend/src/editor/CmsEditor.tsx +47 -16
- package/apps/client-cms-editor/frontend/src/editor/composition-groups.test.ts +40 -0
- package/apps/client-cms-editor/frontend/src/editor/legacy/CmsEditorPrototype.tsx +28 -28
- package/apps/client-cms-editor/frontend/src/editor/useCmsEditorController.ts +3 -3
- package/apps/client-cms-editor/frontend/src/styles/agentsam-drawer.css +5 -4
- package/apps/client-cms-editor/frontend/src/styles/studio.css +150 -149
- package/apps/client-cms-editor/package-lock.json +43 -43
- package/apps/client-cms-editor/package.json +3 -3
- package/apps/client-cms-editor/reference/harvest/HARVEST_RECEIPT.json +1 -1
- package/apps/client-cms-editor/reference/harvest/README.md +1 -1
- package/apps/client-cms-editor/reference/harvest/plans/ARCHIVE-INTAKE.md +1 -1
- package/apps/client-cms-editor/reference/harvest/plans/HARVEST-INDEX.md +1 -1
- package/apps/client-cms-editor/reference/harvest/plans/INNERANIMALS-CONTENT-001.md +1 -1
- package/apps/client-cms-editor/reference/harvest/plans/TOOLING-LAB.md +1 -1
- package/apps/client-cms-editor/shared/cms/package.json +1 -1
- package/apps/client-cms-editor/shared/cms/src/editor-types.ts +42 -1
- package/docs/CMS_CONTEXTUAL_COMPOSER.md +4 -4
- package/docs/MINI.md +4 -2
- package/docs/PRODUCT_LIFECYCLE.md +38 -38
- package/docs/REPO_FILE_MAP.txt +2 -3
- package/docs/SOURCE_ARCHITECTURE.md +1 -1
- package/docs/THEME_REFINERY.md +6 -6
- package/docs/WINDOWS_RUNTIME_INSTALL.md +1 -1
- package/docs/adr/ADR-0002-brand-campaign-plugin-boundaries.md +603 -0
- package/docs/adr/ADR-0003-copro-clean-room-product-architecture.md +34 -0
- package/docs/adr/ADR-0003-product-portfolio-and-package-taxonomy.md +146 -0
- package/docs/adr/ADR-0004-product-composition-and-provider-neutrality.md +56 -0
- package/docs/adr/ADR-0005-offer-graduation-standard.md +66 -0
- package/docs/adr/README.md +25 -0
- package/docs/architecture/AGENTSAM_APPLICATION_CONTRACT.md +1 -1
- package/docs/architecture/DUAL_ANALYTICS_PRODUCT.md +140 -0
- package/docs/content-studio/HOST_MOUNT_CHECKLIST.md +1 -1
- package/docs/content-studio/REVISION_GATE_2026-09-27.md +4 -4
- package/docs/contracts/google-cloud-oauth-setup.md +1 -1
- package/docs/engineering/go-portability/01-product-project-deployment-authority.md +69 -0
- package/docs/engineering/provider-internal-renames/01-lane-initialization.md +20 -0
- package/docs/engineering/provider-internal-renames/01a-runtime-environment-contract.md +115 -0
- package/docs/engineering/provider-internal-renames/02-cfoa.md +57 -0
- package/docs/engineering/provider-internal-renames/03-gclioa.md +32 -0
- package/docs/engineering/provider-internal-renames/04-goaude.md +50 -0
- package/docs/engineering/provider-internal-renames/05-gdrv.md +33 -0
- package/docs/engineering/provider-internal-renames/06-verification.md +103 -0
- package/docs/engineering/provider-internal-renames/README.md +77 -0
- package/docs/engineering/provider-internal-renames/runtime-environment-contract.json +220 -0
- package/docs/engineering/test-diagnostics/go-cli-test-hang-20261003.md +49 -0
- package/docs/engineering/test-diagnostics/go-skip-deploy-docker-fix.md +90 -0
- package/docs/knowledge-service-verification.md +3 -3
- package/docs/local-studio/WORKMODE_DONOR_NOTES.md +3 -3
- package/docs/plans/AGENTSAM-SUSPEND-QUEUE-KNOWLEDGE-RDP-2026-10-03.md +870 -0
- package/docs/plans/ASTRA-BRIEF-2026-09-18.md +1 -1
- package/docs/plans/LOCAL-STUDIO-GRADUATION-2026-09-26.md +9 -9
- package/docs/plans/LOCAL-STUDIO-REAL-APP-CONTRACT-ADDENDUM-2026-09-27.md +2 -2
- package/docs/plans/MACHINE-FIRST-APPS-TUI-2026-09-24.md +12 -12
- package/docs/plans/NEXT-AGENT-HANDOFF.md +2 -2
- package/docs/plans/RECONCILIATION-2026-09-19.md +6 -6
- package/docs/plans/SAM_WORK_PROTOCOL.md +667 -0
- package/docs/plans/TOMORROW-EXTENSIVE-TODO-2026-09-26.md +70 -70
- package/docs/plans/TOMORROW-MACHINE-FIRST-BRIEFING.md +1 -1
- package/docs/plans/UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md +4 -4
- package/docs/prd/PRD-agentsam-analytics.md +174 -0
- package/docs/prd/PRD-agentsam-brand.md +181 -0
- package/docs/prd/PRD-agentsam-browser.md +177 -0
- package/docs/prd/PRD-agentsam-cad-studio.md +177 -0
- package/docs/prd/PRD-agentsam-campaign.md +1178 -0
- package/docs/prd/PRD-agentsam-commerce-studio.md +180 -0
- package/docs/prd/PRD-agentsam-content-studio.md +179 -0
- package/docs/prd/PRD-agentsam-copro.md +39 -0
- package/docs/prd/PRD-agentsam-database-studio.md +175 -0
- package/docs/prd/PRD-agentsam-developer-studio.md +175 -0
- package/docs/prd/PRD-agentsam-hosted-runtime.md +180 -0
- package/docs/prd/PRD-agentsam-knowledge.md +174 -0
- package/docs/prd/PRD-agentsam-local-studio.md +180 -0
- package/docs/prd/PRD-agentsam-merch.md +177 -0
- package/docs/prd/PRD-agentsam-platform.md +179 -0
- package/docs/prd/PRD-agentsam-site-studio.md +180 -0
- package/docs/prd/PRD-agentsam-work.md +180 -0
- package/docs/prd/README.md +39 -0
- package/docs/product/COPRO-DONOR-AUDIT.md +9 -0
- package/docs/product/COPRO-EXECUTION-PLAN.md +81 -0
- package/docs/product/COPRO-UI-QUALITY-GATE.md +119 -0
- package/docs/product/OFFER-PORTFOLIO.md +158 -0
- package/docs/product/PACKAGE-TAXONOMY.md +78 -0
- package/examples/hyperspace-demo/dist/assets/index-SZ2LfOpJ.js +242 -0
- package/examples/hyperspace-demo/dist/index.html +13 -0
- package/examples/hyperspace-demo/src/main.tsx +227 -110
- package/migrations/d1/0020_agentsam_receipt_catalog.sql +35 -0
- package/migrations/runtime/0006_agent_run_suspend_activity.sql +53 -0
- package/migrations/runtime/0007_queue_control.sql +40 -0
- package/migrations/runtime/0008_agent_run_dependencies.sql +24 -0
- package/migrations/runtime/0008_analytics_legacy_bootstrap.sql +43 -0
- package/migrations/runtime/0009_analytics_authority.sql +108 -0
- package/native/agentsam-machine/core/src/lib.rs +2 -2
- package/package.json +78 -43
- package/packages/agentsam-brand/README.md +3 -0
- package/packages/agentsam-brand/package.json +4 -3
- package/packages/agentsam-brand/src/public.js +192 -0
- package/packages/agentsam-contracts/README.md +1 -1
- package/packages/agentsam-contracts/dist/adapter.d.ts +22 -0
- package/packages/agentsam-contracts/dist/adapter.js +0 -0
- package/packages/agentsam-contracts/dist/agent.d.ts +66 -0
- package/packages/agentsam-contracts/dist/agent.js +15 -0
- package/packages/agentsam-contracts/dist/artifacts.d.ts +70 -0
- package/packages/agentsam-contracts/dist/artifacts.js +0 -0
- package/packages/agentsam-contracts/dist/authority.d.ts +21 -0
- package/packages/agentsam-contracts/dist/authority.js +0 -0
- package/packages/agentsam-contracts/dist/context.d.ts +14 -0
- package/packages/agentsam-contracts/dist/context.js +0 -0
- package/packages/agentsam-contracts/dist/errors.d.ts +121 -0
- package/packages/agentsam-contracts/dist/errors.js +5 -0
- package/packages/agentsam-contracts/dist/events.d.ts +53 -0
- package/packages/agentsam-contracts/dist/events.js +0 -0
- package/packages/agentsam-contracts/dist/execution.d.ts +38 -0
- package/packages/agentsam-contracts/dist/execution.js +0 -0
- package/packages/agentsam-contracts/dist/hooks.d.ts +31 -0
- package/packages/agentsam-contracts/dist/hooks.js +0 -0
- package/packages/agentsam-contracts/dist/identity.d.ts +15 -0
- package/packages/agentsam-contracts/dist/identity.js +0 -0
- package/packages/agentsam-contracts/dist/index.d.ts +16 -0
- package/packages/agentsam-contracts/dist/index.js +164 -0
- package/packages/agentsam-contracts/dist/models.d.ts +9 -0
- package/packages/agentsam-contracts/dist/models.js +0 -0
- package/packages/agentsam-contracts/dist/providers.d.ts +27 -0
- package/packages/agentsam-contracts/dist/providers.js +0 -0
- package/packages/agentsam-contracts/dist/repository.d.ts +56 -0
- package/packages/agentsam-contracts/dist/repository.js +15 -0
- package/packages/agentsam-contracts/dist/run.d.ts +113 -0
- package/packages/agentsam-contracts/dist/run.js +132 -0
- package/packages/agentsam-contracts/dist/tools.d.ts +82 -0
- package/packages/agentsam-contracts/dist/tools.js +0 -0
- package/packages/agentsam-contracts/dist/widgets.d.ts +38 -0
- package/packages/agentsam-contracts/dist/widgets.js +0 -0
- package/packages/agentsam-contracts/package.json +9 -1
- package/packages/agentsam-contracts/scripts/build.mjs +1 -1
- package/packages/agentsam-contracts/src/agent.ts +78 -3
- package/packages/agentsam-contracts/src/index.ts +2 -0
- package/packages/agentsam-contracts/src/run.ts +320 -0
- package/packages/agentsam-contracts/src/widgets.ts +58 -0
- package/packages/agentsam-contracts/test/contracts.test.mjs +1 -1
- package/packages/agentsam-contracts/test/run-contract.test.mjs +94 -0
- package/packages/agentsam-errors/package.json +1 -1
- package/packages/agentsam-goap/README.md +3 -0
- package/packages/agentsam-goap/package.json +2 -2
- package/packages/agentsam-hooks/package.json +2 -2
- package/packages/agentsam-hooks/src/adapters/agents.js +48 -22
- package/packages/agentsam-hooks/src/index.d.ts +16 -0
- package/packages/agentsam-knowledge/package.json +1 -1
- package/packages/agentsam-knowledge/src/backends/index.js +1 -1
- package/packages/agentsam-merch/README.md +62 -0
- package/packages/agentsam-merch/bin/agentsam-merch.mjs +16 -0
- package/packages/agentsam-merch/package.json +65 -0
- package/packages/agentsam-merch/profiles/completeful/dtg-back-large.json +42 -0
- package/packages/agentsam-merch/profiles/completeful/laser-engraving.json +39 -0
- package/packages/agentsam-merch/profiles/generic/embroidery-digitization.json +22 -0
- package/packages/agentsam-merch/schemas/collection-candidate.schema.json +66 -0
- package/packages/agentsam-merch/schemas/manufacturing-profile.schema.json +221 -0
- package/packages/agentsam-merch/src/adapters-completeful.js +50 -0
- package/packages/agentsam-merch/src/cli.js +93 -0
- package/packages/agentsam-merch/src/collection-lab.js +60 -0
- package/packages/agentsam-merch/src/compatibility.js +501 -0
- package/packages/agentsam-merch/src/derivatives.js +112 -0
- package/packages/agentsam-merch/src/index.d.ts +316 -0
- package/packages/agentsam-merch/src/index.js +46 -0
- package/packages/agentsam-merch/src/node/index.d.ts +58 -0
- package/packages/agentsam-merch/src/node/index.js +6 -0
- package/packages/agentsam-merch/src/node/raster.js +142 -0
- package/packages/agentsam-merch/src/node/vector.js +239 -0
- package/packages/agentsam-merch/src/product-concepts.js +118 -0
- package/packages/agentsam-merch/src/profile-registry.js +104 -0
- package/packages/agentsam-merch/src/profile.js +158 -0
- package/packages/agentsam-merch/src/transforms.js +215 -0
- package/packages/agentsam-merch/test/merch.test.mjs +332 -0
- package/packages/agentsam-merch/test/node-transforms.test.mjs +149 -0
- package/packages/agentsam-nav/package.json +1 -1
- package/packages/agentsam-queue-control/README.md +4 -1
- package/packages/agentsam-queue-control/package.json +4 -3
- package/packages/agentsam-queue-control/schemas/job-envelope.schema.json +111 -11
- package/packages/agentsam-queue-control/src/adapters/cloudflare.js +34 -6
- package/packages/agentsam-queue-control/src/adapters/memory.js +11 -2
- package/packages/agentsam-queue-control/src/adapters/sqlite.js +259 -0
- package/packages/agentsam-queue-control/src/contracts.js +207 -3
- package/packages/agentsam-queue-control/src/control-plane.js +62 -2
- package/packages/agentsam-queue-control/src/index.js +1 -0
- package/packages/agentsam-queue-control/test/queue-control.test.mjs +310 -0
- package/packages/agentsam-queue-control/test/sqlite-adapter.test.mjs +91 -0
- package/packages/agentsam-rapid-rust/README.md +3 -0
- package/packages/agentsam-repository/README.md +3 -0
- package/packages/agentsam-repository/package.json +1 -1
- package/packages/agentsam-vault/package.json +1 -1
- package/packages/agentsam-workbench/README.md +43 -0
- package/packages/agentsam-workbench/package.json +15 -4
- package/packages/agentsam-workbench/src/agent/AgentConversationSurface.tsx +108 -0
- package/packages/agentsam-workbench/src/agent/AgentPanel.tsx +25 -8
- package/packages/agentsam-workbench/src/agent/AgentRuntimeField.tsx +152 -0
- package/packages/agentsam-workbench/src/agent/Composer.tsx +10 -1
- package/packages/agentsam-workbench/src/agent/MiniAgentSam.tsx +28 -4
- package/packages/agentsam-workbench/src/agent/RunMode.ts +26 -0
- package/packages/agentsam-workbench/src/agent/Thread.tsx +18 -3
- package/packages/agentsam-workbench/src/agent/contextual-composer.css +72 -70
- package/packages/agentsam-workbench/src/agent/index.ts +3 -0
- package/packages/agentsam-workbench/src/agent/mini-agentsam.css +228 -10
- package/packages/agentsam-workbench/src/index.ts +4 -0
- package/packages/agentsam-workbench/src/manufacturing/PreflightIndicator.tsx +203 -0
- package/packages/agentsam-workbench/src/manufacturing/index.ts +2 -0
- package/packages/agentsam-workbench/src/manufacturing/loading.ts +147 -0
- package/packages/agentsam-workbench/src/widgets/BuiltinWidget.tsx +22 -0
- package/packages/agentsam-workbench/src/widgets/CountdownWidget.tsx +68 -0
- package/packages/agentsam-workbench/src/widgets/WidgetFrame.tsx +56 -0
- package/packages/agentsam-workbench/src/widgets/countdown.ts +25 -0
- package/packages/agentsam-workbench/src/widgets/index.ts +6 -0
- package/packages/agentsam-workbench/src/widgets/registry.ts +13 -0
- package/packages/agentsam-workbench/src/widgets/useCountdown.ts +128 -0
- package/packages/agentsam-workbench/src/widgets/widgets.css +102 -0
- package/packages/connectors/{cloudflare → cfoa}/package.json +3 -3
- package/packages/heuristic-theme/package.json +1 -1
- package/packages/identity/README.md +3 -0
- package/packages/identity/backend/README.md +3 -0
- package/packages/identity/package.json +1 -1
- package/packages/identity/src/frontend/auth-portal/README.md +3 -0
- package/packages/identity/src/frontend/auth-portal/pages/login.html +1 -1
- package/packages/identity/src/frontend/auth-portal/pages/reset.html +1 -1
- package/packages/identity/src/frontend/auth-portal/pages/signup.html +1 -1
- package/packages/identity/src/index.js +1 -1
- package/packages/identity/src/oauth/README.md +4 -1
- package/packages/identity/src/oauth/credentials.js +1 -1
- package/packages/identity/src/server/worker-router.js +1 -1
- package/packages/identity/tests/chatgpt-provider.test.mjs +3 -3
- package/packages/identity/tests/google-desktop-identity-login.test.mjs +1 -1
- package/packages/identity/tests/lane1-packed-consumer.test.mjs +1 -1
- package/packages/identity/tests/oauth-consent-view.test.mjs +11 -11
- package/packages/identity/tests/oauth-presets-accounts-ssot.test.mjs +1 -1
- package/packages/providers/completeful/README.md +3 -3
- package/packages/providers/completeful/package.json +1 -1
- package/packages/theme-cypress/README.md +11 -0
- package/packages/{theme-church-site → theme-cypress}/package.json +14 -11
- package/packages/theme-cypress/prebuild.json +23 -0
- package/packages/theme-cypress/site/assets/generated/favicon.svg +7 -0
- package/packages/theme-cypress/site/assets/generated/media-044ba16613.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-0a1ea6f6d9.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-0c06778307.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-1539ed373a.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-2df479fd2d.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-2e8bd0d9bc.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-41d4e2643c.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-46205bfde8.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-50c5f3e279.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-5f1467778c.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-6703642b22.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-87a490bc8e.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-997c10ef39.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-a423735c21.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-c9cea5245b.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-cab3c84c60.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-ce06595d59.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-d268905e7e.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-f6711b5053.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/media-manifest.json +226 -0
- package/packages/theme-cypress/site/assets/generated/social-card.webp +0 -0
- package/packages/theme-cypress/site/assets/generated/theme-mark-192.png +0 -0
- package/packages/theme-cypress/site/assets/generated/theme-mark-512.png +0 -0
- package/packages/theme-cypress/site/assets/generated/theme-mark.svg +7 -0
- package/packages/theme-cypress/site/beliefs.html +175 -0
- package/packages/theme-cypress/site/community.html +175 -0
- package/packages/theme-cypress/site/connect.html +319 -0
- package/packages/theme-cypress/site/donate.html +106 -0
- package/packages/theme-cypress/site/groups.html +1352 -0
- package/packages/theme-cypress/site/help.html +1 -0
- package/packages/theme-cypress/site/icons/clock.svg +4 -0
- package/packages/theme-cypress/site/icons/email.svg +4 -0
- package/packages/theme-cypress/site/icons/giving.svg +4 -0
- package/packages/theme-cypress/site/icons/home.svg +4 -0
- package/packages/theme-cypress/site/icons/location.svg +4 -0
- package/packages/theme-cypress/site/icons/media.svg +4 -0
- package/packages/theme-cypress/site/icons/ministries.svg +6 -0
- package/packages/theme-cypress/site/icons/prayer.svg +5 -0
- package/packages/theme-cypress/site/icons/visit.svg +6 -0
- package/packages/theme-cypress/site/index.html +1013 -0
- package/packages/theme-cypress/site/mensgroup.html +477 -0
- package/packages/theme-cypress/site/mission.html +512 -0
- package/packages/theme-cypress/site/unified-footer.css +172 -0
- package/packages/theme-cypress/site/unified-footer.js +175 -0
- package/packages/theme-cypress/site/unified-header.css +226 -0
- package/packages/theme-cypress/site/unified-header.js +111 -0
- package/packages/theme-cypress/site/womansgroup.html +452 -0
- package/packages/{theme-church-site → theme-cypress}/src/index.js +22 -35
- package/packages/theme-cypress/src/node.js +69 -0
- package/packages/theme-cypress/test/theme.test.mjs +47 -0
- package/packages/theme-ember/README.md +11 -0
- package/packages/{theme-fuelnfree-site → theme-ember}/package.json +14 -11
- package/packages/theme-ember/prebuild.json +23 -0
- package/packages/theme-ember/site/about.html +1840 -0
- package/packages/theme-ember/site/assets/generated/favicon.svg +7 -0
- package/packages/theme-ember/site/assets/generated/media-1e0b1e6ee6.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-2371dcb426.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-2db4f5ff9e.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-4ed07a756e.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-58182cf167.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-5b8b8472ae.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-71f4bd16a1.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-7c1c8120bc.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-832b176433.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-931439701c.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-c2860d40d1.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-c56974d198.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-cb83a44ff4.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-df02ccdfcf.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-fab72cd344.webp +0 -0
- package/packages/theme-ember/site/assets/generated/media-manifest.json +190 -0
- package/packages/theme-ember/site/assets/generated/social-card.webp +0 -0
- package/packages/theme-ember/site/assets/generated/theme-mark-192.png +0 -0
- package/packages/theme-ember/site/assets/generated/theme-mark-512.png +0 -0
- package/packages/theme-ember/site/assets/generated/theme-mark.svg +7 -0
- package/packages/theme-ember/site/community.html +1664 -0
- package/packages/theme-ember/site/index.html +2044 -0
- package/packages/theme-ember/site/shop.html +2104 -0
- package/packages/{theme-fuelnfree-site → theme-ember}/src/index.js +23 -33
- package/packages/theme-ember/src/node.js +69 -0
- package/packages/theme-ember/test/theme.test.mjs +47 -0
- package/packages/theme-forge/README.md +11 -0
- package/packages/theme-forge/package.json +44 -0
- package/packages/theme-forge/prebuild.json +23 -0
- package/packages/theme-forge/site/apple-touch-icon.png +0 -0
- package/packages/theme-forge/site/assets/generated/favicon.svg +7 -0
- package/packages/theme-forge/site/assets/generated/media-manifest.json +17 -0
- package/packages/theme-forge/site/assets/generated/social-card.webp +0 -0
- package/packages/theme-forge/site/assets/generated/theme-mark-192.png +0 -0
- package/packages/theme-forge/site/assets/generated/theme-mark-512.png +0 -0
- package/packages/theme-forge/site/assets/generated/theme-mark.svg +7 -0
- package/packages/theme-forge/site/assets/index-DBOqQVsA.css +1 -0
- package/packages/theme-forge/site/assets/index-pXC0o9jp.js +241 -0
- package/packages/theme-forge/site/assets/workbox-window.prod.es5-Bd17z0YL.js +2 -0
- package/packages/theme-forge/site/index.html +5 -0
- package/packages/theme-forge/site/manifest.webmanifest +1 -0
- package/packages/theme-forge/site/pwa-192x192.png +0 -0
- package/packages/theme-forge/site/pwa-512x512.png +0 -0
- package/packages/theme-forge/site/sw.js +107 -0
- package/packages/theme-forge/site/workbox-7e5eb42b.js +3395 -0
- package/packages/theme-forge/src/index.js +76 -0
- package/packages/theme-forge/src/node.js +69 -0
- package/packages/theme-forge/test/theme.test.mjs +47 -0
- package/packages/theme-grove/README.md +11 -0
- package/packages/{theme-floors-site → theme-grove}/package.json +14 -11
- package/packages/theme-grove/prebuild.json +23 -0
- package/packages/theme-grove/site/assets/generated/favicon.svg +7 -0
- package/packages/theme-grove/site/assets/generated/media-098b13d75a.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-0c064db1aa.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-0fbfef655e.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-14759c7460.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-19b23d2a8f.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-2012f04243.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-23b8c5e2bb.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-2bffb1a6ef.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-2e1523a5b0.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-31107c21f2.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-31373ec865.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-45e8e27542.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-4aa9846fe7.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-5476b24219.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-7a227d3e4b.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-b183eed550.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-b2c650f9ab.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-b5d7471694.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-c86498fdb4.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-ce2cfff9a1.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-cf41a5f324.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-ec6c01bf8d.webp +0 -0
- package/packages/theme-grove/site/assets/generated/media-manifest.json +267 -0
- package/packages/theme-grove/site/assets/generated/social-card.webp +0 -0
- package/packages/theme-grove/site/assets/generated/theme-mark-192.png +0 -0
- package/packages/theme-grove/site/assets/generated/theme-mark-512.png +0 -0
- package/packages/theme-grove/site/assets/generated/theme-mark.svg +7 -0
- package/packages/theme-grove/site/index.html +1429 -0
- package/packages/theme-grove/site/pages/contact.html +664 -0
- package/packages/theme-grove/site/pages/gallery.html +216 -0
- package/packages/theme-grove/site/pages/privacy.html +180 -0
- package/packages/theme-grove/site/pages/process.html +592 -0
- package/packages/theme-grove/site/pages/services.html +567 -0
- package/packages/theme-grove/site/pages/terms.html +189 -0
- package/packages/theme-grove/site/shared/footer.css +140 -0
- package/packages/theme-grove/site/shared/footer.html +41 -0
- package/packages/{theme-floors-site → theme-grove}/src/index.js +24 -35
- package/packages/theme-grove/src/node.js +69 -0
- package/packages/theme-grove/test/theme.test.mjs +47 -0
- package/packages/theme-harbor/README.md +11 -0
- package/packages/{theme-insurance-site → theme-harbor}/package.json +14 -11
- package/packages/theme-harbor/prebuild.json +23 -0
- package/packages/theme-harbor/site/assets/generated/favicon.svg +7 -0
- package/packages/theme-harbor/site/assets/generated/media-manifest.json +17 -0
- package/packages/theme-harbor/site/assets/generated/social-card.webp +0 -0
- package/packages/theme-harbor/site/assets/generated/theme-mark-192.png +0 -0
- package/packages/theme-harbor/site/assets/generated/theme-mark-512.png +0 -0
- package/packages/theme-harbor/site/assets/generated/theme-mark.svg +7 -0
- package/packages/theme-harbor/site/assets/index-D58RKkr-.js +239 -0
- package/packages/theme-harbor/site/assets/index-Dd3YN9Mf.css +1 -0
- package/packages/theme-harbor/site/index.html +15 -0
- package/packages/theme-harbor/src/index.js +76 -0
- package/packages/theme-harbor/src/node.js +69 -0
- package/packages/theme-harbor/test/theme.test.mjs +47 -0
- package/packages/theme-resolve/README.md +11 -0
- package/packages/theme-resolve/package.json +44 -0
- package/packages/theme-resolve/prebuild.json +23 -0
- package/packages/theme-resolve/site/assets/generated/favicon.svg +7 -0
- package/packages/theme-resolve/site/assets/generated/media-216610d365.webp +0 -0
- package/packages/theme-resolve/site/assets/generated/media-2a9e0f623f.webp +0 -0
- package/packages/theme-resolve/site/assets/generated/media-a70660bfa9.webp +0 -0
- package/packages/theme-resolve/site/assets/generated/media-bc1322e813.webp +0 -0
- package/packages/theme-resolve/site/assets/generated/media-ced60fcecc.webp +0 -0
- package/packages/theme-resolve/site/assets/generated/media-manifest.json +72 -0
- package/packages/theme-resolve/site/assets/generated/social-card.webp +0 -0
- package/packages/theme-resolve/site/assets/generated/theme-mark-192.png +0 -0
- package/packages/theme-resolve/site/assets/generated/theme-mark-512.png +0 -0
- package/packages/theme-resolve/site/assets/generated/theme-mark.svg +7 -0
- package/packages/theme-resolve/site/assets/index-BSaLpPG1.css +2 -0
- package/packages/theme-resolve/site/assets/index-D8au46Z5.js +17 -0
- package/packages/theme-resolve/site/index.html +22 -0
- package/packages/theme-resolve/src/index.js +69 -0
- package/packages/theme-resolve/src/node.js +69 -0
- package/packages/theme-resolve/test/theme.test.mjs +47 -0
- package/packages/theme-scenes/package.json +1 -1
- package/packages/theme-scenes/src/registry.js +32 -49
- package/packages/theme-summit/README.md +11 -0
- package/packages/{theme-shinshu-site → theme-summit}/package.json +14 -11
- package/packages/theme-summit/prebuild.json +23 -0
- package/packages/theme-summit/site/adventures.html +450 -0
- package/packages/theme-summit/site/assets/generated/favicon.svg +7 -0
- package/packages/theme-summit/site/assets/generated/media-1e958ea679.webp +0 -0
- package/packages/theme-summit/site/assets/generated/media-9d4521abba.webp +0 -0
- package/packages/theme-summit/site/assets/generated/media-manifest.json +39 -0
- package/packages/theme-summit/site/assets/generated/social-card.webp +0 -0
- package/packages/theme-summit/site/assets/generated/theme-mark-192.png +0 -0
- package/packages/theme-summit/site/assets/generated/theme-mark-512.png +0 -0
- package/packages/theme-summit/site/assets/generated/theme-mark.svg +7 -0
- package/packages/theme-summit/site/business-card.html +315 -0
- package/packages/theme-summit/site/chatbot.js +312 -0
- package/packages/theme-summit/site/gallery.html +524 -0
- package/packages/theme-summit/site/i18n.js +947 -0
- package/packages/theme-summit/site/icons.svg +87 -0
- package/packages/theme-summit/site/index.html +2415 -0
- package/packages/theme-summit/site/pages/about.html +100 -0
- package/packages/theme-summit/site/pages/contact.html +117 -0
- package/packages/theme-summit/site/pages/dashboard.html +111 -0
- package/packages/theme-summit/site/pages/index.html +129 -0
- package/packages/theme-summit/site/pages/services.html +125 -0
- package/packages/theme-summit/site/shared/footer.html +41 -0
- package/packages/theme-summit/site/shared/layout.js +315 -0
- package/packages/theme-summit/site/shared/nav.html +19 -0
- package/packages/theme-summit/site/shared/styles.css +696 -0
- package/packages/theme-summit/site/theme-styles.css +131 -0
- package/packages/theme-summit/site/themes.js +442 -0
- package/packages/{theme-shinshu-site → theme-summit}/src/index.js +23 -35
- package/packages/theme-summit/src/node.js +69 -0
- package/packages/theme-summit/test/theme.test.mjs +47 -0
- package/packages/theme-violet/README.md +11 -0
- package/packages/{theme-companions-site → theme-violet}/package.json +14 -11
- package/packages/theme-violet/prebuild.json +23 -0
- package/packages/theme-violet/site/assets/generated/favicon.svg +7 -0
- package/packages/theme-violet/site/assets/generated/media-07b46d6457.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-09d38ddffc.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-254b0e2ad3.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-3a1b5c0a8d.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-3a78eb7d9d.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-49076977d8.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-6342d50dbd.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-646c65381e.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-7a5fb7c91a.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-9bbd133220.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-9e73307c2a.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-af382146a0.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-b2ae348b43.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-b8f43a3887.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-c96a3e1979.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-cd07daa54a.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-e03ab6b5fe.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-eae4917d25.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-f227ec5690.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-fb57ffd474.webp +0 -0
- package/packages/theme-violet/site/assets/generated/media-manifest.json +245 -0
- package/packages/theme-violet/site/assets/generated/social-card.webp +0 -0
- package/packages/theme-violet/site/assets/generated/theme-mark-192.png +0 -0
- package/packages/theme-violet/site/assets/generated/theme-mark-512.png +0 -0
- package/packages/theme-violet/site/assets/generated/theme-mark.svg +7 -0
- package/packages/theme-violet/site/global/cpas-contact.css +405 -0
- package/packages/theme-violet/site/global/cpas-donate-v2.css +931 -0
- package/packages/theme-violet/site/global/cpas-drawer-override.css +1 -0
- package/packages/theme-violet/site/global/cpas-footer.html +38 -0
- package/packages/theme-violet/site/global/cpas-header.html +30 -0
- package/packages/theme-violet/site/global/cpas-hero-watercolor.css +275 -0
- package/packages/theme-violet/site/global/cpas-modals.js +802 -0
- package/packages/theme-violet/site/global/cpas-public-surface.css +982 -0
- package/packages/theme-violet/site/global/cpas-shell.css +3980 -0
- package/packages/theme-violet/site/global/cpas-shell.js +107 -0
- package/packages/theme-violet/site/global/cpas-shelter-hub.css +326 -0
- package/packages/theme-violet/site/index.html +141 -0
- package/packages/theme-violet/site/pages/about/campaigns.html +28 -0
- package/packages/theme-violet/site/pages/about/cta.html +25 -0
- package/packages/theme-violet/site/pages/about/hero.html +46 -0
- package/packages/theme-violet/site/pages/about/paths.html +24 -0
- package/packages/theme-violet/site/pages/about/why_we_exist.html +28 -0
- package/packages/theme-violet/site/pages/home/campaigns.html +67 -0
- package/packages/theme-violet/site/pages/home/hero.html +42 -0
- package/packages/theme-violet/site/pages/home/how-it-helps.html +32 -0
- package/packages/theme-violet/site/pages/home/impact-stats.html +31 -0
- package/packages/theme-violet/site/pages/home/mission.html +36 -0
- package/packages/theme-violet/site/pages/home/newsletter.html +29 -0
- package/packages/theme-violet/site/pages/home/transport-win.html +22 -0
- package/packages/theme-violet/site/pages/index.html +141 -0
- package/packages/theme-violet/src/index.js +76 -0
- package/packages/theme-violet/src/node.js +69 -0
- package/packages/theme-violet/test/theme.test.mjs +47 -0
- package/packages/work-graph/package.json +1 -1
- package/protocol/features/README.md +1 -1
- package/protocol/features/catalog.json +12 -12
- package/protocol/features/examples/provider-resend.feature.json +2 -2
- package/protocol/models/README.md +3 -0
- package/protocol/presets/catalog.json +1 -1
- package/protocol/receipts/agentsam.receipt.v1.json +95 -0
- package/protocol/theme-refinery/prebuild-registry.json +45 -0
- package/protocol/theme-refinery/product-metadata.schema.json +63 -26
- package/protocol/theme-refinery/receipts/prebuild-remaster-20261004.json +21 -0
- package/skills/README.md +3 -0
- package/src/acp/agent-executor.js +106 -0
- package/src/acp/client.js +316 -0
- package/src/acp/dependencies.js +426 -0
- package/src/acp/http.js +207 -0
- package/src/acp/index.js +22 -0
- package/src/acp/runs.js +125 -0
- package/src/acp/runtime-selection.js +180 -0
- package/src/cli/command-catalog.js +3 -0
- package/src/cli.js +24 -0
- package/src/commands/cloudflare-login.js +1 -1
- package/src/commands/cloudflare.js +2 -2
- package/src/commands/connections.js +1 -1
- package/src/commands/go.js +76 -6
- package/src/commands/merch.js +5 -0
- package/src/commands/mini.js +1 -1
- package/src/commands/receipts.js +140 -0
- package/src/commands/run.js +253 -0
- package/src/go/container.js +1 -1
- package/src/go/contract.js +61 -18
- package/src/go/discover.js +0 -4
- package/src/go/index.js +13 -1
- package/src/go/probe.js +109 -0
- package/src/go/{cloudflare.js → providers/cloudflare.js} +36 -136
- package/src/go/verify.js +1 -1
- package/src/indexing/ingest/inventory.js +1 -1
- package/src/lib/deploy/local-studio.js +2 -2
- package/src/lib/mini/scaffold.js +1 -1
- package/src/lib/whoami-capabilities.js +1 -1
- package/src/local/runtime-store.js +8 -0
- package/src/mcp/cloudflare-bundles.js +1 -1
- package/src/plugins/completeful.js +2 -2
- package/src/plugins/index.js +1 -0
- package/src/plugins/registry.js +59 -6
- package/src/receipts/contract.js +68 -0
- package/src/receipts/index.js +20 -0
- package/src/receipts/prune.js +64 -0
- package/src/receipts/sinks.js +285 -0
- package/templates/mini/gadget/app.js +15 -40
- package/templates/mini/gadget/index.html +7 -7
- package/templates/mini/shared/style.css +1 -1
- package/packages/theme-church-site/README.md +0 -10
- package/packages/theme-church-site/src/harvest.json +0 -16
- package/packages/theme-church-site/test/theme.test.mjs +0 -21
- package/packages/theme-companions-site/README.md +0 -10
- package/packages/theme-companions-site/src/harvest.json +0 -14
- package/packages/theme-companions-site/src/index.js +0 -87
- package/packages/theme-companions-site/test/theme.test.mjs +0 -21
- package/packages/theme-floors-site/README.md +0 -10
- package/packages/theme-floors-site/src/harvest.json +0 -16
- package/packages/theme-floors-site/test/theme.test.mjs +0 -21
- package/packages/theme-fuelnfree-site/README.md +0 -10
- package/packages/theme-fuelnfree-site/src/harvest.json +0 -15
- package/packages/theme-fuelnfree-site/test/theme.test.mjs +0 -21
- package/packages/theme-handyman-site/README.md +0 -10
- package/packages/theme-handyman-site/package.json +0 -41
- package/packages/theme-handyman-site/src/harvest.json +0 -12
- package/packages/theme-handyman-site/src/index.js +0 -88
- package/packages/theme-handyman-site/test/theme.test.mjs +0 -21
- package/packages/theme-insurance-site/README.md +0 -10
- package/packages/theme-insurance-site/src/harvest.json +0 -12
- package/packages/theme-insurance-site/src/index.js +0 -88
- package/packages/theme-insurance-site/test/theme.test.mjs +0 -21
- package/packages/theme-shinshu-site/README.md +0 -10
- package/packages/theme-shinshu-site/src/harvest.json +0 -14
- package/packages/theme-shinshu-site/test/theme.test.mjs +0 -21
- package/protocol/theme-refinery/lineage-registry.json +0 -105
- package/protocol/theme-refinery/receipts/products-registry-batch-20260924.json +0 -318
- package/protocol/theme-refinery/receipts/theme-harvest-20260924.json +0 -472
- /package/packages/connectors/{cloudflare → cfoa}/OAUTH_STORAGE_AUDIT.md +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/api-client.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/capabilities.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/credential.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/families/brand-protection.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/families/keyless.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/families/pages.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/families/scanner.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/families/snippets.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/families/tag-gateway.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/families/tags.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/families/token-validation.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/families/vectorize.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/families/workflows.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/index.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/oauth-persist.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/owner.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/permission-options.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/routes.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/scope-catalog.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/src/vault.js +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/tests/capabilities.test.mjs +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/tests/connector.test.mjs +0 -0
- /package/packages/connectors/{cloudflare → cfoa}/tests/oauth-persist.test.mjs +0 -0
- /package/packages/identity/src/oauth/{google-desktop-exchange.js → goaude.js} +0 -0
|
@@ -0,0 +1,947 @@
|
|
|
1
|
+
// Internationalization System for Summit Practice
|
|
2
|
+
// Supports: English, Japanese, Chinese (Simplified), Korean
|
|
3
|
+
|
|
4
|
+
const i18n = {
|
|
5
|
+
// Detect user's preferred language from browser/system
|
|
6
|
+
detectLanguage() {
|
|
7
|
+
// Check localStorage first (user preference)
|
|
8
|
+
const savedLang = localStorage.getItem('Summit_language');
|
|
9
|
+
if (savedLang && i18n.translations[savedLang]) {
|
|
10
|
+
return savedLang;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Check browser language
|
|
14
|
+
const browserLang = navigator.language || navigator.userLanguage;
|
|
15
|
+
const langCode = browserLang.split('-')[0].toLowerCase();
|
|
16
|
+
|
|
17
|
+
// Map common languages
|
|
18
|
+
const langMap = {
|
|
19
|
+
'ja': 'ja', // Japanese
|
|
20
|
+
'zh': 'zh', // Chinese
|
|
21
|
+
'ko': 'ko', // Korean
|
|
22
|
+
'en': 'en' // English (default)
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
return langMap[langCode] || 'en';
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
// Set language preference
|
|
29
|
+
setLanguage(langCode) {
|
|
30
|
+
if (i18n.translations[langCode]) {
|
|
31
|
+
localStorage.setItem('Summit_language', langCode);
|
|
32
|
+
i18n.currentLanguage = langCode;
|
|
33
|
+
document.documentElement.lang = langCode;
|
|
34
|
+
|
|
35
|
+
// Force update immediately - use requestAnimationFrame for smooth updates
|
|
36
|
+
if (document.readyState === 'loading') {
|
|
37
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
38
|
+
requestAnimationFrame(() => {
|
|
39
|
+
i18n.updatePageContent();
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
} else {
|
|
43
|
+
requestAnimationFrame(() => {
|
|
44
|
+
i18n.updatePageContent();
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return true;
|
|
49
|
+
} else {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
// Get translation
|
|
55
|
+
t(key, params = {}) {
|
|
56
|
+
if (!key) return '';
|
|
57
|
+
|
|
58
|
+
const keys = key.split('.');
|
|
59
|
+
let value = i18n.translations[i18n.currentLanguage];
|
|
60
|
+
|
|
61
|
+
// Navigate through nested object
|
|
62
|
+
for (const k of keys) {
|
|
63
|
+
if (value && typeof value === 'object') {
|
|
64
|
+
value = value[k];
|
|
65
|
+
} else {
|
|
66
|
+
value = undefined;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Fallback to English if translation not found
|
|
72
|
+
if (!value || (typeof value !== 'string' && typeof value !== 'number')) {
|
|
73
|
+
value = i18n.translations.en;
|
|
74
|
+
for (const k of keys) {
|
|
75
|
+
if (value && typeof value === 'object') {
|
|
76
|
+
value = value[k];
|
|
77
|
+
} else {
|
|
78
|
+
value = undefined;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// If still no value, return the key (for debugging)
|
|
85
|
+
if (!value) {
|
|
86
|
+
return key;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Replace parameters
|
|
90
|
+
if (typeof value === 'string' && params) {
|
|
91
|
+
return value.replace(/\{\{(\w+)\}\}/g, (match, param) => {
|
|
92
|
+
return params[param] || match;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return value;
|
|
97
|
+
},
|
|
98
|
+
|
|
99
|
+
// Update all page content
|
|
100
|
+
updatePageContent() {
|
|
101
|
+
// Update all elements with data-i18n attribute
|
|
102
|
+
const elements = document.querySelectorAll('[data-i18n]');
|
|
103
|
+
|
|
104
|
+
elements.forEach(el => {
|
|
105
|
+
const key = el.getAttribute('data-i18n');
|
|
106
|
+
if (!key) return;
|
|
107
|
+
|
|
108
|
+
const translation = i18n.t(key);
|
|
109
|
+
|
|
110
|
+
if (!translation || translation === key) {
|
|
111
|
+
return; // Skip if no translation found
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
try {
|
|
115
|
+
if (el.tagName === 'INPUT' || el.tagName === 'TEXTAREA') {
|
|
116
|
+
if (el.hasAttribute('data-i18n-placeholder')) {
|
|
117
|
+
const placeholderKey = el.getAttribute('data-i18n-placeholder');
|
|
118
|
+
el.placeholder = i18n.t(placeholderKey);
|
|
119
|
+
} else {
|
|
120
|
+
el.value = translation;
|
|
121
|
+
}
|
|
122
|
+
} else if (el.hasAttribute('data-i18n-html')) {
|
|
123
|
+
// Allow HTML content
|
|
124
|
+
el.innerHTML = translation;
|
|
125
|
+
} else if (el.tagName === 'LABEL') {
|
|
126
|
+
el.textContent = translation;
|
|
127
|
+
} else if (el.tagName === 'BUTTON') {
|
|
128
|
+
el.textContent = translation;
|
|
129
|
+
} else {
|
|
130
|
+
el.textContent = translation;
|
|
131
|
+
}
|
|
132
|
+
} catch (error) {
|
|
133
|
+
// Silently fail for individual elements
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
// Update placeholders separately
|
|
138
|
+
document.querySelectorAll('[data-i18n-placeholder]').forEach(el => {
|
|
139
|
+
const key = el.getAttribute('data-i18n-placeholder');
|
|
140
|
+
const translation = i18n.t(key);
|
|
141
|
+
if (translation && translation !== key) {
|
|
142
|
+
el.placeholder = translation;
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// Update page title
|
|
147
|
+
document.title = i18n.t('meta.title');
|
|
148
|
+
|
|
149
|
+
// Update meta description
|
|
150
|
+
const metaDesc = document.querySelector('meta[name="description"]');
|
|
151
|
+
if (metaDesc) {
|
|
152
|
+
metaDesc.content = i18n.t('meta.description');
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Update hero title with special handling
|
|
156
|
+
const heroPrefix = document.querySelector('[data-i18n="hero.title.prefix"]');
|
|
157
|
+
const heroHighlight = document.querySelector('[data-i18n="hero.titleHighlight"]');
|
|
158
|
+
const heroSuffix = document.querySelector('[data-i18n="hero.title.suffix"]');
|
|
159
|
+
|
|
160
|
+
if (heroPrefix) {
|
|
161
|
+
const prefixText = i18n.t('hero.title.prefix');
|
|
162
|
+
if (prefixText && prefixText !== 'hero.title.prefix') {
|
|
163
|
+
heroPrefix.textContent = prefixText;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if (heroHighlight) {
|
|
167
|
+
const highlightText = i18n.t('hero.titleHighlight');
|
|
168
|
+
if (highlightText && highlightText !== 'hero.titleHighlight') {
|
|
169
|
+
heroHighlight.textContent = highlightText;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (heroSuffix) {
|
|
173
|
+
const suffixText = i18n.t('hero.title.suffix');
|
|
174
|
+
if (suffixText && suffixText !== 'hero.title.suffix') {
|
|
175
|
+
heroSuffix.textContent = suffixText;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Update lists (qualifications, service areas, etc.)
|
|
180
|
+
this.updateLists();
|
|
181
|
+
},
|
|
182
|
+
|
|
183
|
+
// Update list items
|
|
184
|
+
updateLists() {
|
|
185
|
+
// Qualifications list
|
|
186
|
+
const qualList = document.querySelector('[data-i18n-list="about.qualifications"]');
|
|
187
|
+
if (qualList) {
|
|
188
|
+
const items = [
|
|
189
|
+
i18n.t('about.qual1'),
|
|
190
|
+
i18n.t('about.qual2'),
|
|
191
|
+
i18n.t('about.qual3'),
|
|
192
|
+
i18n.t('about.qual4'),
|
|
193
|
+
i18n.t('about.qual5'),
|
|
194
|
+
i18n.t('about.qual6'),
|
|
195
|
+
i18n.t('about.qual7')
|
|
196
|
+
];
|
|
197
|
+
qualList.innerHTML = items.map(item => `<li>${item}</li>`).join('');
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// Service areas list
|
|
201
|
+
const areasList = document.querySelector('[data-i18n-list="about.serviceAreas"]');
|
|
202
|
+
if (areasList) {
|
|
203
|
+
const items = [
|
|
204
|
+
i18n.t('about.area1'),
|
|
205
|
+
i18n.t('about.area2'),
|
|
206
|
+
i18n.t('about.area3'),
|
|
207
|
+
i18n.t('about.area4'),
|
|
208
|
+
i18n.t('about.area5'),
|
|
209
|
+
i18n.t('about.area6')
|
|
210
|
+
];
|
|
211
|
+
areasList.innerHTML = items.map(item => `<li>${item}</li>`).join('');
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// Service features lists
|
|
215
|
+
document.querySelectorAll('[data-i18n-features]').forEach(list => {
|
|
216
|
+
const serviceType = list.getAttribute('data-i18n-features');
|
|
217
|
+
const features = [
|
|
218
|
+
i18n.t(`servicesPage.${serviceType}.feature1`),
|
|
219
|
+
i18n.t(`servicesPage.${serviceType}.feature2`),
|
|
220
|
+
i18n.t(`servicesPage.${serviceType}.feature3`),
|
|
221
|
+
i18n.t(`servicesPage.${serviceType}.feature4`),
|
|
222
|
+
i18n.t(`servicesPage.${serviceType}.feature5`),
|
|
223
|
+
i18n.t(`servicesPage.${serviceType}.feature6`)
|
|
224
|
+
];
|
|
225
|
+
list.innerHTML = features.map(f => `<li>${f}</li>`).join('');
|
|
226
|
+
});
|
|
227
|
+
},
|
|
228
|
+
|
|
229
|
+
currentLanguage: 'en',
|
|
230
|
+
|
|
231
|
+
translations: {
|
|
232
|
+
en: {
|
|
233
|
+
meta: {
|
|
234
|
+
title: 'Summit Practice - Opening Alpine Region to the World',
|
|
235
|
+
description: 'Expert bilingual support for foreign real estate investors in Alpine Region, Japan'
|
|
236
|
+
},
|
|
237
|
+
nav: {
|
|
238
|
+
home: 'Home',
|
|
239
|
+
about: 'About',
|
|
240
|
+
services: 'Services',
|
|
241
|
+
contact: 'Contact',
|
|
242
|
+
dashboard: 'Dashboard',
|
|
243
|
+
language: 'Language',
|
|
244
|
+
tagline: 'Opening Alpine Region to the World'
|
|
245
|
+
},
|
|
246
|
+
hero: {
|
|
247
|
+
title: {
|
|
248
|
+
prefix: 'Navigating',
|
|
249
|
+
highlight: 'Real Estate Investment',
|
|
250
|
+
suffix: 'in Japan'
|
|
251
|
+
},
|
|
252
|
+
titleHighlight: 'Real Estate Investment',
|
|
253
|
+
subtitle: 'Expert bilingual support for foreign investors in Alpine Region\'s stunning Summit region. We bridge language and cultural gaps to help you successfully manage property investments in Japan\'s world-class ski resort areas.',
|
|
254
|
+
cta: 'Get in Touch',
|
|
255
|
+
stats: {
|
|
256
|
+
experience: 'Years Experience',
|
|
257
|
+
certified: 'JLPT Certified',
|
|
258
|
+
bilingual: 'Bilingual'
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
services: {
|
|
262
|
+
title: 'Why Summit Practice?',
|
|
263
|
+
subtitle: 'Your trusted local partner for real estate success in Alpine Region, Japan',
|
|
264
|
+
translation: {
|
|
265
|
+
title: 'Translation & Interpretation',
|
|
266
|
+
desc: 'Professional Japanese-English translation for property discussions, contractor meetings, site visits, and documents.'
|
|
267
|
+
},
|
|
268
|
+
liaison: {
|
|
269
|
+
title: 'Client Liaison Services',
|
|
270
|
+
desc: 'Support for Japanese businesses handling foreign clients, ensuring smooth communication and expectation alignment.'
|
|
271
|
+
},
|
|
272
|
+
coordination: {
|
|
273
|
+
title: 'Introductions & Coordination',
|
|
274
|
+
desc: 'Connect with trusted local realtors and contractors. Complete coordination support throughout your project.'
|
|
275
|
+
},
|
|
276
|
+
project: {
|
|
277
|
+
title: 'Project Support',
|
|
278
|
+
desc: 'Renovation and improvement project coordination, schedule tracking, budget management, and on-site check-ins.'
|
|
279
|
+
},
|
|
280
|
+
management: {
|
|
281
|
+
title: 'Property Management',
|
|
282
|
+
desc: 'Routine property checks, keyholding services, and repair coordination for absentee owners.'
|
|
283
|
+
},
|
|
284
|
+
cultural: {
|
|
285
|
+
title: 'Cultural Bridge',
|
|
286
|
+
desc: 'Navigate the cultural expectations that often lead to missed deadlines and budget overruns.'
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
chatbot: {
|
|
290
|
+
title: 'How can I help?',
|
|
291
|
+
placeholder: 'Ask about our services, properties, or get assistance...',
|
|
292
|
+
send: 'Send',
|
|
293
|
+
typing: 'Typing...',
|
|
294
|
+
error: 'Sorry, I encountered an error. Please try again.',
|
|
295
|
+
suggestions: [
|
|
296
|
+
'Tell me about your services',
|
|
297
|
+
'How do I get started?',
|
|
298
|
+
'What areas do you serve?',
|
|
299
|
+
'Contact information'
|
|
300
|
+
]
|
|
301
|
+
},
|
|
302
|
+
dashboard: {
|
|
303
|
+
title: 'Business Dashboard',
|
|
304
|
+
subtitle: 'Manage your clients, properties, and projects',
|
|
305
|
+
clients: 'Total Clients',
|
|
306
|
+
properties: 'Properties',
|
|
307
|
+
projects: 'Active Projects',
|
|
308
|
+
recentClients: 'Recent Clients',
|
|
309
|
+
recentProjects: 'Recent Projects',
|
|
310
|
+
noData: 'No data available'
|
|
311
|
+
},
|
|
312
|
+
about: {
|
|
313
|
+
title: 'About Alex Rowan',
|
|
314
|
+
subtitle: 'Your local expert with deep roots in Alpine Region',
|
|
315
|
+
intro1: 'Summit Practice is a Alpine Region-based bilingual consulting service operated by Alex Rowan, specializing in supporting foreign real estate investors and Japanese construction firms. I help international clients navigate the practical realities of buying, renovating, and maintaining property in Japan.',
|
|
316
|
+
intro2: 'My service area is centered on the world-class ski resort Nozawa Onsen, which was featured on the cover of Condé Nast Traveler as one of the world\'s top 9 ski resorts for the 2026 season. I also work in the surrounding region including Iiyama, Shinano, Myoko, Karuizawa, and nearby resort areas.',
|
|
317
|
+
intro3: 'I relocated to Alpine Region Prefecture after earning my Master\'s Degree in Anthropology in 2015. Since then, I have amassed wide-ranging professional experience in Alpine Region across both the public and private sectors. I worked as an English teacher on the JET Program, serving two years as President of Alpine Region AJET.',
|
|
318
|
+
intro4: 'From 2020 to 2021, I was employed by Tomi City on ecotourism development at the Tomi Tourism Association, where I became the first non-Japanese Town Development Officer in Alpine Region Prefecture. More recently, I worked in the Japanese mushroom industry, handling marketing and international client management for a Alpine Region-based export firm.',
|
|
319
|
+
qualifications: 'Qualifications & Experience',
|
|
320
|
+
qual1: 'JLPT N1 Certification (Highest Level of Japanese Fluency)',
|
|
321
|
+
qual2: '5+ Years Technical Japanese-English Translation & Interpretation',
|
|
322
|
+
qual3: 'Master\'s Degree in Anthropology',
|
|
323
|
+
qual4: 'First Non-Japanese Town Development Officer in Alpine Region Prefecture',
|
|
324
|
+
qual5: 'President of Alpine Region AJET (2 Years)',
|
|
325
|
+
qual6: 'Deep Construction Industry Connections Through Family Ties',
|
|
326
|
+
qual7: 'Export Industry Experience in International Client Management',
|
|
327
|
+
serviceAreas: 'Service Areas',
|
|
328
|
+
area1: 'Nozawa Onsen (Primary Focus)',
|
|
329
|
+
area2: 'Iiyama',
|
|
330
|
+
area3: 'Shinano',
|
|
331
|
+
area4: 'Myoko',
|
|
332
|
+
area5: 'Karuizawa',
|
|
333
|
+
area6: 'Komoro Region'
|
|
334
|
+
},
|
|
335
|
+
servicesPage: {
|
|
336
|
+
title: 'Our Services',
|
|
337
|
+
subtitle: 'Comprehensive support for your real estate journey in Japan',
|
|
338
|
+
translation: {
|
|
339
|
+
title: 'Translation & Interpretation',
|
|
340
|
+
desc: 'Professional Japanese-English translation and interpretation services for all aspects of your property investment.',
|
|
341
|
+
feature1: 'Property discussion translation',
|
|
342
|
+
feature2: 'Contractor meeting interpretation',
|
|
343
|
+
feature3: 'Site visit coordination',
|
|
344
|
+
feature4: 'Document translation',
|
|
345
|
+
feature5: 'Legal document review',
|
|
346
|
+
feature6: 'Contract negotiation support'
|
|
347
|
+
},
|
|
348
|
+
liaison: {
|
|
349
|
+
title: 'Client Liaison for Japanese Businesses',
|
|
350
|
+
desc: 'Support for Japanese companies handling foreign clients, ensuring smooth communication and cultural alignment.',
|
|
351
|
+
feature1: 'Expectation alignment',
|
|
352
|
+
feature2: 'Communication flow management',
|
|
353
|
+
feature3: 'Cultural consultation',
|
|
354
|
+
feature4: 'Foreign client support',
|
|
355
|
+
feature5: 'Business practice guidance',
|
|
356
|
+
feature6: 'Ongoing relationship management'
|
|
357
|
+
},
|
|
358
|
+
coordination: {
|
|
359
|
+
title: 'Introductions & Coordination',
|
|
360
|
+
desc: 'Connect with trusted local professionals and ensure seamless project coordination.',
|
|
361
|
+
feature1: 'Realtor introductions',
|
|
362
|
+
feature2: 'Contractor recommendations',
|
|
363
|
+
feature3: 'Local government liaison',
|
|
364
|
+
feature4: 'Service provider network',
|
|
365
|
+
feature5: 'Project coordination',
|
|
366
|
+
feature6: 'Stakeholder management'
|
|
367
|
+
},
|
|
368
|
+
project: {
|
|
369
|
+
title: 'Renovation / Project Support',
|
|
370
|
+
desc: 'Comprehensive support for renovation and improvement projects from planning to completion.',
|
|
371
|
+
feature1: 'Contractor coordination',
|
|
372
|
+
feature2: 'Schedule tracking',
|
|
373
|
+
feature3: 'Budget management',
|
|
374
|
+
feature4: 'On-site check-ins',
|
|
375
|
+
feature5: 'Issue resolution',
|
|
376
|
+
feature6: 'Quality assurance'
|
|
377
|
+
},
|
|
378
|
+
management: {
|
|
379
|
+
title: 'Property Care & Management',
|
|
380
|
+
desc: 'Reliable property management services for absentee owners.',
|
|
381
|
+
feature1: 'Routine property checks',
|
|
382
|
+
feature2: 'Keyholding services',
|
|
383
|
+
feature3: 'Repair coordination',
|
|
384
|
+
feature4: 'Maintenance scheduling',
|
|
385
|
+
feature5: 'Emergency response',
|
|
386
|
+
feature6: 'Seasonal preparation'
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
contact: {
|
|
390
|
+
title: 'Get in Touch',
|
|
391
|
+
subtitle: 'Ready to start your real estate journey in Alpine Region?',
|
|
392
|
+
email: 'Email',
|
|
393
|
+
phone: 'Phone',
|
|
394
|
+
location: 'Location',
|
|
395
|
+
serviceAreas: 'Service Areas',
|
|
396
|
+
serviceAreasList: 'Nozawa Onsen, Iiyama, Shinano, Myoko, Karuizawa',
|
|
397
|
+
name: 'Name',
|
|
398
|
+
emailPlaceholder: 'your.email@example.com',
|
|
399
|
+
subject: 'Subject',
|
|
400
|
+
message: 'Message',
|
|
401
|
+
send: 'Send Message'
|
|
402
|
+
}
|
|
403
|
+
},
|
|
404
|
+
ja: {
|
|
405
|
+
meta: {
|
|
406
|
+
title: '信州ソリューションズ - 長野を世界に開く',
|
|
407
|
+
description: '長野県の外国人不動産投資家向け専門バイリンガルサポート'
|
|
408
|
+
},
|
|
409
|
+
nav: {
|
|
410
|
+
home: 'ホーム',
|
|
411
|
+
about: 'について',
|
|
412
|
+
services: 'サービス',
|
|
413
|
+
contact: 'お問い合わせ',
|
|
414
|
+
dashboard: 'ダッシュボード',
|
|
415
|
+
language: '言語',
|
|
416
|
+
tagline: '長野を世界に開く'
|
|
417
|
+
},
|
|
418
|
+
hero: {
|
|
419
|
+
title: {
|
|
420
|
+
prefix: '日本の',
|
|
421
|
+
highlight: '不動産投資',
|
|
422
|
+
suffix: 'をナビゲート'
|
|
423
|
+
},
|
|
424
|
+
titleHighlight: '不動産投資',
|
|
425
|
+
subtitle: '長野県の美しい信州地域で外国人投資家向けの専門バイリンガルサポート。言語と文化のギャップを埋め、日本の世界クラスのスキーリゾートエリアでの不動産投資の成功をサポートします。',
|
|
426
|
+
cta: 'お問い合わせ',
|
|
427
|
+
stats: {
|
|
428
|
+
experience: '年の経験',
|
|
429
|
+
certified: '日本語能力試験N1認定',
|
|
430
|
+
bilingual: 'バイリンガル'
|
|
431
|
+
}
|
|
432
|
+
},
|
|
433
|
+
services: {
|
|
434
|
+
title: 'なぜ信州ソリューションズ?',
|
|
435
|
+
subtitle: '長野県での不動産成功のための信頼できる現地パートナー',
|
|
436
|
+
translation: {
|
|
437
|
+
title: '翻訳・通訳',
|
|
438
|
+
desc: '不動産の議論、請負業者との会議、現場訪問、書類のための専門的な日英翻訳。'
|
|
439
|
+
},
|
|
440
|
+
liaison: {
|
|
441
|
+
title: 'クライアント連絡サービス',
|
|
442
|
+
desc: '外国人クライアントを扱う日本企業のサポート、スムーズなコミュニケーションと期待値の調整を確保。'
|
|
443
|
+
},
|
|
444
|
+
coordination: {
|
|
445
|
+
title: '紹介・調整',
|
|
446
|
+
desc: '信頼できる現地の不動産業者や請負業者とのつながり。プロジェクト全体を通じた完全な調整サポート。'
|
|
447
|
+
},
|
|
448
|
+
project: {
|
|
449
|
+
title: 'プロジェクトサポート',
|
|
450
|
+
desc: '改築・改善プロジェクトの調整、スケジュール追跡、予算管理、現場チェックイン。'
|
|
451
|
+
},
|
|
452
|
+
management: {
|
|
453
|
+
title: '不動産管理',
|
|
454
|
+
desc: '定期的な不動産チェック、鍵の保管サービス、不在所有者向けの修理調整。'
|
|
455
|
+
},
|
|
456
|
+
cultural: {
|
|
457
|
+
title: '文化的架け橋',
|
|
458
|
+
desc: '期限の遅れや予算超過につながることが多い文化的期待をナビゲート。'
|
|
459
|
+
}
|
|
460
|
+
},
|
|
461
|
+
chatbot: {
|
|
462
|
+
title: 'どのようにお手伝いできますか?',
|
|
463
|
+
placeholder: 'サービス、物件について質問するか、サポートを受ける...',
|
|
464
|
+
send: '送信',
|
|
465
|
+
typing: '入力中...',
|
|
466
|
+
error: '申し訳ございません。エラーが発生しました。もう一度お試しください。',
|
|
467
|
+
suggestions: [
|
|
468
|
+
'サービスについて教えてください',
|
|
469
|
+
'始めるにはどうすればいいですか?',
|
|
470
|
+
'どの地域をカバーしていますか?',
|
|
471
|
+
'連絡先情報'
|
|
472
|
+
]
|
|
473
|
+
},
|
|
474
|
+
dashboard: {
|
|
475
|
+
title: 'ビジネスダッシュボード',
|
|
476
|
+
subtitle: 'クライアント、物件、プロジェクトを管理',
|
|
477
|
+
clients: '総クライアント数',
|
|
478
|
+
properties: '物件',
|
|
479
|
+
projects: 'アクティブなプロジェクト',
|
|
480
|
+
recentClients: '最近のクライアント',
|
|
481
|
+
recentProjects: '最近のプロジェクト',
|
|
482
|
+
noData: 'データがありません'
|
|
483
|
+
},
|
|
484
|
+
about: {
|
|
485
|
+
title: 'ジェイク・ワークについて',
|
|
486
|
+
subtitle: '長野に深いルーツを持つ現地の専門家',
|
|
487
|
+
intro1: '信州ソリューションズは、ジェイク・ワークが運営する長野県を拠点とするバイリンガルコンサルティングサービスで、外国人不動産投資家と日本の建設会社をサポートすることに特化しています。国際的なクライアントが日本で不動産を購入、改築、維持する際の実践的な現実をナビゲートするお手伝いをします。',
|
|
488
|
+
intro2: '私のサービスエリアは、2026シーズンの世界トップ9スキーリゾートの1つとしてコンデナストトラベラーの表紙に掲載された世界クラスのスキーリゾート野沢温泉を中心としています。飯山、信濃、妙高、軽井沢、および近隣のリゾートエリアでも活動しています。',
|
|
489
|
+
intro3: '2015年に人類学の修士号を取得した後、長野県に移住しました。それ以来、公共部門と民間部門の両方で長野県における幅広い専門的な経験を積んできました。JETプログラムで英語教師として働き、2年間長野AJETの会長を務めました。',
|
|
490
|
+
intro4: '2020年から2021年まで、私は戸美市の戸美観光協会でエコツーリズム開発に従事し、長野県で初の非日本人町づくり担当者になりました。最近では、長野県を拠点とする輸出会社でマーケティングと国際的なクライアント管理を担当し、日本のきのこ産業で働いていました。',
|
|
491
|
+
qualifications: '資格と経験',
|
|
492
|
+
qual1: '日本語能力試験N1認定(最高レベルの日本語能力)',
|
|
493
|
+
qual2: '5年以上の技術的な日英翻訳・通訳',
|
|
494
|
+
qual3: '人類学の修士号',
|
|
495
|
+
qual4: '長野県初の非日本人町づくり担当者',
|
|
496
|
+
qual5: '長野AJET会長(2年間)',
|
|
497
|
+
qual6: '家族関係を通じた建設業界との深いつながり',
|
|
498
|
+
qual7: '国際的なクライアント管理における輸出業界の経験',
|
|
499
|
+
serviceAreas: 'サービスエリア',
|
|
500
|
+
area1: '野沢温泉(主要焦点)',
|
|
501
|
+
area2: '飯山',
|
|
502
|
+
area3: '信濃',
|
|
503
|
+
area4: '妙高',
|
|
504
|
+
area5: '軽井沢',
|
|
505
|
+
area6: '小諸地域'
|
|
506
|
+
},
|
|
507
|
+
servicesPage: {
|
|
508
|
+
title: '私たちのサービス',
|
|
509
|
+
subtitle: '日本での不動産の旅を包括的にサポート',
|
|
510
|
+
translation: {
|
|
511
|
+
title: '翻訳・通訳',
|
|
512
|
+
desc: '不動産投資のあらゆる側面における専門的な日英翻訳・通訳サービス。',
|
|
513
|
+
feature1: '不動産の議論の翻訳',
|
|
514
|
+
feature2: '請負業者との会議の通訳',
|
|
515
|
+
feature3: '現場訪問の調整',
|
|
516
|
+
feature4: '書類の翻訳',
|
|
517
|
+
feature5: '法的文書のレビュー',
|
|
518
|
+
feature6: '契約交渉のサポート'
|
|
519
|
+
},
|
|
520
|
+
liaison: {
|
|
521
|
+
title: '日本企業向けクライアント連絡',
|
|
522
|
+
desc: '外国人クライアントを扱う日本企業のサポート、スムーズなコミュニケーションと文化的調整を確保。',
|
|
523
|
+
feature1: '期待値の調整',
|
|
524
|
+
feature2: 'コミュニケーションフローの管理',
|
|
525
|
+
feature3: '文化的コンサルティング',
|
|
526
|
+
feature4: '外国人クライアントのサポート',
|
|
527
|
+
feature5: 'ビジネス慣行のガイダンス',
|
|
528
|
+
feature6: '継続的な関係管理'
|
|
529
|
+
},
|
|
530
|
+
coordination: {
|
|
531
|
+
title: '紹介・調整',
|
|
532
|
+
desc: '信頼できる現地の専門家とつながり、シームレスなプロジェクト調整を確保。',
|
|
533
|
+
feature1: '不動産業者の紹介',
|
|
534
|
+
feature2: '請負業者の推奨',
|
|
535
|
+
feature3: '地方自治体との連絡',
|
|
536
|
+
feature4: 'サービスプロバイダーネットワーク',
|
|
537
|
+
feature5: 'プロジェクト調整',
|
|
538
|
+
feature6: 'ステークホルダー管理'
|
|
539
|
+
},
|
|
540
|
+
project: {
|
|
541
|
+
title: '改築・プロジェクトサポート',
|
|
542
|
+
desc: '計画から完成まで、改築および改善プロジェクトの包括的なサポート。',
|
|
543
|
+
feature1: '請負業者の調整',
|
|
544
|
+
feature2: 'スケジュール追跡',
|
|
545
|
+
feature3: '予算管理',
|
|
546
|
+
feature4: '現場チェックイン',
|
|
547
|
+
feature5: '問題解決',
|
|
548
|
+
feature6: '品質保証'
|
|
549
|
+
},
|
|
550
|
+
management: {
|
|
551
|
+
title: '不動産ケア・管理',
|
|
552
|
+
desc: '不在所有者向けの信頼できる不動産管理サービス。',
|
|
553
|
+
feature1: '定期的な不動産チェック',
|
|
554
|
+
feature2: '鍵の保管サービス',
|
|
555
|
+
feature3: '修理の調整',
|
|
556
|
+
feature4: 'メンテナンススケジュール',
|
|
557
|
+
feature5: '緊急対応',
|
|
558
|
+
feature6: '季節の準備'
|
|
559
|
+
}
|
|
560
|
+
},
|
|
561
|
+
contact: {
|
|
562
|
+
title: 'お問い合わせ',
|
|
563
|
+
subtitle: '長野での不動産の旅を始める準備はできていますか?',
|
|
564
|
+
email: 'メール',
|
|
565
|
+
phone: '電話',
|
|
566
|
+
location: '所在地',
|
|
567
|
+
serviceAreas: 'サービスエリア',
|
|
568
|
+
serviceAreasList: '野沢温泉、飯山、信濃、妙高、軽井沢',
|
|
569
|
+
name: 'お名前',
|
|
570
|
+
emailPlaceholder: 'your.email@example.com',
|
|
571
|
+
subject: '件名',
|
|
572
|
+
message: 'メッセージ',
|
|
573
|
+
send: 'メッセージを送信'
|
|
574
|
+
}
|
|
575
|
+
},
|
|
576
|
+
zh: {
|
|
577
|
+
meta: {
|
|
578
|
+
title: '信州解决方案 - 向世界开放长野',
|
|
579
|
+
description: '为长野县外国房地产投资者提供专业双语支持'
|
|
580
|
+
},
|
|
581
|
+
nav: {
|
|
582
|
+
home: '首页',
|
|
583
|
+
about: '关于',
|
|
584
|
+
services: '服务',
|
|
585
|
+
contact: '联系',
|
|
586
|
+
dashboard: '仪表板',
|
|
587
|
+
language: '语言',
|
|
588
|
+
tagline: '向世界开放长野'
|
|
589
|
+
},
|
|
590
|
+
hero: {
|
|
591
|
+
title: {
|
|
592
|
+
prefix: '导航',
|
|
593
|
+
highlight: '房地产投资',
|
|
594
|
+
suffix: '在日本'
|
|
595
|
+
},
|
|
596
|
+
titleHighlight: '房地产投资',
|
|
597
|
+
subtitle: '为长野县美丽信州地区的外国投资者提供专业双语支持。我们弥合语言和文化差距,帮助您成功管理日本世界级滑雪胜地地区的房地产投资。',
|
|
598
|
+
cta: '联系我们',
|
|
599
|
+
stats: {
|
|
600
|
+
experience: '年经验',
|
|
601
|
+
certified: '日语能力测试N1认证',
|
|
602
|
+
bilingual: '双语'
|
|
603
|
+
}
|
|
604
|
+
},
|
|
605
|
+
services: {
|
|
606
|
+
title: '为什么选择信州解决方案?',
|
|
607
|
+
subtitle: '您在长野房地产成功的值得信赖的本地合作伙伴',
|
|
608
|
+
translation: {
|
|
609
|
+
title: '翻译与口译',
|
|
610
|
+
desc: '为房地产讨论、承包商会议、现场访问和文件提供专业的日英翻译。'
|
|
611
|
+
},
|
|
612
|
+
liaison: {
|
|
613
|
+
title: '客户联络服务',
|
|
614
|
+
desc: '支持处理外国客户的日本企业,确保顺畅沟通和期望对齐。'
|
|
615
|
+
},
|
|
616
|
+
coordination: {
|
|
617
|
+
title: '介绍与协调',
|
|
618
|
+
desc: '与值得信赖的本地房地产经纪人和承包商建立联系。在整个项目中提供完整的协调支持。'
|
|
619
|
+
},
|
|
620
|
+
project: {
|
|
621
|
+
title: '项目支持',
|
|
622
|
+
desc: '翻新和改进项目协调、进度跟踪、预算管理和现场检查。'
|
|
623
|
+
},
|
|
624
|
+
management: {
|
|
625
|
+
title: '物业管理',
|
|
626
|
+
desc: '定期物业检查、钥匙保管服务和为缺席业主提供维修协调。'
|
|
627
|
+
},
|
|
628
|
+
cultural: {
|
|
629
|
+
title: '文化桥梁',
|
|
630
|
+
desc: '导航经常导致错过截止日期和预算超支的文化期望。'
|
|
631
|
+
}
|
|
632
|
+
},
|
|
633
|
+
chatbot: {
|
|
634
|
+
title: '我能如何帮助您?',
|
|
635
|
+
placeholder: '询问我们的服务、物业或获得帮助...',
|
|
636
|
+
send: '发送',
|
|
637
|
+
typing: '正在输入...',
|
|
638
|
+
error: '抱歉,我遇到了错误。请重试。',
|
|
639
|
+
suggestions: [
|
|
640
|
+
'告诉我您的服务',
|
|
641
|
+
'如何开始?',
|
|
642
|
+
'您服务哪些地区?',
|
|
643
|
+
'联系信息'
|
|
644
|
+
]
|
|
645
|
+
},
|
|
646
|
+
dashboard: {
|
|
647
|
+
title: '业务仪表板',
|
|
648
|
+
subtitle: '管理您的客户、物业和项目',
|
|
649
|
+
clients: '总客户数',
|
|
650
|
+
properties: '物业',
|
|
651
|
+
projects: '活跃项目',
|
|
652
|
+
recentClients: '最近客户',
|
|
653
|
+
recentProjects: '最近项目',
|
|
654
|
+
noData: '无可用数据'
|
|
655
|
+
},
|
|
656
|
+
about: {
|
|
657
|
+
title: '关于杰克·瓦尔克',
|
|
658
|
+
subtitle: '您在长野的本地专家,在当地有深厚根基',
|
|
659
|
+
intro1: '信州解决方案是由杰克·瓦尔克运营的位于长野的双语咨询服务,专门支持外国房地产投资者和日本建筑公司。我帮助国际客户应对在日本购买、翻新和维护房产的实际挑战。',
|
|
660
|
+
intro2: '我的服务区域以世界级滑雪胜地野泽温泉为中心,该地区被《康泰纳仕旅行者》杂志评为2026年世界前9大滑雪胜地之一。我还在周边地区工作,包括饭山、信浓、妙高、轻井泽和附近的度假区。',
|
|
661
|
+
intro3: '我在2015年获得人类学硕士学位后移居长野县。从那时起,我在长野的公共和私营部门积累了广泛的职业经验。我曾在JET项目中担任英语教师,并担任长野AJET主席两年。',
|
|
662
|
+
intro4: '从2020年到2021年,我在户美市户美旅游协会从事生态旅游开发工作,成为长野县第一位非日本籍城镇发展官员。最近,我在日本蘑菇行业工作,为一家长野出口公司处理营销和国际客户管理。',
|
|
663
|
+
qualifications: '资格与经验',
|
|
664
|
+
qual1: 'JLPT N1认证(最高级别日语能力)',
|
|
665
|
+
qual2: '5年以上技术日英翻译与口译',
|
|
666
|
+
qual3: '人类学硕士学位',
|
|
667
|
+
qual4: '长野县第一位非日本籍城镇发展官员',
|
|
668
|
+
qual5: '长野AJET主席(2年)',
|
|
669
|
+
qual6: '通过家庭关系与建筑行业的深厚联系',
|
|
670
|
+
qual7: '国际客户管理的出口行业经验',
|
|
671
|
+
serviceAreas: '服务区域',
|
|
672
|
+
area1: '野泽温泉(主要焦点)',
|
|
673
|
+
area2: '饭山',
|
|
674
|
+
area3: '信浓',
|
|
675
|
+
area4: '妙高',
|
|
676
|
+
area5: '轻井泽',
|
|
677
|
+
area6: '小诸地区'
|
|
678
|
+
},
|
|
679
|
+
servicesPage: {
|
|
680
|
+
title: '我们的服务',
|
|
681
|
+
subtitle: '为您的日本房地产之旅提供全面支持',
|
|
682
|
+
translation: {
|
|
683
|
+
title: '翻译与口译',
|
|
684
|
+
desc: '为您的房地产投资的所有方面提供专业的日英翻译和口译服务。',
|
|
685
|
+
feature1: '房地产讨论翻译',
|
|
686
|
+
feature2: '承包商会议口译',
|
|
687
|
+
feature3: '现场访问协调',
|
|
688
|
+
feature4: '文件翻译',
|
|
689
|
+
feature5: '法律文件审查',
|
|
690
|
+
feature6: '合同谈判支持'
|
|
691
|
+
},
|
|
692
|
+
liaison: {
|
|
693
|
+
title: '日本企业的客户联络',
|
|
694
|
+
desc: '支持处理外国客户的日本公司,确保顺畅沟通和文化对齐。',
|
|
695
|
+
feature1: '期望对齐',
|
|
696
|
+
feature2: '沟通流程管理',
|
|
697
|
+
feature3: '文化咨询',
|
|
698
|
+
feature4: '外国客户支持',
|
|
699
|
+
feature5: '商业实践指导',
|
|
700
|
+
feature6: '持续关系管理'
|
|
701
|
+
},
|
|
702
|
+
coordination: {
|
|
703
|
+
title: '介绍与协调',
|
|
704
|
+
desc: '与值得信赖的本地专业人士建立联系,确保无缝项目协调。',
|
|
705
|
+
feature1: '房地产经纪人介绍',
|
|
706
|
+
feature2: '承包商推荐',
|
|
707
|
+
feature3: '地方政府联络',
|
|
708
|
+
feature4: '服务提供商网络',
|
|
709
|
+
feature5: '项目协调',
|
|
710
|
+
feature6: '利益相关者管理'
|
|
711
|
+
},
|
|
712
|
+
project: {
|
|
713
|
+
title: '翻新/项目支持',
|
|
714
|
+
desc: '从规划到完成,为翻新和改进项目提供全面支持。',
|
|
715
|
+
feature1: '承包商协调',
|
|
716
|
+
feature2: '进度跟踪',
|
|
717
|
+
feature3: '预算管理',
|
|
718
|
+
feature4: '现场检查',
|
|
719
|
+
feature5: '问题解决',
|
|
720
|
+
feature6: '质量保证'
|
|
721
|
+
},
|
|
722
|
+
management: {
|
|
723
|
+
title: '物业护理与管理',
|
|
724
|
+
desc: '为缺席业主提供可靠的物业管理服务。',
|
|
725
|
+
feature1: '定期物业检查',
|
|
726
|
+
feature2: '钥匙保管服务',
|
|
727
|
+
feature3: '维修协调',
|
|
728
|
+
feature4: '维护计划',
|
|
729
|
+
feature5: '紧急响应',
|
|
730
|
+
feature6: '季节性准备'
|
|
731
|
+
}
|
|
732
|
+
},
|
|
733
|
+
contact: {
|
|
734
|
+
title: '联系我们',
|
|
735
|
+
subtitle: '准备好开始您在长野的房地产之旅了吗?',
|
|
736
|
+
email: '电子邮件',
|
|
737
|
+
phone: '电话',
|
|
738
|
+
location: '位置',
|
|
739
|
+
serviceAreas: '服务区域',
|
|
740
|
+
serviceAreasList: '野泽温泉、饭山、信浓、妙高、轻井泽',
|
|
741
|
+
name: '姓名',
|
|
742
|
+
emailPlaceholder: 'your.email@example.com',
|
|
743
|
+
subject: '主题',
|
|
744
|
+
message: '消息',
|
|
745
|
+
send: '发送消息'
|
|
746
|
+
}
|
|
747
|
+
},
|
|
748
|
+
ko: {
|
|
749
|
+
meta: {
|
|
750
|
+
title: '신슈 솔루션 - 나가노를 세계에 열기',
|
|
751
|
+
description: '나가노현 외국인 부동산 투자자를 위한 전문 이중 언어 지원'
|
|
752
|
+
},
|
|
753
|
+
nav: {
|
|
754
|
+
home: '홈',
|
|
755
|
+
about: '소개',
|
|
756
|
+
services: '서비스',
|
|
757
|
+
contact: '연락처',
|
|
758
|
+
dashboard: '대시보드',
|
|
759
|
+
language: '언어',
|
|
760
|
+
tagline: '나가노를 세계에 열기'
|
|
761
|
+
},
|
|
762
|
+
hero: {
|
|
763
|
+
title: {
|
|
764
|
+
prefix: '일본',
|
|
765
|
+
highlight: '부동산 투자',
|
|
766
|
+
suffix: '탐색'
|
|
767
|
+
},
|
|
768
|
+
titleHighlight: '부동산 투자',
|
|
769
|
+
subtitle: '나가노현의 아름다운 신슈 지역의 외국인 투자자를 위한 전문 이중 언어 지원. 언어와 문화적 격차를 메워 일본의 세계적 수준의 스키 리조트 지역에서 부동산 투자를 성공적으로 관리할 수 있도록 도와드립니다.',
|
|
770
|
+
cta: '문의하기',
|
|
771
|
+
stats: {
|
|
772
|
+
experience: '년 경력',
|
|
773
|
+
certified: 'JLPT N1 인증',
|
|
774
|
+
bilingual: '이중 언어'
|
|
775
|
+
}
|
|
776
|
+
},
|
|
777
|
+
services: {
|
|
778
|
+
title: '왜 신슈 솔루션인가?',
|
|
779
|
+
subtitle: '나가노에서 부동산 성공을 위한 신뢰할 수 있는 현지 파트너',
|
|
780
|
+
translation: {
|
|
781
|
+
title: '번역 및 통역',
|
|
782
|
+
desc: '부동산 논의, 계약자 회의, 현장 방문 및 문서를 위한 전문 일본어-영어 번역.'
|
|
783
|
+
},
|
|
784
|
+
liaison: {
|
|
785
|
+
title: '고객 연락 서비스',
|
|
786
|
+
desc: '외국 고객을 처리하는 일본 기업 지원, 원활한 커뮤니케이션 및 기대치 정렬 보장.'
|
|
787
|
+
},
|
|
788
|
+
coordination: {
|
|
789
|
+
title: '소개 및 조정',
|
|
790
|
+
desc: '신뢰할 수 있는 현지 부동산 중개인 및 계약자와 연결. 프로젝트 전반에 걸친 완전한 조정 지원.'
|
|
791
|
+
},
|
|
792
|
+
project: {
|
|
793
|
+
title: '프로젝트 지원',
|
|
794
|
+
desc: '리노베이션 및 개선 프로젝트 조정, 일정 추적, 예산 관리 및 현장 체크인.'
|
|
795
|
+
},
|
|
796
|
+
management: {
|
|
797
|
+
title: '부동산 관리',
|
|
798
|
+
desc: '정기적인 부동산 점검, 열쇠 보관 서비스 및 부재 소유자를 위한 수리 조정.'
|
|
799
|
+
},
|
|
800
|
+
cultural: {
|
|
801
|
+
title: '문화적 다리',
|
|
802
|
+
desc: '종종 마감일을 놓치고 예산 초과로 이어지는 문화적 기대를 탐색.'
|
|
803
|
+
}
|
|
804
|
+
},
|
|
805
|
+
chatbot: {
|
|
806
|
+
title: '어떻게 도와드릴까요?',
|
|
807
|
+
placeholder: '서비스, 부동산에 대해 질문하거나 도움을 받으세요...',
|
|
808
|
+
send: '보내기',
|
|
809
|
+
typing: '입력 중...',
|
|
810
|
+
error: '죄송합니다. 오류가 발생했습니다. 다시 시도해 주세요.',
|
|
811
|
+
suggestions: [
|
|
812
|
+
'서비스에 대해 알려주세요',
|
|
813
|
+
'어떻게 시작하나요?',
|
|
814
|
+
'어떤 지역을 서비스하나요?',
|
|
815
|
+
'연락처 정보'
|
|
816
|
+
]
|
|
817
|
+
},
|
|
818
|
+
dashboard: {
|
|
819
|
+
title: '비즈니스 대시보드',
|
|
820
|
+
subtitle: '고객, 부동산 및 프로젝트 관리',
|
|
821
|
+
clients: '총 고객 수',
|
|
822
|
+
properties: '부동산',
|
|
823
|
+
projects: '활성 프로젝트',
|
|
824
|
+
recentClients: '최근 고객',
|
|
825
|
+
recentProjects: '최근 프로젝트',
|
|
826
|
+
noData: '사용 가능한 데이터 없음'
|
|
827
|
+
},
|
|
828
|
+
about: {
|
|
829
|
+
title: '제이크 왈크 소개',
|
|
830
|
+
subtitle: '나가노에 깊은 뿌리를 둔 현지 전문가',
|
|
831
|
+
intro1: '신슈 솔루션은 제이크 왈크가 운영하는 나가노 기반 이중 언어 컨설팅 서비스로, 외국인 부동산 투자자와 일본 건설 회사를 지원하는 데 특화되어 있습니다. 국제 고객이 일본에서 부동산을 구매, 리노베이션 및 유지 관리하는 실제 현실을 탐색할 수 있도록 도와드립니다.',
|
|
832
|
+
intro2: '제 서비스 지역은 2026 시즌 세계 상위 9개 스키 리조트 중 하나로 콘데 나스트 트래블러 표지에 소개된 세계적 수준의 스키 리조트 노자와 온천을 중심으로 합니다. 이이야마, 시나노, 묘코, 가루이자와 및 인근 리조트 지역에서도 활동합니다.',
|
|
833
|
+
intro3: '저는 2015년 인류학 석사 학위를 취득한 후 나가노현으로 이주했습니다. 그 이후 공공 및 민간 부문 모두에서 나가노에서 광범위한 전문 경험을 쌓았습니다. JET 프로그램에서 영어 교사로 일했으며 2년 동안 나가노 AJET 회장을 역임했습니다.',
|
|
834
|
+
intro4: '2020년부터 2021년까지 토미시 토미 관광 협회에서 생태 관광 개발에 종사했으며, 나가노현 최초의 비일본인 마을 개발 담당자가 되었습니다. 최근에는 나가노 기반 수출 회사에서 마케팅 및 국제 고객 관리를 담당하여 일본 버섯 산업에서 일했습니다.',
|
|
835
|
+
qualifications: '자격 및 경험',
|
|
836
|
+
qual1: 'JLPT N1 인증 (최고 수준의 일본어 능력)',
|
|
837
|
+
qual2: '5년 이상의 기술 일본어-영어 번역 및 통역',
|
|
838
|
+
qual3: '인류학 석사 학위',
|
|
839
|
+
qual4: '나가노현 최초의 비일본인 마을 개발 담당자',
|
|
840
|
+
qual5: '나가노 AJET 회장 (2년)',
|
|
841
|
+
qual6: '가족 관계를 통한 건설 산업과의 깊은 연결',
|
|
842
|
+
qual7: '국제 고객 관리의 수출 산업 경험',
|
|
843
|
+
serviceAreas: '서비스 지역',
|
|
844
|
+
area1: '노자와 온천 (주요 초점)',
|
|
845
|
+
area2: '이이야마',
|
|
846
|
+
area3: '시나노',
|
|
847
|
+
area4: '묘코',
|
|
848
|
+
area5: '가루이자와',
|
|
849
|
+
area6: '고모로 지역'
|
|
850
|
+
},
|
|
851
|
+
servicesPage: {
|
|
852
|
+
title: '우리 서비스',
|
|
853
|
+
subtitle: '일본에서의 부동산 여정을 위한 포괄적인 지원',
|
|
854
|
+
translation: {
|
|
855
|
+
title: '번역 및 통역',
|
|
856
|
+
desc: '부동산 투자의 모든 측면에 대한 전문 일본어-영어 번역 및 통역 서비스.',
|
|
857
|
+
feature1: '부동산 논의 번역',
|
|
858
|
+
feature2: '계약자 회의 통역',
|
|
859
|
+
feature3: '현장 방문 조정',
|
|
860
|
+
feature4: '문서 번역',
|
|
861
|
+
feature5: '법적 문서 검토',
|
|
862
|
+
feature6: '계약 협상 지원'
|
|
863
|
+
},
|
|
864
|
+
liaison: {
|
|
865
|
+
title: '일본 기업을 위한 고객 연락',
|
|
866
|
+
desc: '외국 고객을 처리하는 일본 기업 지원, 원활한 커뮤니케이션 및 문화적 정렬 보장.',
|
|
867
|
+
feature1: '기대치 정렬',
|
|
868
|
+
feature2: '커뮤니케이션 흐름 관리',
|
|
869
|
+
feature3: '문화적 상담',
|
|
870
|
+
feature4: '외국 고객 지원',
|
|
871
|
+
feature5: '비즈니스 관행 가이드',
|
|
872
|
+
feature6: '지속적인 관계 관리'
|
|
873
|
+
},
|
|
874
|
+
coordination: {
|
|
875
|
+
title: '소개 및 조정',
|
|
876
|
+
desc: '신뢰할 수 있는 현지 전문가와 연결하고 원활한 프로젝트 조정을 보장.',
|
|
877
|
+
feature1: '부동산 중개인 소개',
|
|
878
|
+
feature2: '계약자 추천',
|
|
879
|
+
feature3: '지방 정부 연락',
|
|
880
|
+
feature4: '서비스 제공자 네트워크',
|
|
881
|
+
feature5: '프로젝트 조정',
|
|
882
|
+
feature6: '이해관계자 관리'
|
|
883
|
+
},
|
|
884
|
+
project: {
|
|
885
|
+
title: '리노베이션 / 프로젝트 지원',
|
|
886
|
+
desc: '계획부터 완료까지 리노베이션 및 개선 프로젝트에 대한 포괄적인 지원.',
|
|
887
|
+
feature1: '계약자 조정',
|
|
888
|
+
feature2: '일정 추적',
|
|
889
|
+
feature3: '예산 관리',
|
|
890
|
+
feature4: '현장 체크인',
|
|
891
|
+
feature5: '문제 해결',
|
|
892
|
+
feature6: '품질 보증'
|
|
893
|
+
},
|
|
894
|
+
management: {
|
|
895
|
+
title: '부동산 관리',
|
|
896
|
+
desc: '부재 소유자를 위한 신뢰할 수 있는 부동산 관리 서비스.',
|
|
897
|
+
feature1: '정기적인 부동산 점검',
|
|
898
|
+
feature2: '열쇠 보관 서비스',
|
|
899
|
+
feature3: '수리 조정',
|
|
900
|
+
feature4: '유지보수 일정',
|
|
901
|
+
feature5: '비상 대응',
|
|
902
|
+
feature6: '계절 준비'
|
|
903
|
+
}
|
|
904
|
+
},
|
|
905
|
+
contact: {
|
|
906
|
+
title: '문의하기',
|
|
907
|
+
subtitle: '나가노에서 부동산 여정을 시작할 준비가 되셨나요?',
|
|
908
|
+
email: '이메일',
|
|
909
|
+
phone: '전화',
|
|
910
|
+
location: '위치',
|
|
911
|
+
serviceAreas: '서비스 지역',
|
|
912
|
+
serviceAreasList: '노자와 온천, 이이야마, 시나노, 묘코, 가루이자와',
|
|
913
|
+
name: '이름',
|
|
914
|
+
emailPlaceholder: 'your.email@example.com',
|
|
915
|
+
subject: '제목',
|
|
916
|
+
message: '메시지',
|
|
917
|
+
send: '메시지 보내기'
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
};
|
|
922
|
+
|
|
923
|
+
// Initialize on load
|
|
924
|
+
if (typeof window !== 'undefined') {
|
|
925
|
+
i18n.currentLanguage = i18n.detectLanguage();
|
|
926
|
+
document.documentElement.lang = i18n.currentLanguage;
|
|
927
|
+
|
|
928
|
+
// Make i18n globally accessible
|
|
929
|
+
window.i18n = i18n;
|
|
930
|
+
|
|
931
|
+
// Auto-update on DOM ready
|
|
932
|
+
if (document.readyState === 'loading') {
|
|
933
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
934
|
+
setTimeout(() => {
|
|
935
|
+
if (i18n.updatePageContent) {
|
|
936
|
+
i18n.updatePageContent();
|
|
937
|
+
}
|
|
938
|
+
}, 100);
|
|
939
|
+
});
|
|
940
|
+
} else {
|
|
941
|
+
setTimeout(() => {
|
|
942
|
+
if (i18n.updatePageContent) {
|
|
943
|
+
i18n.updatePageContent();
|
|
944
|
+
}
|
|
945
|
+
}, 100);
|
|
946
|
+
}
|
|
947
|
+
}
|