Skip to content

Conversation

@tonyboylehub
Copy link
Contributor

No description provided.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Aug 26, 2025

Caution

Review failed

Failed to post review comments

Summary by CodeRabbit

Release Notes

  • New Features

    • Added multilingual support for Japanese and Korean languages across the entire developer hub
    • Integrated language switcher in the header for easy locale navigation
    • Implemented proper SEO metadata (canonical URLs, hreflang tags, Open Graph data) for all language variants
  • Documentation

    • Added complete Japanese and Korean translations for all product documentation
    • Expanded content coverage for Amman, Aura, Bubblegum, and Candy Machine guides

Walkthrough

Adds full multilingual support (en/ja/ko): language config and utilities, locale provider/hooks, server i18n, SEOHead with hreflang/canonical/OG, language switcher UI, localized navigation data across many product exports, translation validation tooling, and ~40+ localized documentation pages and locale bundles.

Changes

Cohort / File(s) Summary
Localization core
src/config/languages.js, src/contexts/LocaleContext.js, src/i18n.js, src/middleware.js
New centralized language map and helpers, LocaleProvider with hooks (useLocale/useTranslations), server-side next-intl config with locale validation, URL-localization helpers, and a minor middleware comment.
Locale resources
src/locales/\en.json`, `ja.json`, `ko.json``
Added top-level JSON locale bundles containing navigation, UI, meta, and 404 translations.
SEO & docs
src/components/SEOHead.jsx, SEO_EXAMPLE.md, SEO_IMPLEMENTATION.md
New SEOHead component that builds title/description, canonical URL, hreflang (+x-default), OG locale/alternates, og:image, and Twitter card meta; plus two documentation pages describing usage and implementation.
App integration & Document
src/pages/_app.jsx, src/pages/_document.jsx, src/pages/404.js, (removed) src/pages/404.md
Wrap app with LocaleProvider, replace inline Head with SEOHead, add locale-aware custom Document, new dynamic 404 page (static markdown removed).
UI components
src/components/LanguageSwitcher.jsx, src/components/Header.jsx, src/components/NavList.jsx, src/components/TableOfContent.jsx
New LanguageSwitcher component and header wiring; NavList and TableOfContent made locale-aware/null-safe and use translations for labels/links.
SEO/example pages
SEO_EXAMPLE.md, SEO_IMPLEMENTATION.md
Documentation examples and implementation notes for multilingual SEO and canonical/hreflang behavior.
SEO helper config
src/config/navigation-translations.js, src/config/TRANSLATION_SYSTEM.md, src/config/TRANSLATIONS_REVIEW.md, src/config/TRANSLATIONS_REVIEW.md
Centralized navigation translations, builder/resolver utilities, and process docs for translation system and review.
Translation tooling
scripts/validate-translations.js, package.json
New validation script for product translations and package.json script entry; added dependency next-intl.
Products navigation (many)
src/components/products/*/index.js (20+ files)
Added localizedNavigation (en/ja/ko) to many product exports to surface per-language navigation metadata.
Product components
src/components/products/Grid.jsx, src/components/products/Sections.jsx
Grid and Sections updated to render locale-aware hrefs/labels, handle external links safely, and accept extra props (Grid signature extended).
Guide index & helpers
src/components/helperComponents/guideIndex.jsx
Converted guide data to localized objects and added runtime helpers to resolve localized names/paths; multiple public guide name entities changed to locale objects.
SEO/UI wiring
src/components/SEOHead.jsx, src/components/Header.jsx
SEOHead export added; Header now imports/renders LanguageSwitcher.
Translation status & docs
TRANSLATION_STATUS.md, src/config/TRANSLATION_SYSTEM.md
Added translation status report and system/process documentation.
Localized docs (ja/ko)
src/pages/ja/*, src/pages/ko/* (40+ files; examples: src/pages/ja/bubblegum-v2/*, src/pages/ja/candy-machine/*, src/pages/ja/aura/*, src/pages/ja/amman/*)
Large set of new localized documentation pages (primarily Japanese content added; navigation metadata and some Korean pages/strings present).

Sequence Diagram(s)

%%{init: {"themeVariables":{"sequenceNumber":"#6b7280","actorBackground":"#f3f9ff","actorBorder":"#2d6cdf"}}}%%
sequenceDiagram
    actor User
    participant Browser
    participant NextRouter as "Next.js Router"
    participant LocaleCtx as "LocaleContext"
    participant App as "_app / AppContent"
    participant SEO as "SEOHead"
    participant Page as "Page Component"

    User->>Browser: request /ja/core
    Browser->>NextRouter: route /ja/core
    NextRouter->>LocaleCtx: determine locale from pathname
    LocaleCtx-->>NextRouter: locale='ja', messages
    NextRouter->>App: render with locale
    App->>SEO: provide title, description, locale
    SEO->>SEO: normalize path, build canonical
    SEO->>SEO: generate alternate URLs (en, ja, ko) + x-default
    SEO->>Browser: inject meta/link tags (hreflang, OG, twitter)
    App->>Page: render UI (NavList, LanguageSwitcher, content)
    User->>Browser: click LanguageSwitcher -> "ko"
    Browser->>NextRouter: navigate to /ko/core
    NextRouter->>LocaleCtx: locale update -> 'ko'
    Note right of Page: Page re-renders with ko messages
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • Program Guide Index #375 — overlaps edits to src/components/helperComponents/guideIndex.jsx; likely related to the guide localization refactor.
  • Bubblegum Improvements #360 — touches Bubblegum docs and navigation; relates to many added bubblegum/bubblegum-v2 localized pages and navigation metadata.
  • Update resize language #388 — modifies tokenMetadata navigation; relates to added localizedNavigation on product exports (tokenMetadata).

Suggested reviewers

  • MarkSackerberg
  • blockiosaurus

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Description Check ⚠️ Warning The pull request contains no description. An empty description does not describe any part of the changeset and therefore fails to provide any relationship to the changes made. While the check is intentionally lenient and accepts minimal detail, the complete absence of a description means there is no information connecting the PR to its objectives or explaining the scope and rationale for the localization work being introduced. The author should add a description explaining the scope of this localization effort. For example, the description could outline that this PR adds complete Japanese and Korean language support to the developer hub, including new localization infrastructure (LocaleContext, language configuration, SEOHead component), comprehensive documentation translations, and a language switcher UI component. This would help reviewers quickly understand the scale and objectives of the changes.
Docstring Coverage ⚠️ Warning Docstring coverage is 36.36% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Title Check ✅ Passed The PR title "Localization/initial jp kr" is directly related to the main changes in the pull request. The changeset primarily implements Japanese (ja) and Korean (ko) localization for the Metaplex Developer Hub, including comprehensive translation of documentation, new localization infrastructure (LocaleContext, language configuration), a LanguageSwitcher component, and localized navigation structures across all product documentation pages. The title clearly communicates this primary objective, though it uses non-standard language code abbreviations (jp/kr instead of the ISO 639-1 codes ja/ko used in the actual implementation). The title is appropriately concise and specific, focusing on the main change rather than attempting to capture every aspect of the changeset.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch localization/initial-jp-kr

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@vercel
Copy link

vercel bot commented Aug 26, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
developer-hub Ready Ready Preview Comment Oct 22, 2025 3:14pm

devonbeard
devonbeard previously approved these changes Oct 15, 2025
@tonyboylehub tonyboylehub marked this pull request as ready for review October 22, 2025 10:11
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 118

♻️ Duplicate comments (5)
src/components/products/umi/index.js (1)

124-239: Same localization pattern as other product files.

This follows the same localizedNavigation structure pattern flagged in das-api/index.js. The code duplication and maintenance concerns apply here as well.

src/components/products/shank/index.js (1)

43-83: Same localization pattern as other product files.

This follows the same localizedNavigation structure pattern flagged in das-api/index.js. The code duplication and maintenance concerns apply here as well.

src/components/products/sugar/index.js (1)

16-29: Same localization pattern as other product files.

This follows the same localizedNavigation structure pattern flagged in das-api/index.js. The code duplication and maintenance concerns apply here as well.

src/components/products/hydra/index.js (1)

37-71: Same localization pattern as other product files.

This follows the same localizedNavigation structure pattern flagged in das-api/index.js. The code duplication and maintenance concerns apply here as well.

src/components/products/fusion/index.js (1)

38-81: Same localization pattern as other product files.

This follows the same localizedNavigation structure pattern flagged in das-api/index.js. The code duplication and maintenance concerns apply here as well.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f2f1a00 and 7ef61b5.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (107)
  • SEO_EXAMPLE.md (1 hunks)
  • SEO_IMPLEMENTATION.md (1 hunks)
  • TRANSLATION_STATUS.md (1 hunks)
  • package.json (1 hunks)
  • src/components/Header.jsx (2 hunks)
  • src/components/LanguageSwitcher.jsx (1 hunks)
  • src/components/NavList.jsx (2 hunks)
  • src/components/SEOHead.jsx (1 hunks)
  • src/components/TableOfContent.jsx (1 hunks)
  • src/components/helperComponents/guideIndex.jsx (5 hunks)
  • src/components/products/Grid.jsx (2 hunks)
  • src/components/products/Sections.jsx (1 hunks)
  • src/components/products/amman/index.js (1 hunks)
  • src/components/products/aura/index.js (1 hunks)
  • src/components/products/bubblegum-v2/index.js (1 hunks)
  • src/components/products/bubblegum/index.js (1 hunks)
  • src/components/products/candyMachine/index.js (1 hunks)
  • src/components/products/cli/index.js (1 hunks)
  • src/components/products/core/index.js (1 hunks)
  • src/components/products/coreCandyMachine/index.js (1 hunks)
  • src/components/products/das-api/index.js (1 hunks)
  • src/components/products/fusion/index.js (1 hunks)
  • src/components/products/global/index.js (1 hunks)
  • src/components/products/guides/index.js (1 hunks)
  • src/components/products/hydra/index.js (1 hunks)
  • src/components/products/inscription/index.js (1 hunks)
  • src/components/products/legacyDocumentation/index.js (1 hunks)
  • src/components/products/mpl-hybrid/index.js (1 hunks)
  • src/components/products/shank/index.js (1 hunks)
  • src/components/products/sugar/index.js (1 hunks)
  • src/components/products/tokenAuthRules/index.js (1 hunks)
  • src/components/products/tokenMetadata/index.js (1 hunks)
  • src/components/products/umi/index.js (1 hunks)
  • src/config/languages.js (1 hunks)
  • src/contexts/LocaleContext.js (1 hunks)
  • src/i18n.js (1 hunks)
  • src/locales/en.json (1 hunks)
  • src/locales/ja.json (1 hunks)
  • src/locales/ko.json (1 hunks)
  • src/middleware.js (1 hunks)
  • src/pages/404.js (1 hunks)
  • src/pages/404.md (0 hunks)
  • src/pages/_app.jsx (2 hunks)
  • src/pages/ja/amman/cli-commands.md (1 hunks)
  • src/pages/ja/amman/configuration.md (1 hunks)
  • src/pages/ja/amman/getting-started.md (1 hunks)
  • src/pages/ja/amman/index.md (1 hunks)
  • src/pages/ja/amman/pre-made-configs.md (1 hunks)
  • src/pages/ja/aura/blockchains/eclipse.md (1 hunks)
  • src/pages/ja/aura/blockchains/solana.md (1 hunks)
  • src/pages/ja/aura/faq.md (1 hunks)
  • src/pages/ja/aura/index.md (1 hunks)
  • src/pages/ja/aura/reading-solana-and-svm-data.md (1 hunks)
  • src/pages/ja/bubblegum-v2/burn-cnfts.md (1 hunks)
  • src/pages/ja/bubblegum-v2/collections.md (1 hunks)
  • src/pages/ja/bubblegum-v2/concurrent-merkle-trees.md (1 hunks)
  • src/pages/ja/bubblegum-v2/create-trees.md (1 hunks)
  • src/pages/ja/bubblegum-v2/delegate-cnfts.md (1 hunks)
  • src/pages/ja/bubblegum-v2/delegate-trees.md (1 hunks)
  • src/pages/ja/bubblegum-v2/faq.md (1 hunks)
  • src/pages/ja/bubblegum-v2/fetch-cnfts.md (1 hunks)
  • src/pages/ja/bubblegum-v2/freeze-cnfts.md (1 hunks)
  • src/pages/ja/bubblegum-v2/hashed-nft-data.md (1 hunks)
  • src/pages/ja/bubblegum-v2/index.md (1 hunks)
  • src/pages/ja/bubblegum-v2/merkle-tree-canopy.md (1 hunks)
  • src/pages/ja/bubblegum-v2/mint-cnfts.md (1 hunks)
  • src/pages/ja/bubblegum-v2/sdk/index.md (1 hunks)
  • src/pages/ja/bubblegum-v2/sdk/javascript.md (1 hunks)
  • src/pages/ja/bubblegum-v2/sdk/rust.md (1 hunks)
  • src/pages/ja/bubblegum-v2/stored-nft-data.md (1 hunks)
  • src/pages/ja/bubblegum-v2/transfer-cnfts.md (1 hunks)
  • src/pages/ja/bubblegum-v2/update-cnfts.md (1 hunks)
  • src/pages/ja/bubblegum-v2/verify-creators.md (1 hunks)
  • src/pages/ja/bubblegum/burn-cnfts.md (1 hunks)
  • src/pages/ja/bubblegum/create-trees.md (1 hunks)
  • src/pages/ja/bubblegum/decompress-cnfts.md (1 hunks)
  • src/pages/ja/bubblegum/delegate-cnfts.md (1 hunks)
  • src/pages/ja/bubblegum/delegate-trees.md (1 hunks)
  • src/pages/ja/bubblegum/guides/index.md (1 hunks)
  • src/pages/ja/bubblegum/guides/javascript/how-to-create-1000000-nfts-on-solana.md (1 hunks)
  • src/pages/ja/bubblegum/guides/javascript/how-to-interact-with-cnfts-on-other-svms.md (1 hunks)
  • src/pages/ja/bubblegum/index.md (1 hunks)
  • src/pages/ja/bubblegum/mint-cnfts.md (1 hunks)
  • src/pages/ja/bubblegum/sdk/index.md (1 hunks)
  • src/pages/ja/bubblegum/sdk/javascript.md (1 hunks)
  • src/pages/ja/bubblegum/sdk/rust.md (1 hunks)
  • src/pages/ja/bubblegum/transfer-cnfts.md (1 hunks)
  • src/pages/ja/bubblegum/update-cnfts.md (1 hunks)
  • src/pages/ja/bubblegum/verify-collections.md (1 hunks)
  • src/pages/ja/bubblegum/verify-creators.md (1 hunks)
  • src/pages/ja/candy-machine/custom-guards/generating-client.md (1 hunks)
  • src/pages/ja/candy-machine/getting-started/index.md (1 hunks)
  • src/pages/ja/candy-machine/getting-started/js.md (1 hunks)
  • src/pages/ja/candy-machine/getting-started/rust.md (1 hunks)
  • src/pages/ja/candy-machine/guard-groups.md (1 hunks)
  • src/pages/ja/candy-machine/guard-route.md (1 hunks)
  • src/pages/ja/candy-machine/guards.md (1 hunks)
  • src/pages/ja/candy-machine/guards/address-gate.md (1 hunks)
  • src/pages/ja/candy-machine/guards/allocation.md (1 hunks)
  • src/pages/ja/candy-machine/guards/allow-list.md (1 hunks)
  • src/pages/ja/candy-machine/guards/bot-tax.md (1 hunks)
  • src/pages/ja/candy-machine/guards/end-date.md (1 hunks)
  • src/pages/ja/candy-machine/guards/freeze-sol-payment.md (1 hunks)
  • src/pages/ja/candy-machine/guards/freeze-token-payment.md (1 hunks)
  • src/pages/ja/candy-machine/guards/gatekeeper.md (1 hunks)
  • src/pages/ja/candy-machine/guards/mint-limit.md (1 hunks)
  • src/pages/ja/candy-machine/guards/nft-burn.md (1 hunks)
⛔ Files not processed due to max files limit (63)
  • src/pages/ja/candy-machine/guards/nft-gate.md
  • src/pages/ja/candy-machine/guards/nft-payment.md
  • src/pages/ja/candy-machine/guards/program-gate.md
  • src/pages/ja/candy-machine/guards/redeemed-amount.md
  • src/pages/ja/candy-machine/guards/sol-payment.md
  • src/pages/ja/candy-machine/guards/start-date.md
  • src/pages/ja/candy-machine/guards/third-party-signer.md
  • src/pages/ja/candy-machine/guards/token-burn.md
  • src/pages/ja/candy-machine/guards/token-gate.md
  • src/pages/ja/candy-machine/guards/token-payment.md
  • src/pages/ja/candy-machine/guards/token2022-payment.md
  • src/pages/ja/candy-machine/guides/airdrop-mint-to-another-wallet.md
  • src/pages/ja/candy-machine/guides/create-an-nft-collection-on-solana-with-candy-machine.md
  • src/pages/ja/candy-machine/guides/index.md
  • src/pages/ja/candy-machine/guides/mint-to-another-wallet.md
  • src/pages/ja/candy-machine/index.md
  • src/pages/ja/candy-machine/insert-items.md
  • src/pages/ja/candy-machine/manage.md
  • src/pages/ja/candy-machine/mint.md
  • src/pages/ja/candy-machine/pnfts.md
  • src/pages/ja/candy-machine/references/index.md
  • src/pages/ja/candy-machine/settings.md
  • src/pages/ja/candy-machine/sugar/bring-your-own-uploader.md
  • src/pages/ja/candy-machine/sugar/cache.md
  • src/pages/ja/candy-machine/sugar/commands/airdrop.md
  • src/pages/ja/candy-machine/sugar/commands/bundlr.md
  • src/pages/ja/candy-machine/sugar/commands/collection.md
  • src/pages/ja/candy-machine/sugar/commands/config.md
  • src/pages/ja/candy-machine/sugar/commands/deploy.md
  • src/pages/ja/candy-machine/sugar/commands/freeze.md
  • src/pages/ja/candy-machine/sugar/commands/guard.md
  • src/pages/ja/candy-machine/sugar/commands/hash.md
  • src/pages/ja/candy-machine/sugar/commands/launch.md
  • src/pages/ja/candy-machine/sugar/commands/mint.md
  • src/pages/ja/candy-machine/sugar/commands/reveal.md
  • src/pages/ja/candy-machine/sugar/commands/show.md
  • src/pages/ja/candy-machine/sugar/commands/sign.md
  • src/pages/ja/candy-machine/sugar/commands/update.md
  • src/pages/ja/candy-machine/sugar/commands/upload.md
  • src/pages/ja/candy-machine/sugar/commands/validate.md
  • src/pages/ja/candy-machine/sugar/commands/verify.md
  • src/pages/ja/candy-machine/sugar/commands/withdraw.md
  • src/pages/ja/candy-machine/sugar/configuration.md
  • src/pages/ja/candy-machine/sugar/getting-started.md
  • src/pages/ja/candy-machine/sugar/index.md
  • src/pages/ja/candy-machine/sugar/installation.md
  • src/pages/ja/cli/config/explorer.md
  • src/pages/ja/cli/config/rpcs.md
  • src/pages/ja/cli/config/wallets.md
  • src/pages/ja/cli/core/create-asset.md
  • src/pages/ja/cli/core/create-collection.md
  • src/pages/ja/cli/core/fetch.md
  • src/pages/ja/cli/core/plugins.md
  • src/pages/ja/cli/core/update-asset.md
  • src/pages/ja/cli/index.md
  • src/pages/ja/cli/installation.md
  • src/pages/ja/cli/toolbox/sol-airdrop.md
  • src/pages/ja/cli/toolbox/sol-balance.md
  • src/pages/ja/cli/toolbox/sol-transfer.md
  • src/pages/ja/cli/toolbox/token-create.md
  • src/pages/ja/cli/toolbox/token-transfer.md
  • src/pages/ja/community-guides.md
  • src/pages/ja/contact.md
💤 Files with no reviewable changes (1)
  • src/pages/404.md
🧰 Additional context used
📓 Path-based instructions (4)
src/components/products/*/index.js

📄 CodeRabbit inference engine (CLAUDE.md)

Each product has its own configuration in src/components/products/[product]/index.js that defines navigation structure, hero components, section organization, GitHub links, and styling themes

Files:

  • src/components/products/coreCandyMachine/index.js
  • src/components/products/amman/index.js
  • src/components/products/bubblegum-v2/index.js
  • src/components/products/shank/index.js
  • src/components/products/das-api/index.js
  • src/components/products/candyMachine/index.js
  • src/components/products/hydra/index.js
  • src/components/products/aura/index.js
  • src/components/products/mpl-hybrid/index.js
  • src/components/products/legacyDocumentation/index.js
  • src/components/products/tokenMetadata/index.js
  • src/components/products/guides/index.js
  • src/components/products/sugar/index.js
  • src/components/products/tokenAuthRules/index.js
  • src/components/products/global/index.js
  • src/components/products/bubblegum/index.js
  • src/components/products/cli/index.js
  • src/components/products/fusion/index.js
  • src/components/products/umi/index.js
  • src/components/products/inscription/index.js
  • src/components/products/core/index.js
src/components/**/*.{js,jsx,ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

Custom components go in src/components/

Files:

  • src/components/products/coreCandyMachine/index.js
  • src/components/products/amman/index.js
  • src/components/products/bubblegum-v2/index.js
  • src/components/products/shank/index.js
  • src/components/products/das-api/index.js
  • src/components/products/candyMachine/index.js
  • src/components/products/hydra/index.js
  • src/components/products/Grid.jsx
  • src/components/products/aura/index.js
  • src/components/products/mpl-hybrid/index.js
  • src/components/products/legacyDocumentation/index.js
  • src/components/products/tokenMetadata/index.js
  • src/components/Header.jsx
  • src/components/products/guides/index.js
  • src/components/SEOHead.jsx
  • src/components/products/sugar/index.js
  • src/components/LanguageSwitcher.jsx
  • src/components/NavList.jsx
  • src/components/products/tokenAuthRules/index.js
  • src/components/TableOfContent.jsx
  • src/components/products/global/index.js
  • src/components/products/bubblegum/index.js
  • src/components/products/cli/index.js
  • src/components/products/fusion/index.js
  • src/components/products/umi/index.js
  • src/components/products/inscription/index.js
  • src/components/products/Sections.jsx
  • src/components/helperComponents/guideIndex.jsx
  • src/components/products/core/index.js
src/pages/**/*.md

📄 CodeRabbit inference engine (CLAUDE.md)

Markdoc processes .md files in pages directory

Files:

  • src/pages/ja/amman/cli-commands.md
  • src/pages/ja/aura/blockchains/eclipse.md
  • src/pages/ja/bubblegum/delegate-trees.md
  • src/pages/ja/amman/getting-started.md
  • src/pages/ja/bubblegum-v2/collections.md
  • src/pages/ja/bubblegum/sdk/rust.md
  • src/pages/ja/bubblegum-v2/stored-nft-data.md
  • src/pages/ja/bubblegum-v2/delegate-cnfts.md
  • src/pages/ja/bubblegum/delegate-cnfts.md
  • src/pages/ja/bubblegum/transfer-cnfts.md
  • src/pages/ja/bubblegum/create-trees.md
  • src/pages/ja/candy-machine/guards.md
  • src/pages/ja/candy-machine/guards/allow-list.md
  • src/pages/ja/candy-machine/guards/address-gate.md
  • src/pages/ja/bubblegum-v2/index.md
  • src/pages/ja/bubblegum-v2/freeze-cnfts.md
  • src/pages/ja/candy-machine/getting-started/js.md
  • src/pages/ja/bubblegum/verify-creators.md
  • src/pages/ja/bubblegum-v2/faq.md
  • src/pages/ja/bubblegum-v2/sdk/index.md
  • src/pages/ja/bubblegum-v2/create-trees.md
  • src/pages/ja/bubblegum-v2/concurrent-merkle-trees.md
  • src/pages/ja/candy-machine/guards/nft-burn.md
  • src/pages/ja/aura/index.md
  • src/pages/ja/bubblegum/guides/javascript/how-to-create-1000000-nfts-on-solana.md
  • src/pages/ja/bubblegum/sdk/index.md
  • src/pages/ja/aura/faq.md
  • src/pages/ja/bubblegum-v2/delegate-trees.md
  • src/pages/ja/bubblegum/verify-collections.md
  • src/pages/ja/bubblegum/guides/index.md
  • src/pages/ja/bubblegum-v2/verify-creators.md
  • src/pages/ja/bubblegum-v2/burn-cnfts.md
  • src/pages/ja/amman/configuration.md
  • src/pages/ja/bubblegum-v2/update-cnfts.md
  • src/pages/ja/candy-machine/guards/bot-tax.md
  • src/pages/ja/candy-machine/guard-route.md
  • src/pages/ja/bubblegum-v2/transfer-cnfts.md
  • src/pages/ja/bubblegum-v2/hashed-nft-data.md
  • src/pages/ja/candy-machine/guards/freeze-sol-payment.md
  • src/pages/ja/bubblegum/guides/javascript/how-to-interact-with-cnfts-on-other-svms.md
  • src/pages/ja/bubblegum/burn-cnfts.md
  • src/pages/ja/bubblegum/mint-cnfts.md
  • src/pages/ja/candy-machine/guards/freeze-token-payment.md
  • src/pages/ja/candy-machine/guard-groups.md
  • src/pages/ja/candy-machine/getting-started/rust.md
  • src/pages/ja/bubblegum-v2/merkle-tree-canopy.md
  • src/pages/ja/bubblegum/index.md
  • src/pages/ja/candy-machine/custom-guards/generating-client.md
  • src/pages/ja/amman/pre-made-configs.md
  • src/pages/ja/bubblegum-v2/sdk/rust.md
  • src/pages/ja/bubblegum-v2/sdk/javascript.md
  • src/pages/ja/amman/index.md
  • src/pages/ja/aura/blockchains/solana.md
  • src/pages/ja/candy-machine/guards/gatekeeper.md
  • src/pages/ja/candy-machine/guards/mint-limit.md
  • src/pages/ja/candy-machine/getting-started/index.md
  • src/pages/ja/bubblegum/sdk/javascript.md
  • src/pages/ja/bubblegum/update-cnfts.md
  • src/pages/ja/bubblegum/decompress-cnfts.md
  • src/pages/ja/bubblegum-v2/mint-cnfts.md
  • src/pages/ja/bubblegum-v2/fetch-cnfts.md
  • src/pages/ja/candy-machine/guards/allocation.md
  • src/pages/ja/candy-machine/guards/end-date.md
  • src/pages/ja/aura/reading-solana-and-svm-data.md
src/middleware.js

📄 CodeRabbit inference engine (CLAUDE.md)

Middleware for URL redirects is handled in src/middleware.js

Files:

  • src/middleware.js
🧠 Learnings (1)
📚 Learning: 2025-07-26T12:44:34.576Z
Learnt from: CR
PR: metaplex-foundation/developer-hub#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-26T12:44:34.576Z
Learning: Applies to src/middleware.js : Middleware for URL redirects is handled in `src/middleware.js`

Applied to files:

  • src/middleware.js
🧬 Code graph analysis (4)
src/components/products/Grid.jsx (3)
src/components/NavList.jsx (2)
  • useLocale (11-11)
  • getLocalizedHref (13-16)
src/shared/usePage.js (4)
  • useLocale (10-10)
  • product (19-19)
  • localizedProduct (174-174)
  • productNav (178-178)
src/components/products/IconWithName.jsx (1)
  • IconWithName (9-28)
src/pages/_app.jsx (1)
src/shared/usePage.js (1)
  • usePage (8-46)
src/components/NavList.jsx (3)
src/components/products/Grid.jsx (2)
  • useLocale (13-13)
  • getLocalizedHref (35-44)
src/shared/usePage.js (1)
  • useLocale (10-10)
src/components/products/index.js (2)
  • productCategories (23-27)
  • productCategories (23-27)
src/components/products/Sections.jsx (1)
src/components/icons/index.jsx (1)
  • Icon (35-53)
🪛 Biome (2.1.2)
src/components/LanguageSwitcher.jsx

[error] 63-68: Alternative text title element cannot be empty

For accessibility purposes, SVGs should have an alternative text, provided via title element. If the svg element has role="img", you should add the aria-label or aria-labelledby attribute.

(lint/a11y/noSvgWithoutTitle)


[error] 57-61: Provide an explicit type prop for the button element.

The default type of a button is submit, which causes the submission of a form when placed inside a form element. This is likely not the behaviour that you want inside a React application.
Allowed button types are: submit, button or reset

(lint/a11y/useButtonType)

🪛 LanguageTool
src/pages/ja/bubblegum-v2/collections.md

[uncategorized] ~9-~9: 「ことができる」という表現は冗長な可能性があります。
Context: ...機能も可能になります。MPL-Coreコレクションについてはこちらで詳しく読むことができます。 [ここでドキュメント化され...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/bubblegum/sdk/rust.md

[uncategorized] ~98-~98: 「ことができる」という表現は冗長な可能性があります。
Context: ...ることは、MPL-Bubblegum Rustクレートのすべての命令で見つけることができる命令関数のCpiBuilderバージョンを使用することで簡単に実現できます...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/bubblegum/delegate-cnfts.md

[uncategorized] ~7-~7: 「ことができる」という表現は冗長な可能性があります。
Context: ...の所有者は、cNFTの所有権を保持しながら、別のアカウントにdelegateすることができます。 {% .lead %} これにより、委任されたアカウント(**Dele...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/candy-machine/guards/allow-list.md

[uncategorized] ~288-~288: 「ことができる」という表現は冗長な可能性があります。
Context: ...うにmintArgs引数を使用してAllow Listガードのミント設定を渡すことができます。 ```ts import { getMerkleRoot } fro...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~345-~345: 「ことができる」という表現は冗長な可能性があります。
Context: ...Args`引数を使用してAllow Listガードの"Proof"ルート設定を渡すことができます。 ```ts import { getMerkleProof, ...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/bubblegum-v2/index.md

[uncategorized] ~45-~45: 「ことができる」という表現は冗長な可能性があります。
Context: ...この概要では、マークルツリーをリーフと呼ぶハッシュのコレクションと考えることができます。各リーフは、[圧縮NFTのデータをハッシュ化する](/jp/bubbleg...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~104-~104: 「ことができる」という表現は冗長な可能性があります。
Context: ...はありませんが、台帳内のすべての以前のトランザクションを見て、その情報を見つけることができます。 {% diagram %} {% node #tx-1 label=...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~147-~147: 「ことができる」という表現は冗長な可能性があります。
Context: ...ate-trees)を使用して、cNFTで実行できる特定の操作について詳しく学ぶことができます。最後に、cNFTとマークルツリーの知識を深めるための[高度なガイド](/j...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/bubblegum/verify-creators.md

[uncategorized] ~9-~9: 「ことができる」という表現は冗長な可能性があります。
Context: ...マーケットプレイスなどのアプリがどの作成者が本物でどの作成者がそうでないかを知ることができるため重要です。 作成者は[圧縮NFTをミント](/jp/bubblegum/m...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/bubblegum-v2/faq.md

[uncategorized] ~24-~24: 「ことができる」という表現は冗長な可能性があります。
Context: ...析は簡単ではありません。 幸いなことに、私たちのSDKは、以下のコード例で見ることができるように、すべての重い作業を行うヘルパーメソッドを提供します。圧縮NFTのアセット...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/candy-machine/guards/nft-burn.md

[grammar] ~167-~167: Ensure spelling is correct
Context: ...{% /dialect-switcher %} ## ルート命令 NFT Burnガードはルート命令をサポートしません。

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

src/pages/ja/bubblegum/guides/javascript/how-to-create-1000000-nfts-on-solana.md

[uncategorized] ~153-~153: 「ことができる」という表現は冗長な可能性があります。
Context: ...e tree。 - データ作成時にデータを保存しているインデクサからデータを読み取ることができるDAS対応RPC。 #### Merkle Tree Merkle Tr...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~157-~157: 「ことができる」という表現は冗長な可能性があります。
Context: ...Merkle Treeは、ほとんどの場合、cNFTデータの「データベース」と考えることができます。Merkle Treeが作成され、cNFTが満杯になるまで追加できます。...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~384-~384: 「ことができる」という表現は冗長な可能性があります。
Context: ...ロードし、cNFTをtreeにミントするループを作成するようにコードを調整し始めることができます。 Merkle Treeには100万個のcNFTのスペースがあるため、...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~386-~386: 「ことができる」という表現は冗長な可能性があります。
Context: ...のスペースがあるため、自由にループしてプロジェクトのニーズに応じてtreeを埋めることができます。 以下は、ループインデックスに基づいてcNFTに保存されたデータをイン...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/bubblegum/verify-collections.md

[uncategorized] ~9-~9: 「ことができる」という表現は冗長な可能性があります。
Context: ...クションの権限がこの圧縮NFTをコレクションの一部として承認したことを誰もが知ることができます。 NFTに関するコレクションの概念に馴染みがない場合、それらは他のNFT...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~11-~11: 「ことができる」という表現は冗長な可能性があります。
Context: ...ます。Metaplex Verified Collectionsについて詳しく読むことができます。 ...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/bubblegum-v2/verify-creators.md

[uncategorized] ~9-~9: 「ことができる」という表現は冗長な可能性があります。
Context: ...マーケットプレイスなどのアプリがどの作成者が本物でどの作成者がそうでないかを知ることができるため重要です。 作成者は、ミントトランザクションに署名することで、[圧縮NFT...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/amman/configuration.md

[uncategorized] ~98-~98: 「ことができる」という表現は冗長な可能性があります。
Context: ...ために、_matchFeatures_設定プロパティを介してその機能を一致させることができます: ```js module.exports = { validato...

(DOUSI_KOTOGADEKIRU)

SEO_EXAMPLE.md

[style] ~138-~138: ‘exact same’ might be wordy. Consider a shorter alternative.
Context: ...ng Tags ✅ All three versions have the exact same hreflang tags pointing to all alterna...

(EN_WORDINESS_PREMIUM_EXACT_SAME)

src/pages/ja/candy-machine/guard-route.md

[uncategorized] ~15-~15: 「ことができる」という表現は冗長な可能性があります。
Context: ...」命令と呼んでいます。 この機能により、ガードは独自のプログラムロジックを含むことができるため、さらに強力になります。これにより、ガードは以下のことができます: - 重...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~26-~26: 「ことができる」という表現は冗長な可能性があります。
Context: ...それぞれのページ](/jp/candy-machine/guards)で見つけることができます。 例を提供してルート命令の動作を説明するために少し時間を取りましょう。例...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/bubblegum-v2/transfer-cnfts.md

[uncategorized] ~21-~21: 「ことができる」という表現は冗長な可能性があります。
Context: ...。リーフ所有者またはpermanentTransferDelegateにすることができ、デフォルトではトランザクションのpayerです。 - **新しいリーフ所有...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/candy-machine/guards/freeze-sol-payment.md

[uncategorized] ~19-~19: 「ことができる」という表現は冗長な可能性があります。
Context: ...Freeze Escrowアカウントの初期化、NFTの解凍、資金のロック解除を行うことができます。 {% diagram %} {% node #initializ...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~134-~134: 「ことができる」という表現は冗長な可能性があります。
Context: ...Args`引数を使用してFreeze Sol Paymentガードのミント設定を渡すことができます。 ```ts mintV2(umi, { // ... mi...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~697-~697: 「ことができる」という表現は冗長な可能性があります。
Context: ...まま**です。 これを達成するにはいくつかの方法があり、2つのカテゴリに分けることができます: - ☀️ 解凍可能: 既存のフリーズされたNFTは、ルート命令...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/bubblegum/guides/javascript/how-to-interact-with-cnfts-on-other-svms.md

[uncategorized] ~38-~38: 「ことができる」という表現は冗長な可能性があります。
Context: ...innet-betaで使用されるのと同じcreateTree関数を使用して行うことができます。ただし、デフォルトのlogWrapperと`compressionP...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/bubblegum/mint-cnfts.md

[uncategorized] ~96-~96: 「ことができる」という表現は冗長な可能性があります。
Context: ...Verified**フィールドはtrueまたはfalseのいずれかとして渡すことができます。falseとして渡された場合、トランザクション中にtrueに設...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/candy-machine/guards/freeze-token-payment.md

[uncategorized] ~19-~19: 「ことができる」という表現は冗長な可能性があります。
Context: ...Freeze Escrowアカウントの初期化、NFTの解凍、資金のロック解除を行うことができます。 {% diagram %} {% node #initializ...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~143-~143: 「ことができる」という表現は冗長な可能性があります。
Context: ...gs`引数を使用してFreeze Token Paymentガードのミント設定を渡すことができます。 ```ts mintV2(umi, { // ... mi...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/bubblegum-v2/merkle-tree-canopy.md

[uncategorized] ~13-~13: 「ことができる」という表現は冗長な可能性があります。
Context: ...上位nレベルをキャッシュすることで、証明を最初のd - nノードに切り捨てることができます。これにより、アカウント圧縮トランザクションのサイズを削減し、10億以上...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/bubblegum/index.md

[uncategorized] ~44-~44: 「ことができる」という表現は冗長な可能性があります。
Context: ...この概要では、マークルツリーをリーフと呼ぶハッシュのコレクションと考えることができます。各リーフは、[圧縮NFTのデータをハッシュ化する](/jp/bubbleg...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~103-~103: 「ことができる」という表現は冗長な可能性があります。
Context: ...はありませんが、台帳内のすべての以前のトランザクションを見て、その情報を見つけることができます。 {% diagram %} {% node #tx-1 label=...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~145-~145: 「ことができる」という表現は冗長な可能性があります。
Context: ...ate-trees)を使用して、cNFTで実行できる特定の操作について詳しく学ぶことができます。最後に、cNFTとマークルツリーの知識を深めるための[高度なガイド](/j...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/candy-machine/custom-guards/generating-client.md

[uncategorized] ~71-~71: 「ことができる」という表現は冗長な可能性があります。
Context: ...あなたのニーズに合わせて使用できるテンプレートです。 ガードには任意の名前を付けることができますが、例ではcustomGuard.tsと名付けます: ```ts i...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~189-~189: 「ことができる」という表現は冗長な可能性があります。
Context: ...新しいガードクライアントにアクセスしたいプロジェクトフォルダーにリンク/移動することができます。 AVAの内蔵テストスイートを使用して、複数のシナリオでガードを完全にテ...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~191-~191: 「ことができる」という表現は冗長な可能性があります。
Context: ...とは価値があります。テストの例は/clients/js/testsで見つけることができます。

(DOUSI_KOTOGADEKIRU)

src/pages/ja/bubblegum-v2/sdk/rust.md

[uncategorized] ~95-~95: 「ことができる」という表現は冗長な可能性があります。
Context: ...、MPL-Bubblegum Rustクレート内のすべての命令に対して見つけることができる命令関数のCpiBuilderバージョンを使用することで簡単に実現できます...

(DOUSI_KOTOGADEKIRU)

src/pages/ja/bubblegum/decompress-cnfts.md

[uncategorized] ~15-~15: 「ことができる」という表現は冗長な可能性があります。
Context: ...ラットフォームとやりとりし、一般的にNFTエコシステムとの相互運用性を向上させることができます。 ## 解凍プロセス 圧縮NFTの解凍は、NFTの所有者によって開始さ...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~23-~23: 「ことができる」という表現は冗長な可能性があります。
Context: ...いは、所有者はCancel Redeem命令を使用してプロセスを逆転させることができ、これによりBubblegum tree上でリーフが復元され、Voucherア...

(DOUSI_KOTOGADEKIRU)

🪛 markdownlint-cli2 (0.18.1)
src/pages/ja/amman/cli-commands.md

10-10: Bare URL used

(MD034, no-bare-urls)


11-11: Bare URL used

(MD034, no-bare-urls)


13-13: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/amman/getting-started.md

17-17: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum-v2/collections.md

16-16: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


49-49: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum/sdk/rust.md

50-50: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum-v2/delegate-cnfts.md

50-50: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum/delegate-cnfts.md

70-70: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum/transfer-cnfts.md

50-50: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/candy-machine/guards.md

390-390: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/candy-machine/guards/allow-list.md

174-174: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


175-175: Trailing spaces
Expected: 0 or 2; Actual: 4

(MD009, no-trailing-spaces)


192-192: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


216-216: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


238-238: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


264-264: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


280-280: Link fragments should be valid

(MD051, link-fragments)


290-290: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


347-347: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


380-380: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


384-384: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum-v2/index.md

14-14: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


20-20: Bare URL used

(MD034, no-bare-urls)


22-22: Bare URL used

(MD034, no-bare-urls)


46-46: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum-v2/faq.md

60-60: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum-v2/sdk/index.md

13-13: Bare URL used

(MD034, no-bare-urls)

src/pages/ja/bubblegum-v2/create-trees.md

50-50: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum-v2/concurrent-merkle-trees.md

60-60: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/candy-machine/guards/nft-burn.md

61-61: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


62-62: Trailing spaces
Expected: 0 or 2; Actual: 4

(MD009, no-trailing-spaces)


92-92: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


110-110: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


135-135: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


157-157: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/aura/index.md

17-17: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum/guides/javascript/how-to-create-1000000-nfts-on-solana.md

50-50: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/aura/faq.md

18-18: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum-v2/delegate-trees.md

50-50: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum/verify-collections.md

99-99: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum/guides/index.md

15-15: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum-v2/verify-creators.md

94-94: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum-v2/burn-cnfts.md

49-49: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/amman/configuration.md

126-126: Files should end with a single newline character

(MD047, single-trailing-newline)

SEO_IMPLEMENTATION.md

48-48: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/candy-machine/guard-route.md

207-207: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum-v2/transfer-cnfts.md

50-50: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum-v2/hashed-nft-data.md

49-49: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/candy-machine/guards/freeze-sol-payment.md

19-19: Link fragments should be valid

(MD051, link-fragments)


79-79: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above

(MD022, blanks-around-headings)


162-162: Link fragments should be valid

(MD051, link-fragments)


163-163: Link fragments should be valid

(MD051, link-fragments)


164-164: Link fragments should be valid

(MD051, link-fragments)


165-165: Link fragments should be valid

(MD051, link-fragments)


166-166: Link fragments should be valid

(MD051, link-fragments)


167-167: Link fragments should be valid

(MD051, link-fragments)


168-168: Link fragments should be valid

(MD051, link-fragments)


169-169: Link fragments should be valid

(MD051, link-fragments)


170-170: Link fragments should be valid

(MD051, link-fragments)


214-214: Trailing spaces
Expected: 0 or 2; Actual: 4

(MD009, no-trailing-spaces)


215-215: Code block style
Expected: fenced; Actual: indented

(MD046, code-block-style)


274-274: Trailing spaces
Expected: 0 or 2; Actual: 4

(MD009, no-trailing-spaces)


275-275: Code block style
Expected: fenced; Actual: indented

(MD046, code-block-style)


346-346: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


428-428: Trailing spaces
Expected: 0 or 2; Actual: 4

(MD009, no-trailing-spaces)


429-429: Code block style
Expected: fenced; Actual: indented

(MD046, code-block-style)


497-497: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


583-583: Trailing spaces
Expected: 0 or 2; Actual: 4

(MD009, no-trailing-spaces)


584-584: Code block style
Expected: fenced; Actual: indented

(MD046, code-block-style)


656-656: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


765-765: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


766-766: Trailing spaces
Expected: 0 or 2; Actual: 4

(MD009, no-trailing-spaces)


767-767: Code block style
Expected: fenced; Actual: indented

(MD046, code-block-style)


792-792: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


793-793: Trailing spaces
Expected: 0 or 2; Actual: 4

(MD009, no-trailing-spaces)


794-794: Code block style
Expected: fenced; Actual: indented

(MD046, code-block-style)


812-812: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum/guides/javascript/how-to-interact-with-cnfts-on-other-svms.md

150-150: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum/mint-cnfts.md

21-21: Bare URL used

(MD034, no-bare-urls)


23-23: Bare URL used

(MD034, no-bare-urls)


47-47: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/candy-machine/guards/freeze-token-payment.md

19-19: Link fragments should be valid

(MD051, link-fragments)


79-79: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above

(MD022, blanks-around-headings)


172-172: Link fragments should be valid

(MD051, link-fragments)


173-173: Link fragments should be valid

(MD051, link-fragments)


174-174: Link fragments should be valid

(MD051, link-fragments)


175-175: Link fragments should be valid

(MD051, link-fragments)


176-176: Link fragments should be valid

(MD051, link-fragments)


177-177: Link fragments should be valid

(MD051, link-fragments)


178-178: Link fragments should be valid

(MD051, link-fragments)


179-179: Link fragments should be valid

(MD051, link-fragments)


180-180: Link fragments should be valid

(MD051, link-fragments)


267-267: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum/index.md

50-50: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/candy-machine/custom-guards/generating-client.md

50-50: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/amman/pre-made-configs.md

88-88: Hard tabs
Column: 52

(MD010, no-hard-tabs)


206-206: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum-v2/sdk/rust.md

50-50: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/candy-machine/guards/gatekeeper.md

65-65: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


66-66: Trailing spaces
Expected: 0 or 2; Actual: 4

(MD009, no-trailing-spaces)


87-87: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


95-95: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above

(MD022, blanks-around-headings)


108-108: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


129-129: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


156-156: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


166-166: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


180-180: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/candy-machine/guards/mint-limit.md

61-61: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


62-62: Trailing spaces
Expected: 0 or 2; Actual: 4

(MD009, no-trailing-spaces)


92-92: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


110-110: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


135-135: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


157-157: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum/update-cnfts.md

72-72: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum/decompress-cnfts.md

57-57: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/bubblegum-v2/fetch-cnfts.md

39-39: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


40-40: Files should end with a single newline character

(MD047, single-trailing-newline)

src/pages/ja/candy-machine/guards/allocation.md

174-174: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


175-175: Trailing spaces
Expected: 0 or 2; Actual: 4

(MD009, no-trailing-spaces)


192-192: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


216-216: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)


238-238: Code block style
Expected: indented; Actual: fenced

(MD046, code-block-style)

src/pages/ja/aura/reading-solana-and-svm-data.md

17-17: Files should end with a single newline character

(MD047, single-trailing-newline)

🔇 Additional comments (50)
src/pages/ja/bubblegum-v2/hashed-nft-data.md (1)

1-30: LGTM — Japanese localization and frontmatter are well-structured.

The YAML frontmatter is properly formatted with title, metaTitle, and description in Japanese. The Rust code block accurately documents the MetadataArgsV2 struct with appropriate Japanese field documentation comments. The translation and technical terminology appear contextually sound.

src/pages/ja/bubblegum-v2/update-cnfts.md (3)

7-35: LGTM — Markdoc structure and section organization are solid.

The documentation follows a clear hierarchical structure with proper markdown heading levels (## for main sections, ### for subsections). The introduction effectively frames the two update authorities, and the content flows logically.


37-74: I'll search for the Bubblegum V2 API documentation to verify the code example accuracy.


The code example accurately implements the Bubblegum V2 API: imports are correct, the UpdateArgsArgs type properly uses some() wrappers for optional fields like name and uri, and the updateMetadataV2 function signature with parameters (leafOwner, currentMetadata, optional authority, optional coreCollection) matches the official API. The Markdoc dialect-switcher syntax is valid, and the Japanese comments align with the documented functionality. No corrections needed.


1-5: Frontmatter structure is correct and consistent with codebase conventions — no changes needed.

The YAML frontmatter in the file matches the pattern used across all other Japanese localized pages. The codebase uses directory structure (src/pages/ja/) for i18n routing rather than metadata fields. No locale-specific fields (like locale: ja) are present anywhere in the sampled frontmatter from 50+ Japanese pages, confirming this is the established pattern.

src/components/TableOfContent.jsx (3)

13-13: Good defensive improvement.

Returning null explicitly (rather than undefined) makes the intent clearer and pairs well with the filter(Boolean) on line 21.


21-21: Excellent addition to filter out missing elements.

The filter(Boolean) safely removes any null or undefined entries from the headings array, preventing potential crashes downstream.


29-31: Robust null-safety improvements.

The optional chaining on line 29 (headings[0]?.id) and the guard clause on line 31 (if (heading && top >= heading.top)) both gracefully handle cases where elements might be missing from the DOM. This prevents runtime errors when headings are unavailable.

src/components/products/mpl-hybrid/index.js (1)

100-179: LGTM! Localization data properly structured.

The localizedNavigation structure follows the established pattern and includes complete translations for all sections and links across English, Japanese, and Korean locales.

src/components/products/inscription/index.js (1)

69-133: LGTM! Localization data properly structured.

The localizedNavigation structure is consistent with the project's localization pattern and includes complete translations for all navigation sections and links.

src/components/products/tokenMetadata/index.js (1)

111-214: LGTM! Comprehensive localization data.

The localizedNavigation includes complete translations for all sections (Introduction, Features, Guides, Javascript) and links across English, Japanese, and Korean locales.

src/components/products/legacyDocumentation/index.js (1)

111-211: LGTM! Legacy documentation localization complete.

The localizedNavigation properly covers all legacy product sections including Auction House, Developer Tools, Fixed Price Sale, Gumdrop, Mobile SDKs, and Token Entangler with translations for all three supported locales.

src/pages/ja/bubblegum/verify-creators.md (1)

1-57: LGTM! Well-structured Japanese documentation.

The documentation page properly explains the creator verification process for compressed NFTs with clear code examples using the @metaplex-foundation/mpl-bubblegum library.

src/pages/ja/bubblegum-v2/merkle-tree-canopy.md (1)

1-33: LGTM! Well-structured Japanese documentation.

The technical content is accurate and comprehensive, covering MTU constraints, canopy caching mechanics, storage costs, and trade-offs. The table format and markdown structure follow best practices.

Note: The static analysis hint about "ことができます" being verbose is a stylistic suggestion that's acceptable in technical documentation context.

src/middleware.js (1)

62-62: LGTM! Helpful clarification.

The comment improves code readability by clearly indicating the purpose of the redirect logic.

src/pages/ja/aura/blockchains/solana.md (1)

1-13: LGTM! Clear and concise endpoint documentation.

The page structure follows the established pattern and provides the necessary Aura endpoint information for Solana.

src/components/products/candyMachine/index.js (1)

208-278: LGTM! Comprehensive multilingual navigation support.

The localized navigation structure is well-organized and consistent across all three languages (en, ja, ko). The translations cover all necessary sections and links, aligning with the i18n framework introduced in this PR.

src/pages/ja/aura/blockchains/eclipse.md (1)

1-13: LGTM! Clear endpoint documentation.

The page follows the established pattern and provides the necessary Aura endpoint information for Eclipse SVM.

src/components/products/coreCandyMachine/index.js (1)

325-419: LGTM!

The localized navigation structure is well-organized and consistent across all three locales (en, ja, ko). The mappings provide proper translations for UI labels without altering any runtime logic.

src/components/Header.jsx (2)

5-5: LGTM!

Clean import of the LanguageSwitcher component.


79-81: LGTM!

The LanguageSwitcher is properly integrated into the header with appropriate responsive styling (hidden sm:block), consistent with other header elements.

src/components/products/amman/index.js (1)

35-78: LGTM!

The localized navigation structure is well-organized and provides proper translations across all three locales (en, ja, ko). The implementation is consistent with other product modules in the PR.

src/pages/_app.jsx (3)

19-25: LGTM: Clean separation of concerns with LocaleProvider wrapper.

The top-level LocaleProvider wrapping ensures locale context is available throughout the app before any components render. This is the correct placement for a context provider that needs to be accessible globally.


27-57: LGTM: AppContent component properly extracts rendering logic.

The extraction of AppContent as a separate component is well-structured. It correctly:

  • Calls usePage(pageProps) to derive page metadata including locale
  • Passes the locale-aware page data to SEOHead
  • Maintains the existing DialectProvider → Layout → Component hierarchy

32-37: LGTM: Centralized SEO metadata handling.

Replacing inline Head tags with the SEOHead component centralizes SEO logic and enables locale-aware metadata generation (canonical URLs, hreflang alternates, og:locale, etc.). The props flow is correct: page.title, page.description, page.metaTitle, and page.locale are all sourced from the usePage hook.

src/pages/ja/candy-machine/getting-started/rust.md (1)

1-20: LGTM: Japanese documentation is well-structured.

The documentation provides clear information about using the Rust SDK with Candy Machine, including:

  • Appropriate explanation of use cases (Rust clients, CPI calls)
  • Complete reference links for both required libraries (Candy Machine Core and Candy Guard)
  • Proper Japanese translations in frontmatter and content
src/pages/ja/bubblegum-v2/freeze-cnfts.md (1)

1-50: LGTM: Comprehensive freeze/thaw documentation with code examples.

The documentation effectively demonstrates:

  • The freezeV2 instruction usage with proper imports
  • Two delegate scenarios (leaf delegate and permanent freeze delegate)
  • Correct parameter usage including leafOwner, authority, leafDelegate, and coreCollection

The code examples are syntactically correct and follow best practices.

src/pages/ja/bubblegum/create-trees.md (1)

1-50: LGTM: Excellent documentation of Bubblegum tree creation.

This documentation effectively covers:

  • Clear explanation of the two required accounts (Merkle tree and tree config PDA)
  • Visual diagram showing the relationship between accounts
  • Detailed parameter descriptions (maxDepth, maxBufferSize)
  • Practical compatibility table with recommended configurations and cost analysis

The Japanese translations are clear and well-structured.

src/components/products/bubblegum-v2/index.js (1)

93-190: LGTM: Complete localization data for three languages.

The localizedNavigation provides comprehensive translations for:

  • Headlines and descriptions
  • All navigation sections (Introduction, SDK, Features, Advanced)
  • All navigation links across all sections

All three languages (en, ja, ko) appear to have complete and consistent data.

src/pages/404.js (2)

1-14: LGTM: Properly localized 404 page.

The Custom404 component correctly:

  • Uses the useLocale hook to access the translation function
  • Renders locale-aware messages via t('404.message') and t('404.callToAction')
  • Includes the MarkdocGrid for navigation

16-28: LGTM: Hardcoded English frontmatter is intentional.

The hardcoded English strings in getStaticProps serve as lookup keys for localization. According to the usePage.js logic (lines 17-20 in relevant code snippets), there is special handling that detects these specific English strings and translates them using t('404.title') and t('404.metaTitle').

This is the correct implementation pattern for the 404 page in this i18n architecture.

src/locales/ko.json (1)

1-63: LGTM! Korean locale file is well-structured.

The Korean locale JSON file is properly structured with all necessary translation keys for navigation, sections, UI elements, header, meta descriptions, and the 404 page. The JSON syntax is valid and the translations appear comprehensive.

src/locales/ja.json (1)

1-63: LGTM! Well-structured translation file.

The Japanese translation file is comprehensive and well-organized, covering all necessary UI elements, navigation items, and metadata. The JSON structure is valid and consistent with the i18n infrastructure introduced in this PR.

src/components/NavList.jsx (1)

18-25: LGTM! Well-implemented translation helper.

The getTranslatedCategory function properly maps category keys to translated strings with appropriate fallbacks.

src/pages/ja/bubblegum-v2/sdk/javascript.md (1)

1-46: The script confirms a systematic issue: 500+ internal links across Japanese documentation files use /jp/ instead of /ja/. However, before confirming this as an error requiring fixes, verification is needed on the intended link routing convention.

Clarification required:

  1. Should locale-specific files under src/pages/ja/ use /ja/ prefixes in internal links for consistency with their directory path?
  2. Or is /jp/ an intentional global routing prefix regardless of locale directory?

Check routing configuration or similar patterns in non-Japanese locale directories (e.g., en/, es/) to establish the correct convention before proceeding with systematic corrections.

src/components/products/tokenAuthRules/index.js (1)

109-194: LGTM! Well-structured localization implementation.

The localizedNavigation addition follows the established pattern and provides complete translations for English, Japanese, and Korean. All section titles and link labels from the original navigation structure are properly mapped, ensuring consistent multilingual support.

src/pages/ja/candy-machine/guards/bot-tax.md (1)

1-137: LGTM! Comprehensive documentation with important warnings.

The Bot Tax guard documentation is well-structured and includes critical warnings about wallet behavior (Solflare, Phantom auto-injecting Lighthouse commands). The explanation of how the guard works and its impact on transaction success is clear and helpful for users.

src/locales/en.json (1)

1-63: LGTM! Well-organized locale structure.

The English locale file provides a clean, hierarchical structure for UI translations with logical groupings (navigation, sections, ui, header, meta, 404). The keys are descriptive and the content is appropriate for the Metaplex Developer Hub.

SEO_EXAMPLE.md (1)

1-223: LGTM! Excellent SEO documentation.

This documentation provides a comprehensive guide to the multilingual SEO implementation with clear examples, proper explanation of hreflang, canonical URLs, and og:locale tags. The inclusion of validation tools and the explanation of how search engines use these tags is particularly valuable for maintainers and contributors.

src/components/products/global/index.js (1)

57-133: LGTM!

The localized navigation structure is complete and consistent across all three locales (en, ja, ko). All section and link keys are properly translated.

src/components/products/bubblegum/index.js (1)

115-224: LGTM!

The localized navigation is complete and consistent across all three locales. All sections and links are properly translated.

src/components/products/guides/index.js (1)

222-355: LGTM!

The localized navigation structure is complete and well-organized. All sections and links are properly translated across all three locales (en, ja, ko).

src/pages/ja/bubblegum/delegate-trees.md (1)

1-57: File appears to be incomplete in the provided code review context.

The file ends with an unclosed code fence (````), suggesting the content provided is truncated. Please ensure the complete file is available for full review and that it ends with a single newline character per markdown standards (MD047).

src/pages/ja/bubblegum-v2/delegate-cnfts.md (1)

11-13: Verify internal link paths align with new locale structure.

Lines 11–13 use old locale path structure (/jp/bubblegum-v2/transfer-cnfts, /jp/bubblegum-v2/burn-cnfts, etc.). Per the SEO implementation and i18n changes, these should likely be updated to the new ISO 639-1 standard (/ja/ instead of /jp/).

Check if the related documentation pages (transfer-cnfts.md, burn-cnfts.md, freeze-cnfts.md) exist at:

  • Old paths: /jp/bubblegum-v2/transfer-cnfts etc.
  • New paths: /ja/bubblegum-v2/transfer-cnfts etc.

Update links accordingly.

src/pages/ja/bubblegum-v2/stored-nft-data.md (1)

1-48: File appears to be incomplete in the provided code review context.

The file is cut off mid-diagram at line 48, with an incomplete code fence. The provided code does not show the full file content. Please ensure the complete file is provided for review, and verify it ends with a single newline character per markdown standards (MD047).

SEO_IMPLEMENTATION.md (1)

1-48: Documentation file is comprehensive and well-structured. ✅

The SEO_IMPLEMENTATION.md document provides clear, detailed guidance on the multilingual SEO implementation. The structure, explanations, and examples are appropriate for developer reference. The document clearly explains:

  • Language code standardization rationale
  • Component and file changes
  • SEO feature implementation
  • URL structure patterns
  • Instructions for adding future languages

The static analysis flag for missing trailing newline on line 48 appears to be a false positive for this documentation file (not a markdown page).

src/pages/ja/bubblegum-v2/mint-cnfts.md (1)

1-40: File appears to be incomplete in the provided code review context.

The file is cut off mid-code-block at line 40. The provided code does not show the complete file or its ending. Please ensure the complete file is provided for full review, including verification that it ends with a single newline character per markdown standards (MD047).

src/pages/ja/bubblegum/mint-cnfts.md (1)

1-195: Remove or correct /jp/ prefixed links from src/pages/ja/bubblegum/mint-cnfts.md.

The script confirms that this file contains /jp/ links at lines 7 and 10:

  • Line 7: [Bubblegum v2](/jp/bubblegum-v2/mint-cnfts)
  • Line 10: [前のページ](/jp/bubblegum/create-trees)

For consistency with other JA documentation, these root-relative /jp/ links should be replaced with relative paths (e.g., ../bubblegum-v2/mint-cnfts and ./create-trees) or reviewed to ensure the site's routing handles them correctly. The scan reveals this pattern is widespread across JA pages, indicating either a systematic issue or intentional design that needs clarification.

src/pages/ja/bubblegum/guides/javascript/how-to-create-1000000-nfts-on-solana.md (1)

188-214: Cost warning: ensure devnet-only emphasis and exact SOL.

Text says “約7.7 SOL”. Confirm against current program rent; otherwise annotate as approximate and devnet-only, which you already did—LGTM.

src/components/products/aura/index.js (1)

48-88: LGTM on localizedNavigation.

Structure mirrors base navigation and keys match titles; translations read well. No blocking issues.

src/components/helperComponents/guideIndex.jsx (1)

377-382: Localization helpers look good once locale codes are fixed.

The getLocalizedText and getLocalizedPath helper functions are well-implemented. Once the locale code mismatch is resolved (using ja/ko instead of jp/kr), these will correctly handle the locale-aware rendering and path generation.

Also applies to: 420-423

tonyboylehub and others added 2 commits October 22, 2025 12:41
Updated next-intl from ^4.3.5 to ^4.3.12 (installed 4.4.0).
Updated pnpm-lock.yaml to reflect the new version.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@tonyboylehub tonyboylehub merged commit 2cfbbd2 into main Oct 24, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants