Pārlūkot izejas kodu

fixed coderabbit comments

Tony Boyle 1 mēnesi atpakaļ
vecāks
revīzija
ac89881b55
100 mainītis faili ar 1706 papildinājumiem un 651 dzēšanām
  1. 2 1
      package.json
  2. 112 0
      scripts/validate-translations.js
  3. 3 7
      src/components/NavList.jsx
  4. 8 16
      src/components/products/Grid.jsx
  5. 87 93
      src/components/products/bubblegum-v2/index.js
  6. 48 150
      src/components/products/das-api/index.js
  7. 168 0
      src/config/TRANSLATIONS_REVIEW.md
  8. 340 0
      src/config/TRANSLATION_SYSTEM.md
  9. 31 0
      src/config/languages.js
  10. 523 0
      src/config/navigation-translations.js
  11. 2 4
      src/i18n.js
  12. 2 2
      src/pages/ja/amman/index.md
  13. 1 1
      src/pages/ja/aura/index.md
  14. 2 2
      src/pages/ja/bubblegum-v2/burn-cnfts.md
  15. 3 3
      src/pages/ja/bubblegum-v2/collections.md
  16. 4 4
      src/pages/ja/bubblegum-v2/delegate-cnfts.md
  17. 1 1
      src/pages/ja/bubblegum-v2/delegate-trees.md
  18. 1 1
      src/pages/ja/bubblegum-v2/faq.md
  19. 2 2
      src/pages/ja/bubblegum-v2/fetch-cnfts.md
  20. 3 1
      src/pages/ja/bubblegum-v2/hashed-nft-data.md
  21. 16 16
      src/pages/ja/bubblegum-v2/index.md
  22. 1 1
      src/pages/ja/bubblegum-v2/mint-cnfts.md
  23. 2 2
      src/pages/ja/bubblegum-v2/sdk/index.md
  24. 3 3
      src/pages/ja/bubblegum-v2/sdk/javascript.md
  25. 2 2
      src/pages/ja/bubblegum-v2/sdk/rust.md
  26. 2 2
      src/pages/ja/bubblegum-v2/stored-nft-data.md
  27. 2 2
      src/pages/ja/bubblegum-v2/transfer-cnfts.md
  28. 3 3
      src/pages/ja/bubblegum-v2/verify-creators.md
  29. 2 2
      src/pages/ja/bubblegum/burn-cnfts.md
  30. 1 1
      src/pages/ja/bubblegum/decompress-cnfts.md
  31. 3 3
      src/pages/ja/bubblegum/delegate-cnfts.md
  32. 1 1
      src/pages/ja/bubblegum/delegate-trees.md
  33. 2 2
      src/pages/ja/bubblegum/guides/index.md
  34. 1 1
      src/pages/ja/bubblegum/guides/javascript/how-to-create-1000000-nfts-on-solana.md
  35. 1 1
      src/pages/ja/bubblegum/guides/javascript/how-to-interact-with-cnfts-on-other-svms.md
  36. 14 14
      src/pages/ja/bubblegum/index.md
  37. 3 3
      src/pages/ja/bubblegum/mint-cnfts.md
  38. 2 2
      src/pages/ja/bubblegum/sdk/index.md
  39. 3 3
      src/pages/ja/bubblegum/sdk/javascript.md
  40. 2 2
      src/pages/ja/bubblegum/sdk/rust.md
  41. 2 2
      src/pages/ja/bubblegum/transfer-cnfts.md
  42. 3 3
      src/pages/ja/bubblegum/verify-collections.md
  43. 2 2
      src/pages/ja/bubblegum/verify-creators.md
  44. 3 3
      src/pages/ja/candy-machine/getting-started/index.md
  45. 1 1
      src/pages/ja/candy-machine/getting-started/js.md
  46. 4 4
      src/pages/ja/candy-machine/guard-groups.md
  47. 4 4
      src/pages/ja/candy-machine/guard-route.md
  48. 20 20
      src/pages/ja/candy-machine/guards.md
  49. 1 1
      src/pages/ja/candy-machine/guards/mint-limit.md
  50. 2 2
      src/pages/ja/candy-machine/guides/airdrop-mint-to-another-wallet.md
  51. 1 1
      src/pages/ja/candy-machine/guides/create-an-nft-collection-on-solana-with-candy-machine.md
  52. 2 2
      src/pages/ja/candy-machine/guides/index.md
  53. 17 17
      src/pages/ja/candy-machine/index.md
  54. 3 3
      src/pages/ja/candy-machine/insert-items.md
  55. 8 8
      src/pages/ja/candy-machine/manage.md
  56. 8 8
      src/pages/ja/candy-machine/mint.md
  57. 6 6
      src/pages/ja/candy-machine/pnfts.md
  58. 5 5
      src/pages/ja/candy-machine/settings.md
  59. 2 2
      src/pages/ja/cli/config/rpcs.md
  60. 2 2
      src/pages/ja/cli/config/wallets.md
  61. 9 9
      src/pages/ja/cli/index.md
  62. 3 3
      src/pages/ja/cli/installation.md
  63. 3 3
      src/pages/ja/cli/toolbox/sol-balance.md
  64. 3 3
      src/pages/ja/cli/toolbox/token-transfer.md
  65. 1 1
      src/pages/ja/contact.md
  66. 2 2
      src/pages/ja/core-candy-machine/anti-bot-protection-best-practices.md
  67. 2 2
      src/pages/ja/core-candy-machine/create.md
  68. 4 4
      src/pages/ja/core-candy-machine/guard-groups.md
  69. 4 4
      src/pages/ja/core-candy-machine/guard-route.md
  70. 31 31
      src/pages/ja/core-candy-machine/guards.md
  71. 2 2
      src/pages/ja/core-candy-machine/guides/index.md
  72. 2 2
      src/pages/ja/core-candy-machine/index.md
  73. 7 7
      src/pages/ja/core-candy-machine/mint.md
  74. 5 5
      src/pages/ja/core-candy-machine/overview.md
  75. 2 2
      src/pages/ja/core-candy-machine/preparing-assets.md
  76. 2 2
      src/pages/ja/core-candy-machine/sdk/index.md
  77. 2 2
      src/pages/ja/core-candy-machine/update.md
  78. 1 1
      src/pages/ja/core/collections.md
  79. 7 7
      src/pages/ja/core/create-asset.md
  80. 7 7
      src/pages/ja/core/faq.md
  81. 2 2
      src/pages/ja/core/fetch.md
  82. 8 8
      src/pages/ja/core/guides/index.md
  83. 6 6
      src/pages/ja/core/index.md
  84. 2 2
      src/pages/ja/core/plugins/adding-plugins.md
  85. 19 19
      src/pages/ja/core/plugins/index.md
  86. 2 2
      src/pages/ja/core/sdk/index.md
  87. 3 3
      src/pages/ja/core/sdk/javascript.md
  88. 2 2
      src/pages/ja/core/sdk/rust.md
  89. 5 5
      src/pages/ja/core/tm-differences.md
  90. 1 1
      src/pages/ja/core/transfer.md
  91. 1 1
      src/pages/ja/core/update.md
  92. 12 12
      src/pages/ja/das-api/core-extension/index.md
  93. 7 7
      src/pages/ja/das-api/display-options.md
  94. 3 3
      src/pages/ja/das-api/getting-started.md
  95. 4 4
      src/pages/ja/das-api/guides/collection-statistics.md
  96. 4 4
      src/pages/ja/das-api/guides/find-compressed-nfts.md
  97. 5 5
      src/pages/ja/das-api/guides/find-token-holders.md
  98. 5 5
      src/pages/ja/das-api/guides/get-collection-nfts.md
  99. 6 6
      src/pages/ja/das-api/guides/get-fungible-assets.md
  100. 5 5
      src/pages/ja/das-api/guides/get-nfts-by-owner.md

+ 2 - 1
package.json

@@ -7,7 +7,8 @@
     "build": "next build",
     "start": "next start",
     "lint": "next lint",
-    "sitemap": "node generate-sitemap.mjs"
+    "sitemap": "node generate-sitemap.mjs",
+    "validate-translations": "node scripts/validate-translations.js"
   },
   "browserslist": "defaults, not ie <= 11",
   "dependencies": {

+ 112 - 0
scripts/validate-translations.js

@@ -0,0 +1,112 @@
+#!/usr/bin/env node
+
+/**
+ * Build-time validation script for navigation translations
+ *
+ * This script validates that all products have complete translations
+ * for all required locales. It helps prevent maintenance drift by
+ * ensuring that when navigation structure changes, translations are
+ * kept in sync.
+ *
+ * Usage:
+ *   node scripts/validate-translations.js
+ *   node scripts/validate-translations.js --fail-on-warning
+ */
+
+const { products } = require('../src/components/products/index.js')
+const {
+  validateProductTranslations,
+  extractNavigationKeys,
+  generateTranslationTemplate
+} = require('../src/utils/navigation-localization.js')
+
+const REQUIRED_LOCALES = ['ja', 'ko']
+const FAIL_ON_WARNING = process.argv.includes('--fail-on-warning')
+const GENERATE_TEMPLATE = process.argv.includes('--generate-template')
+
+console.log('Validating navigation translations...\n')
+
+let hasErrors = false
+let hasWarnings = false
+const allResults = []
+
+products.forEach(product => {
+  // Skip products without navigation
+  if (!product.sections || product.sections.length === 0) {
+    return
+  }
+
+  const keys = extractNavigationKeys(product)
+
+  // Skip products with no navigable content
+  if (keys.sections.length === 0 && keys.links.length === 0) {
+    return
+  }
+
+  console.log(`Checking ${product.name}...`)
+
+  // Generate template if requested
+  if (GENERATE_TEMPLATE && (!product.localizedNavigation || Object.keys(product.localizedNavigation).length === 0)) {
+    console.log(`  Template for ${product.name}:`)
+    REQUIRED_LOCALES.forEach(locale => {
+      const template = generateTranslationTemplate(product, locale)
+      console.log(`  ${locale}:`, JSON.stringify(template, null, 2))
+    })
+    console.log()
+    return
+  }
+
+  const validation = validateProductTranslations(product, REQUIRED_LOCALES)
+  allResults.push({ product: product.name, validation })
+
+  if (!validation.isValid) {
+    hasErrors = true
+    console.log(`  ❌ Validation failed`)
+    validation.errors.forEach(error => {
+      console.log(`     - ${error}`)
+    })
+  } else {
+    console.log(`  ✅ All translations complete`)
+  }
+
+  // Show detailed results for each locale
+  Object.entries(validation.results).forEach(([locale, result]) => {
+    if (!result.isValid) {
+      hasWarnings = true
+      console.log(`  Locale ${locale}:`)
+      if (result.missing.sections.length > 0) {
+        console.log(`    Missing sections: ${result.missing.sections.join(', ')}`)
+      }
+      if (result.missing.links.length > 0) {
+        console.log(`    Missing links: ${result.missing.links.join(', ')}`)
+      }
+      if (result.missing.headline) {
+        console.log(`    Missing headline`)
+      }
+      if (result.missing.description) {
+        console.log(`    Missing description`)
+      }
+    }
+  })
+
+  console.log()
+})
+
+// Summary
+console.log('Summary:')
+console.log(`  Total products validated: ${allResults.length}`)
+console.log(`  Products with errors: ${allResults.filter(r => !r.validation.isValid).length}`)
+console.log(`  Products with warnings: ${allResults.filter(r => Object.values(r.validation.results).some(v => !v.isValid)).length}`)
+
+if (hasErrors || (FAIL_ON_WARNING && hasWarnings)) {
+  console.log('\n❌ Translation validation failed!')
+  console.log('Please ensure all navigation items have translations for all required locales.')
+  process.exit(1)
+} else if (hasWarnings) {
+  console.log('\n⚠️  Some warnings found, but validation passed.')
+  console.log('Consider adding missing translations for better localization coverage.')
+  process.exit(0)
+} else {
+  console.log('\n✅ All translations validated successfully!')
+  process.exit(0)
+}

+ 3 - 7
src/components/NavList.jsx

@@ -5,15 +5,11 @@ import Link from 'next/link'
 import { SwitcherPopover } from './products/SwitcherPopover'
 import { productCategories } from './products/index'
 import { useTranslations, useLocale } from '@/contexts/LocaleContext'
+import { getLocalizedHref } from '@/config/languages'
 
 const NavList = () => {
   const t = useTranslations('header')
   const { locale } = useLocale()
-  
-  const getLocalizedHref = (path) => {
-    if (locale === 'en') return path
-    return `/${locale}${path}`
-  }
 
   const getTranslatedCategory = (category) => {
     const categoryMap = {
@@ -29,7 +25,7 @@ const NavList = () => {
       {productCategories.map((item, index) => {
         if (item === 'Aura') {
           return (
-            <Link href={getLocalizedHref("/aura")} key={index}>
+            <Link href={getLocalizedHref("/aura", locale)} key={index}>
               <div className="-mx-4 -my-2 rounded-lg px-4 py-2 text-black dark:text-white">
                 {getTranslatedCategory(item)}
               </div>
@@ -48,7 +44,7 @@ const NavList = () => {
         )
       })}
       <div className="hidden flex-col lg:flex">
-        <Link href={getLocalizedHref("/guides")}>
+        <Link href={getLocalizedHref("/guides", locale)}>
           <div className="-mx-4 -my-2 rounded-lg px-4 py-2 text-black dark:text-white">
             {t('guides', 'Guides')}
           </div>

+ 8 - 16
src/components/products/Grid.jsx

@@ -2,6 +2,7 @@ import Link from 'next/link';
 import { IconWithName } from './IconWithName';
 import { products as allProducts } from './index';
 import { useLocale } from '@/contexts/LocaleContext';
+import { getLocalizedHref } from '@/config/languages';
 
 export function Grid({
   onClick,
@@ -17,30 +18,21 @@ export function Grid({
 
   // Localize product headlines and descriptions
   const localizeProduct = (product) => {
-    if (locale === 'en' || !product.localizedNavigation) return product
+    if (locale === 'en' || !product.localizedNavigation || !product.localizedNavigation[locale]) {
+      return product
+    }
 
     const localizedProduct = { ...product }
-    const productNav = product.localizedNavigation[locale] || product.localizedNavigation['en']
-    
+    const productNav = product.localizedNavigation[locale]
+
     if (productNav.headline) {
       localizedProduct.headline = productNav.headline
     }
     if (productNav.description) {
       localizedProduct.description = productNav.description
     }
-    
-    return localizedProduct
-  }
 
-  const getLocalizedHref = (path) => {
-    // Handle external URLs - don't add locale prefix
-    if (path.startsWith('http://') || path.startsWith('https://') || path.startsWith('//')) {
-      return path
-    }
-    
-    // Handle internal paths
-    if (locale === 'en') return `/${path}`
-    return `/${locale}/${path}`
+    return localizedProduct
   }
 
   let className = `relative grid sm:grid-cols-2 grid-cols-1`
@@ -52,7 +44,7 @@ export function Grid({
         return (
           <li key={product.path || product.href}>
             <Link
-              href={getLocalizedHref(product.href || product.path)}
+              href={getLocalizedHref(product.href || product.path, locale)}
               className="block content-start rounded-lg p-3 hover:bg-slate-50 hover:dark:bg-slate-700"
               onClick={onClick}
               {...(product.target && { target: product.target })}

+ 87 - 93
src/components/products/bubblegum-v2/index.js

@@ -5,6 +5,7 @@ import {
 } from '@/shared/sections';
 import { FolderIcon } from '@heroicons/react/24/solid';
 import { Hero } from './Hero';
+import { buildProductTranslations } from '@/config/navigation-translations';
 
 export const bubblegumv2 = {
   name: 'Bubblegum v2',
@@ -90,102 +91,95 @@ export const bubblegumv2 = {
       target: '_blank'
     },
   ],
-  localizedNavigation: {
-    en: {
-      headline: 'Improved Compressed NFTs',
-      description: 'NFTs that scale to new orders of magnitude.',
-      sections: {
-        'Introduction': 'Introduction',
-        'SDK': 'SDK',
-        'Features': 'Features',
-        'Advanced': 'Advanced'
-      },
-      links: {
-        'Overview': 'Overview',
-        'Metaplex DAS API RPCs': 'Metaplex DAS API RPCs',
-        'FAQ': 'FAQ',
-        'Javascript': 'Javascript',
-        'Rust': 'Rust',
-        'Creating Bubblegum Trees': 'Creating Bubblegum Trees',
-        'Minting Compressed NFTs (cNFTs)': 'Minting Compressed NFTs (cNFTs)',
-        'Fetching cNFTs': 'Fetching cNFTs',
-        'Transferring cNFTs': 'Transferring cNFTs',
-        'Freeze and Thaw cNFTs': 'Freeze and Thaw cNFTs',
-        'Updating cNFTs': 'Updating cNFTs',
-        'Burning cNFTs': 'Burning cNFTs',
-        'Delegating cNFTs': 'Delegating cNFTs',
-        'Delegating Trees': 'Delegating Trees',
-        'Collections': 'Collections',
-        'Verifying Creators': 'Verifying Creators',
-        'Concurrent Merkle Trees': 'Concurrent Merkle Trees',
-        'Storing and Indexing NFT Data': 'Storing and Indexing NFT Data',
-        'Hashing NFT Data': 'Hashing NFT Data',
-        'Merkle Tree Canopy': 'Merkle Tree Canopy'
-      }
+  // Hybrid approach: Keep product display (headline/desc) in product file for easy editing
+  // Use centralized keys for common navigation terms, inline for product-specific terms
+  localizedNavigation: buildProductTranslations({
+    // Product display translations - edit right here!
+    headlineTranslations: {
+      ja: '改良された圧縮NFT',
+      ko: '개선된 압축 NFT'
     },
-    ja: {
-      headline: '改良された圧縮NFT',
-      description: '新たな桁のスケールを実現するNFT。',
-      sections: {
-        'Introduction': '紹介',
-        'SDK': 'SDK', 
-        'Features': '機能',
-        'Advanced': '高度'
-      },
-      links: {
-        'Overview': '概要',
-        'Metaplex DAS API RPCs': 'Metaplex DAS API RPC',
-        'FAQ': 'よくある質問',
-        'Javascript': 'JavaScript',
-        'Rust': 'Rust',
-        'Creating Bubblegum Trees': 'Bubblegumツリーの作成',
-        'Minting Compressed NFTs (cNFTs)': '圧縮NFT(cNFT)のミント',
-        'Fetching cNFTs': 'cNFTの取得',
-        'Transferring cNFTs': 'cNFTの転送',
-        'Freeze and Thaw cNFTs': 'cNFTの凍結と解凍',
-        'Updating cNFTs': 'cNFTの更新',
-        'Burning cNFTs': 'cNFTのバーン',
-        'Delegating cNFTs': 'cNFTのデリゲート',
-        'Delegating Trees': 'ツリーのデリゲート',
-        'Collections': 'コレクション',
-        'Verifying Creators': '作成者の検証',
-        'Concurrent Merkle Trees': '同時マークルツリー',
-        'Storing and Indexing NFT Data': 'NFTデータの保存とインデックス化',
-        'Hashing NFT Data': 'NFTデータのハッシュ化',
-        'Merkle Tree Canopy': 'マークルツリーキャノピー'
-      }
+    descriptionTranslations: {
+      ja: '新たな桁のスケールを実現するNFT。',
+      ko: '새로운 차원의 확장성을 제공하는 NFT입니다.'
+    },
+
+    sectionKeys: {
+      'Introduction': 'sections.introduction',  // Common - centralized
+      'SDK': 'sections.sdk',                     // Common - centralized
+      'Features': 'sections.features',           // Common - centralized
+      'Advanced': 'sections.advanced'            // Common - centralized
     },
-    ko: {
-      headline: '개선된 압축 NFT',
-      description: '새로운 차원의 확장성을 제공하는 NFT입니다.',
-      sections: {
-        'Introduction': '소개',
-        'SDK': 'SDK',
-        'Features': '기능',
-        'Advanced': '고급'
+    linkKeys: {
+      // Common terms - use centralized translations
+      'Overview': 'links.overview',
+      'FAQ': 'links.faq',
+      'Javascript': 'links.javascript',
+      'Rust': 'links.rust',
+      'Collections': 'links.collections',
+
+      // Bubblegum-specific terms - inline for easy editing
+      // To change these, edit right here in this file!
+      'Metaplex DAS API RPCs': {
+        ja: 'Metaplex DAS API RPC',
+        ko: 'Metaplex DAS API RPC'
+      },
+      'Creating Bubblegum Trees': {
+        ja: 'Bubblegumツリーの作成',
+        ko: 'Bubblegum 트리 생성'
+      },
+      'Minting Compressed NFTs (cNFTs)': {
+        ja: '圧縮NFT(cNFT)のミント',
+        ko: '압축 NFT(cNFT) 민팅'
+      },
+      'Fetching cNFTs': {
+        ja: 'cNFTの取得',
+        ko: 'cNFT 가져오기'
+      },
+      'Transferring cNFTs': {
+        ja: 'cNFTの転送',
+        ko: 'cNFT 전송'
+      },
+      'Freeze and Thaw cNFTs': {
+        ja: 'cNFTの凍結と解凍',
+        ko: 'cNFT 동결 및 해제'
+      },
+      'Updating cNFTs': {
+        ja: 'cNFTの更新',
+        ko: 'cNFT 업데이트'
+      },
+      'Burning cNFTs': {
+        ja: 'cNFTのバーン',
+        ko: 'cNFT 소각'
+      },
+      'Delegating cNFTs': {
+        ja: 'cNFTのデリゲート',
+        ko: 'cNFT 위임'
+      },
+      'Delegating Trees': {
+        ja: 'ツリーのデリゲート',
+        ko: '트리 위임'
+      },
+      'Verifying Creators': {
+        ja: '作成者の検証',
+        ko: '크리에이터 검증'
+      },
+      'Concurrent Merkle Trees': {
+        ja: '同時マークルツリー',
+        ko: '동시 머클 트리'
+      },
+      'Storing and Indexing NFT Data': {
+        ja: 'NFTデータの保存とインデックス化',
+        ko: 'NFT 데이터 저장 및 인덱싱'
+      },
+      'Hashing NFT Data': {
+        ja: 'NFTデータのハッシュ化',
+        ko: 'NFT 데이터 해싱'
       },
-      links: {
-        'Overview': '개요',
-        'Metaplex DAS API RPCs': 'Metaplex DAS API RPC',
-        'FAQ': '자주 묻는 질문',
-        'Javascript': 'JavaScript',
-        'Rust': 'Rust', 
-        'Creating Bubblegum Trees': 'Bubblegum 트리 생성',
-        'Minting Compressed NFTs (cNFTs)': '압축 NFT(cNFT) 민팅',
-        'Fetching cNFTs': 'cNFT 가져오기',
-        'Transferring cNFTs': 'cNFT 전송',
-        'Freeze and Thaw cNFTs': 'cNFT 동결 및 해제',
-        'Updating cNFTs': 'cNFT 업데이트',
-        'Burning cNFTs': 'cNFT 소각',
-        'Delegating cNFTs': 'cNFT 위임',
-        'Delegating Trees': '트리 위임',
-        'Collections': '컬렉션',
-        'Verifying Creators': '크리에이터 검증',
-        'Concurrent Merkle Trees': '동시 머클 트리',
-        'Storing and Indexing NFT Data': 'NFT 데이터 저장 및 인덱싱',
-        'Hashing NFT Data': 'NFT 데이터 해싱',
-        'Merkle Tree Canopy': '머클 트리 캐노피'
+      'Merkle Tree Canopy': {
+        ja: 'マークルツリーキャノピー',
+        ko: '머클 트리 캐노피'
       }
     }
-  }
+  })
 }

+ 48 - 150
src/components/products/das-api/index.js

@@ -3,6 +3,7 @@ import {
 } from '@/shared/sections';
 import { TableCellsIcon } from '@heroicons/react/24/solid';
 import { Hero } from './Hero';
+import { buildProductTranslations } from '@/config/navigation-translations';
 
 export const das = {
   name: 'DAS API',
@@ -80,156 +81,53 @@ export const das = {
       ],
     },
   ],
-  localizedNavigation: {
-    en: {
-      headline: 'Fetch Digital Asset Data',
-      description: 'A DAS API Client to access Digital Asset data on chain',
-      sections: {
-        'Introduction': 'Introduction',
-        'Methods & Playground': 'Methods & Playground',
-        'Guides': 'Guides',
-        'Core Extension SDK': 'Core Extension SDK'
-      },
-      links: {
-        'Overview': 'Overview',
-        'Getting Started': 'Getting Started',
-        'DAS API RPC Providers': 'DAS API RPC Providers',
-        'Display Options': 'Display Options',
-        'Method Overview': 'Method Overview',
-        'Get Asset': 'Get Asset',
-        'Get Assets': 'Get Assets',
-        'Get Asset Proof': 'Get Asset Proof',
-        'Get Asset Proofs': 'Get Asset Proofs',
-        'Get Asset Signatures': 'Get Asset Signatures',
-        'Get Assets By Authority': 'Get Assets By Authority',
-        'Get Assets By Creator': 'Get Assets By Creator',
-        'Get Assets By Group': 'Get Assets By Group',
-        'Get Assets By Owner': 'Get Assets By Owner',
-        'Get NFT Editions': 'Get NFT Editions',
-        'Get Token Accounts': 'Get Token Accounts',
-        'Search Assets': 'Search Assets',
-        'Guides Overview': 'Guides Overview',
-        'Pagination': 'Pagination',
-        'Get Collection NFTs': 'Get Collection NFTs',
-        'Get NFTs by Owner': 'Get NFTs by Owner',
-        'Get Wallet Tokens': 'Get Wallet Tokens',
-        'Get Fungible Assets': 'Get Fungible Assets',
-        'Search by Criteria': 'Search by Criteria',
-        'Owner and Collection': 'Owner and Collection',
-        'Find Compressed NFTs': 'Find Compressed NFTs',
-        'Collection Statistics': 'Collection Statistics',
-        'Find Token Holders': 'Find Token Holders',
-        'Extension Overview': 'Extension Overview',
-        'Get Core Asset': 'Get Core Asset',
-        'Get Core Collection': 'Get Core Collection',
-        'Get Core Assets By Authority': 'Get Core Assets By Authority',
-        'Get Core Assets By Collection': 'Get Core Assets By Collection',
-        'Get Core Assets By Owner': 'Get Core Assets By Owner',
-        'Search Core Assets': 'Search Core Assets',
-        'Search Core Collections': 'Search Core Collections',
-        'Plugin Derivation': 'Plugin Derivation',
-        'Type Conversion': 'Type Conversion'
-      }
+  localizedNavigation: buildProductTranslations({
+    productKey: 'dasApi',
+    sectionKeys: {
+      'Introduction': 'sections.introduction',
+      'Methods & Playground': 'sections.methods',
+      'Guides': 'sections.guides',
+      'Core Extension SDK': 'sections.coreExtension'
     },
-    ja: {
-      headline: 'デジタルアセットデータの取得',
-      description: 'オンチェーンデジタルアセットデータにアクセスするDAS APIクライアント',
-      sections: {
-        'Introduction': '紹介',
-        'Methods & Playground': 'メソッドとプレイグラウンド',
-        'Guides': 'ガイド',
-        'Core Extension SDK': 'Core拡張SDK'
-      },
-      links: {
-        'Overview': '概要',
-        'Getting Started': 'はじめに',
-        'DAS API RPC Providers': 'DAS API RPCプロバイダー',
-        'Display Options': '表示オプション',
-        'Method Overview': 'メソッド概要',
-        'Get Asset': 'アセットの取得',
-        'Get Assets': '複数アセットの取得',
-        'Get Asset Proof': 'アセット証明の取得',
-        'Get Asset Proofs': '複数アセット証明の取得',
-        'Get Asset Signatures': 'アセット署名の取得',
-        'Get Assets By Authority': '権限別アセットの取得',
-        'Get Assets By Creator': '作成者別アセットの取得',
-        'Get Assets By Group': 'グループ別アセットの取得',
-        'Get Assets By Owner': '所有者別アセットの取得',
-        'Get NFT Editions': 'NFTエディションの取得',
-        'Get Token Accounts': 'トークンアカウントの取得',
-        'Search Assets': 'アセットの検索',
-        'Guides Overview': 'ガイド概要',
-        'Pagination': 'ページネーション',
-        'Get Collection NFTs': 'コレクションNFTの取得',
-        'Get NFTs by Owner': '所有者別NFTの取得',
-        'Get Wallet Tokens': 'ウォレットトークンの取得',
-        'Get Fungible Assets': 'ファンジブルアセットの取得',
-        'Search by Criteria': '条件による検索',
-        'Owner and Collection': '所有者とコレクション',
-        'Find Compressed NFTs': '圧縮NFTの検索',
-        'Collection Statistics': 'コレクション統計',
-        'Find Token Holders': 'トークン保有者の検索',
-        'Extension Overview': '拡張機能の概要',
-        'Get Core Asset': 'Coreアセットの取得',
-        'Get Core Collection': 'Coreコレクションの取得',
-        'Get Core Assets By Authority': '権限別Coreアセットの取得',
-        'Get Core Assets By Collection': 'コレクション別Coreアセットの取得',
-        'Get Core Assets By Owner': '所有者別Coreアセットの取得',
-        'Search Core Assets': 'Coreアセットの検索',
-        'Search Core Collections': 'Coreコレクションの検索',
-        'Plugin Derivation': 'プラグインの導出',
-        'Type Conversion': '型変換'
-      }
-    },
-    ko: {
-      headline: '디지털 에셋 데이터 가져오기',
-      description: '온체인 디지털 에셋 데이터에 접근하는 DAS API 클라이언트',
-      sections: {
-        'Introduction': '소개',
-        'Methods & Playground': '메서드와 플레이그라운드',
-        'Guides': '가이드',
-        'Core Extension SDK': 'Core 확장 SDK'
-      },
-      links: {
-        'Overview': '개요',
-        'Getting Started': '시작하기',
-        'DAS API RPC Providers': 'DAS API RPC 제공업체',
-        'Display Options': '표시 옵션',
-        'Method Overview': '메서드 개요',
-        'Get Asset': '에셋 가져오기',
-        'Get Assets': '여러 에셋 가져오기',
-        'Get Asset Proof': '에셋 증명 가져오기',
-        'Get Asset Proofs': '여러 에셋 증명 가져오기',
-        'Get Asset Signatures': '에셋 서명 가져오기',
-        'Get Assets By Authority': '권한별 에셋 가져오기',
-        'Get Assets By Creator': '생성자별 에셋 가져오기',
-        'Get Assets By Group': '그룹별 에셋 가져오기',
-        'Get Assets By Owner': '소유자별 에셋 가져오기',
-        'Get NFT Editions': 'NFT 에디션 가져오기',
-        'Get Token Accounts': '토큰 계정 가져오기',
-        'Search Assets': '에셋 검색',
-        'Guides Overview': '가이드 개요',
-        'Pagination': '페이지네이션',
-        'Get Collection NFTs': '컬렉션 NFT 가져오기',
-        'Get NFTs by Owner': '소유자별 NFT 가져오기',
-        'Get Wallet Tokens': '지갑 토큰 가져오기',
-        'Get Fungible Assets': '대체 가능 에셋 가져오기',
-        'Search by Criteria': '조건별 검색',
-        'Owner and Collection': '소유자와 컬렉션',
-        'Find Compressed NFTs': '압축 NFT 찾기',
-        'Collection Statistics': '컬렉션 통계',
-        'Find Token Holders': '토큰 보유자 찾기',
-        'Extension Overview': '확장 개요',
-        'Get Core Asset': 'Core 에셋 가져오기',
-        'Get Core Collection': 'Core 컬렉션 가져오기',
-        'Get Core Assets By Authority': '권한별 Core 에셋 가져오기',
-        'Get Core Assets By Collection': '컬렉션별 Core 에셋 가져오기',
-        'Get Core Assets By Owner': '소유자별 Core 에셋 가져오기',
-        'Search Core Assets': 'Core 에셋 검색',
-        'Search Core Collections': 'Core 컬렉션 검색',
-        'Plugin Derivation': '플러그인 파생',
-        'Type Conversion': '타입 변환'
-      }
+    linkKeys: {
+      'Overview': 'links.overview',
+      'Getting Started': 'links.gettingStarted',
+      'DAS API RPC Providers': 'links.dasApiProviders',
+      'Display Options': 'links.displayOptions',
+      'Method Overview': 'links.methodOverview',
+      'Get Asset': 'links.getAsset',
+      'Get Assets': 'links.getAssets',
+      'Get Asset Proof': 'links.getAssetProof',
+      'Get Asset Proofs': 'links.getAssetProofs',
+      'Get Asset Signatures': 'links.getAssetSignatures',
+      'Get Assets By Authority': 'links.getAssetsByAuthority',
+      'Get Assets By Creator': 'links.getAssetsByCreator',
+      'Get Assets By Group': 'links.getAssetsByGroup',
+      'Get Assets By Owner': 'links.getAssetsByOwner',
+      'Get NFT Editions': 'links.getNftEditions',
+      'Get Token Accounts': 'links.getTokenAccounts',
+      'Search Assets': 'links.searchAssets',
+      'Guides Overview': 'links.guidesOverview',
+      'Pagination': 'links.pagination',
+      'Get Collection NFTs': 'links.getCollectionNfts',
+      'Get NFTs by Owner': 'links.getNftsByOwner',
+      'Get Wallet Tokens': 'links.getWalletTokens',
+      'Get Fungible Assets': 'links.getFungibleAssets',
+      'Search by Criteria': 'links.searchByCriteria',
+      'Owner and Collection': 'links.ownerAndCollection',
+      'Find Compressed NFTs': 'links.findCompressedNfts',
+      'Collection Statistics': 'links.collectionStatistics',
+      'Find Token Holders': 'links.findTokenHolders',
+      'Extension Overview': 'links.extensionOverview',
+      'Get Core Asset': 'links.getCoreAsset',
+      'Get Core Collection': 'links.getCoreCollection',
+      'Get Core Assets By Authority': 'links.getCoreAssetsByAuthority',
+      'Get Core Assets By Collection': 'links.getCoreAssetsByCollection',
+      'Get Core Assets By Owner': 'links.getCoreAssetsByOwner',
+      'Search Core Assets': 'links.searchCoreAssets',
+      'Search Core Collections': 'links.searchCoreCollections',
+      'Plugin Derivation': 'links.pluginDerivation',
+      'Type Conversion': 'links.typeConversion'
     }
-  }
+  })
 }

+ 168 - 0
src/config/TRANSLATIONS_REVIEW.md

@@ -0,0 +1,168 @@
+# Navigation Translations Review
+
+## Purpose
+
+This document coordinates native-speaker review of Japanese and Korean translations used in the Metaplex Developer Hub navigation system.
+
+## Location
+
+All centralized navigation translations are located in:
+- **File**: `src/config/navigation-translations.js`
+- **Structure**: Organized by sections, links, and product-specific content
+
+## Review Process
+
+### For Japanese Translations (日本語)
+
+**Native Speaker Needed**: Yes
+**Review Status**: ⚠️ PENDING REVIEW
+**Priority**: High
+
+Please review all translations marked with `ja:` in `navigation-translations.js` for:
+1. **Accuracy**: Does the translation correctly convey the English meaning?
+2. **Naturalness**: Does it sound natural to native Japanese speakers?
+3. **Consistency**: Are similar terms translated consistently throughout?
+4. **Technical Appropriateness**: Are technical terms (NFT, API, etc.) handled correctly?
+
+**Common Terms to Verify**:
+- Overview → 概要
+- Getting Started → はじめに
+- Features → 機能
+- Advanced → 高度
+- FAQ → よくある質問
+- Guides → ガイド
+- Introduction → 紹介
+
+### For Korean Translations (한국어)
+
+**Native Speaker Needed**: Yes
+**Review Status**: ⚠️ PENDING REVIEW
+**Priority**: High
+
+Please review all translations marked with `ko:` in `navigation-translations.js` for:
+1. **Accuracy**: Does the translation correctly convey the English meaning?
+2. **Naturalness**: Does it sound natural to native Korean speakers?
+3. **Consistency**: Are similar terms translated consistently throughout?
+4. **Technical Appropriateness**: Are technical terms (NFT, API, etc.) handled correctly?
+
+**Common Terms to Verify**:
+- Overview → 개요
+- Getting Started → 시작하기
+- Features → 기능
+- Advanced → 고급
+- FAQ → 자주 묻는 질문
+- Guides → 가이드
+- Introduction → 소개
+
+## Known Issues
+
+### Japanese Inconsistencies
+- **"Advanced"** has two variants in original files:
+  - `高度` (short form) - Currently used in centralized file
+  - `高度な機能` (long form with "functions/features")
+  - **Action Needed**: Confirm which is preferred
+
+### Korean Inconsistencies
+- **"Advanced"** has two variants in original files:
+  - `고급` (short form) - Currently used in centralized file
+  - `고급 기능` (long form with "functions")
+  - **Action Needed**: Confirm which is preferred
+
+## How to Submit Review Feedback
+
+### Option 1: Direct File Edit
+1. Open `src/config/navigation-translations.js`
+2. Edit the translations directly
+3. Submit a pull request with your changes
+4. Include reasoning for significant changes in PR description
+
+### Option 2: Issue Report
+1. Create a new GitHub issue
+2. Title: "Translation Review: [Language] - [Section]"
+3. List translations that need changes
+4. Provide corrected translations with explanations
+
+### Option 3: Spreadsheet Review
+1. Request access to review spreadsheet (if available)
+2. Mark corrections in dedicated review columns
+3. Add comments for context
+
+## Translation Coverage
+
+Current translations cover:
+
+### Common Navigation Elements
+- ✅ Section titles (Introduction, SDK, Features, Guides, etc.)
+- ✅ Common links (Overview, Getting Started, FAQ, etc.)
+- ✅ Programming languages (JavaScript, Rust)
+
+### Product-Specific Content
+- ✅ DAS API navigation (~30 unique terms)
+- ✅ Bubblegum v2 navigation (~20 unique terms)
+- ⚠️ Other products: Pending migration to centralized system
+
+### Areas Not Yet Centralized
+- Product headlines and descriptions (partially centralized)
+- Page content and markdown files
+- Error messages and UI text
+
+## Testing Translations
+
+After making changes:
+
+1. **Build the site**:
+   ```bash
+   pnpm run build
+   ```
+
+2. **Test in browser**:
+   - Navigate to `/ja/[product]` for Japanese
+   - Navigate to `/ko/[product]` for Korean
+   - Verify navigation text displays correctly
+
+3. **Check for missing translations**:
+   ```bash
+   pnpm run validate-translations
+   ```
+
+## Contact
+
+For questions about the translation system or review process:
+- File an issue: `https://github.com/metaplex-foundation/developer-hub/issues`
+- Tag with: `translations`, `i18n`, `needs-review`
+
+## Timeline
+
+**Target Review Completion**: [To be determined]
+**Assigned Reviewers**:
+- Japanese: [To be assigned]
+- Korean: [To be assigned]
+
+---
+
+## Review Checklist
+
+### Japanese Reviewer
+
+- [ ] Review all `sections` translations
+- [ ] Review all `links` translations
+- [ ] Review product-specific headlines/descriptions
+- [ ] Verify technical term consistency
+- [ ] Confirm "Advanced" translation preference
+- [ ] Test in browser
+- [ ] Submit feedback
+
+### Korean Reviewer
+
+- [ ] Review all `sections` translations
+- [ ] Review all `links` translations
+- [ ] Review product-specific headlines/descriptions
+- [ ] Verify technical term consistency
+- [ ] Confirm "Advanced" translation preference
+- [ ] Test in browser
+- [ ] Submit feedback
+
+---
+
+**Last Updated**: 2025-01-22
+**Review Status**: Awaiting native speaker review

+ 340 - 0
src/config/TRANSLATION_SYSTEM.md

@@ -0,0 +1,340 @@
+# Navigation Translation System
+
+## Overview
+
+The Metaplex Developer Hub uses a **hybrid translation system** that balances:
+- ✅ **Consistency** - Common terms translated once, used everywhere
+- ✅ **Discoverability** - Product-specific translations visible in product files
+- ✅ **Maintainability** - Single source of truth for shared translations
+- ✅ **Flexibility** - Easy to add/edit translations
+
+## System Components
+
+### 1. Centralized Translations
+**File**: `src/config/navigation-translations.js`
+
+Contains common navigation terms used across multiple products:
+- Section titles: Introduction, SDK, Features, Guides, etc.
+- Common links: Overview, Getting Started, FAQ, etc.
+- Product headlines and descriptions
+
+### 2. Product Translation Builder
+**Function**: `buildProductTranslations(config)`
+
+Generates localized navigation from:
+- **Centralized keys** (e.g., `'links.overview'`)
+- **Inline translations** (e.g., `{ ja: '...', ko: '...' }`)
+- **Mixed approach** (recommended)
+
+## How to Use
+
+### For Common Terms (Recommended)
+
+Use centralized keys for terms that appear in multiple products:
+
+```javascript
+localizedNavigation: buildProductTranslations({
+  linkKeys: {
+    'Overview': 'links.overview',         // ✅ Centralized
+    'Getting Started': 'links.gettingStarted', // ✅ Centralized
+    'FAQ': 'links.faq'                    // ✅ Centralized
+  }
+})
+```
+
+**Benefits**:
+- Change once, updates everywhere
+- Guaranteed consistency
+- Translations vetted by native speakers
+
+### For Product-Specific Terms (Recommended)
+
+Use inline translations for terms unique to your product:
+
+```javascript
+localizedNavigation: buildProductTranslations({
+  linkKeys: {
+    'Creating Bubblegum Trees': {         // ✅ Inline, product-specific
+      ja: 'Bubblegumツリーの作成',
+      ko: 'Bubblegum 트리 생성'
+    },
+    'Minting cNFTs': {                    // ✅ Inline, product-specific
+      ja: 'cNFTのミント',
+      ko: 'cNFT 민팅'
+    }
+  }
+})
+```
+
+**Benefits**:
+- Easy to find (in product file)
+- Easy to edit (no central file search)
+- Context visible (with product code)
+
+### Hybrid Approach (Best Practice)
+
+Combine both approaches for optimal results:
+
+```javascript
+localizedNavigation: buildProductTranslations({
+  productKey: 'bubblegumV2',  // For headline/description
+
+  sectionKeys: {
+    'Introduction': 'sections.introduction',  // Common - centralized
+    'SDK': 'sections.sdk',                     // Common - centralized
+    'Features': 'sections.features'            // Common - centralized
+  },
+
+  linkKeys: {
+    // Common terms - use centralized
+    'Overview': 'links.overview',
+    'FAQ': 'links.faq',
+
+    // Product-specific - inline
+    'Creating Bubblegum Trees': {
+      ja: 'Bubblegumツリーの作成',
+      ko: 'Bubblegum 트리 생성'
+    }
+  }
+})
+```
+
+## How to Edit Translations
+
+### Editing Centralized Translations
+
+1. Open `src/config/navigation-translations.js`
+2. Find the term in `NAVIGATION_TRANSLATIONS.sections` or `.links`
+3. Edit the `ja` or `ko` value
+4. Save - updates all products using that term
+
+**Example**:
+```javascript
+overview: {
+  en: 'Overview',
+  ja: '概要',      // ← Edit here
+  ko: '개요'       // ← Or here
+}
+```
+
+### Editing Inline Translations
+
+1. Open the product file (e.g., `src/components/products/bubblegum-v2/index.js`)
+2. Find the term in `linkKeys` with inline translations
+3. Edit the `ja` or `ko` value directly
+4. Save - only affects this product
+
+**Example**:
+```javascript
+'Creating Bubblegum Trees': {
+  ja: 'Bubblegumツリーの作成',  // ← Edit here
+  ko: 'Bubblegum 트리 생성'     // ← Or here
+}
+```
+
+## Decision Guide: Centralized vs Inline
+
+Use this flowchart to decide:
+
+```
+Is the term used in 2+ products?
+├─ YES → Use centralized key
+└─ NO → Is it product-specific?
+   ├─ YES → Use inline translation
+   └─ NO → Consider adding to centralized (future reuse)
+```
+
+## Adding New Translations
+
+### Adding a New Centralized Term
+
+1. Open `src/config/navigation-translations.js`
+2. Add to appropriate section (`sections`, `links`, or `products`)
+3. Provide `en`, `ja`, and `ko` translations
+4. Use camelCase key name
+
+**Example**:
+```javascript
+links: {
+  // ... existing links
+  myNewFeature: {
+    en: 'My New Feature',
+    ja: '新機能',
+    ko: '새로운 기능'
+  }
+}
+```
+
+### Adding a New Product Translation
+
+1. Open your product file
+2. Add to `buildProductTranslations` config
+3. Choose centralized key or inline translation
+
+**Example**:
+```javascript
+linkKeys: {
+  'My Unique Feature': {
+    ja: 'ユニーク機能',
+    ko: '고유 기능'
+  }
+}
+```
+
+## Migration Guide
+
+### Migrating Existing Products
+
+To migrate a product from old format to new system:
+
+1. **Identify common terms** in your `localizedNavigation`
+2. **Replace with keys** for terms in `navigation-translations.js`
+3. **Keep inline** for product-specific terms
+4. **Test** with `pnpm run build`
+
+**Before**:
+```javascript
+localizedNavigation: {
+  ja: {
+    sections: {
+      'Introduction': '紹介',
+      'Custom Section': 'カスタムセクション'
+    }
+  }
+}
+```
+
+**After**:
+```javascript
+localizedNavigation: buildProductTranslations({
+  sectionKeys: {
+    'Introduction': 'sections.introduction',  // Centralized
+    'Custom Section': {                        // Inline
+      ja: 'カスタムセクション',
+      ko: '커스텀 섹션'
+    }
+  }
+})
+```
+
+## Validation
+
+### Build-Time Validation
+
+Run validation to check translation completeness:
+
+```bash
+pnpm run validate-translations
+```
+
+This checks:
+- All navigation keys have translations
+- No missing `ja` or `ko` translations
+- Consistency across products
+
+### Manual Testing
+
+Test translations in browser:
+- English: `http://localhost:3000/product`
+- Japanese: `http://localhost:3000/ja/product`
+- Korean: `http://localhost:3000/ko/product`
+
+## Best Practices
+
+### ✅ DO
+
+- Use centralized keys for common terms (Overview, FAQ, etc.)
+- Use inline translations for product-specific terms
+- Add helpful comments in product files
+- Test translations in browser
+- Document unique translation choices
+
+### ❌ DON'T
+
+- Duplicate centralized translations as inline
+- Mix language codes (use `ja`, not `jp`)
+- Leave untranslated (always provide `ja` and `ko`)
+- Change centralized translations without considering impact
+- Use machine translation without native speaker review
+
+## Examples
+
+### DAS API (Fully Centralized)
+
+All terms are common and centralized:
+
+```javascript
+// src/components/products/das-api/index.js
+localizedNavigation: buildProductTranslations({
+  productKey: 'dasApi',
+  linkKeys: {
+    'Get Asset': 'links.getAsset',
+    'Search Assets': 'links.searchAssets'
+    // All use centralized keys
+  }
+})
+```
+
+### Bubblegum v2 (Hybrid)
+
+Mix of centralized and inline:
+
+```javascript
+// src/components/products/bubblegum-v2/index.js
+localizedNavigation: buildProductTranslations({
+  productKey: 'bubblegumV2',
+  linkKeys: {
+    // Centralized
+    'Overview': 'links.overview',
+    'FAQ': 'links.faq',
+
+    // Inline (product-specific)
+    'Creating Bubblegum Trees': {
+      ja: 'Bubblegumツリーの作成',
+      ko: 'Bubblegum 트리 생성'
+    }
+  }
+})
+```
+
+## Troubleshooting
+
+### Missing Translation Key Error
+
+**Problem**: Build fails with "translation key not found"
+
+**Solution**:
+1. Check key name spelling in product file
+2. Verify key exists in `navigation-translations.js`
+3. Add key if missing
+
+### Translation Not Showing
+
+**Problem**: Translation shows English instead of Japanese/Korean
+
+**Solution**:
+1. Check locale is passed correctly (`ja` or `ko`)
+2. Verify translation exists in centralized file or inline object
+3. Clear browser cache
+4. Rebuild: `pnpm run build`
+
+### Inconsistent Translations
+
+**Problem**: Same term translated differently across products
+
+**Solution**:
+1. Identify all occurrences
+2. Add to centralized translations
+3. Update all products to use centralized key
+4. Run validation
+
+## Getting Help
+
+- **Documentation**: `src/config/TRANSLATIONS_REVIEW.md`
+- **Examples**: See `das-api` and `bubblegum-v2` products
+- **Issues**: File bug report with `i18n` label
+
+---
+
+**Last Updated**: 2025-01-22
+**System Version**: 2.0 (Hybrid Approach)

+ 31 - 0
src/config/languages.js

@@ -80,3 +80,34 @@ export const SUPPORTED_LANGUAGES = Object.keys(LANGUAGES)
 
 // Get default language
 export const DEFAULT_LANGUAGE = Object.values(LANGUAGES).find(lang => lang.isDefault)
+
+/**
+ * Get localized href for a given path and locale
+ *
+ * @param {string} path - The path to localize (can be internal or external URL)
+ * @param {string} locale - The locale code (e.g., 'en', 'ja', 'ko')
+ * @returns {string} The localized path
+ *
+ * @example
+ * getLocalizedHref('/docs', 'en') // '/docs'
+ * getLocalizedHref('/docs', 'ja') // '/ja/docs'
+ * getLocalizedHref('docs', 'ko') // '/ko/docs' (normalized with leading slash)
+ * getLocalizedHref('https://example.com', 'ja') // 'https://example.com' (external URLs unchanged)
+ */
+export function getLocalizedHref(path, locale) {
+  // Handle external URLs - don't add locale prefix
+  if (path.startsWith('http://') || path.startsWith('https://') || path.startsWith('//')) {
+    return path
+  }
+
+  // Normalize internal paths to ensure leading slash
+  const normalizedPath = path.startsWith('/') ? path : `/${path}`
+
+  // For English (default locale), return normalized path without locale prefix
+  if (locale === 'en') {
+    return normalizedPath
+  }
+
+  // For other locales, prefix with /{locale}
+  return `/${locale}${normalizedPath}`
+}

+ 523 - 0
src/config/navigation-translations.js

@@ -0,0 +1,523 @@
+/**
+ * Centralized Navigation Translations
+ *
+ * This file contains all common navigation translations used across products.
+ * It eliminates duplication and provides a single source of truth for navigation text.
+ *
+ * Structure:
+ * - Common section titles
+ * - Common link titles
+ * - Product-specific headlines and descriptions
+ *
+ * Usage:
+ * - Use translation keys (e.g., 'nav.overview') instead of literal strings
+ * - Call resolveNavigationTranslation(key, locale) to get translated text
+ *
+ * IMPORTANT: Translations marked with [REVIEW] need native-speaker verification
+ */
+
+export const NAVIGATION_TRANSLATIONS = {
+  // Common Navigation Sections
+  sections: {
+    introduction: {
+      en: 'Introduction',
+      ja: '紹介',
+      ko: '소개'
+    },
+    sdk: {
+      en: 'SDK',
+      ja: 'SDK',
+      ko: 'SDK'
+    },
+    features: {
+      en: 'Features',
+      ja: '機能',
+      ko: '기능'
+    },
+    advanced: {
+      en: 'Advanced',
+      ja: '高度',
+      ko: '고급'
+    },
+    guides: {
+      en: 'Guides',
+      ja: 'ガイド',
+      ko: '가이드'
+    },
+    references: {
+      en: 'References',
+      ja: 'リファレンス',
+      ko: '참조'
+    },
+    methods: {
+      en: 'Methods & Playground',
+      ja: 'メソッドとプレイグラウンド',
+      ko: '메서드와 플레이그라운드'
+    },
+    coreExtension: {
+      en: 'Core Extension SDK',
+      ja: 'Core拡張SDK',
+      ko: 'Core 확장 SDK'
+    }
+  },
+
+  // Common Navigation Links
+  links: {
+    overview: {
+      en: 'Overview',
+      ja: '概要',
+      ko: '개요'
+    },
+    gettingStarted: {
+      en: 'Getting Started',
+      ja: 'はじめに',
+      ko: '시작하기'
+    },
+    faq: {
+      en: 'FAQ',
+      ja: 'よくある質問',
+      ko: '자주 묻는 질문'
+    },
+    javascript: {
+      en: 'JavaScript',
+      ja: 'JavaScript',
+      ko: 'JavaScript'
+    },
+    rust: {
+      en: 'Rust',
+      ja: 'Rust',
+      ko: 'Rust'
+    },
+    guidesOverview: {
+      en: 'Guides Overview',
+      ja: 'ガイド概要',
+      ko: '가이드 개요'
+    },
+    // DAS API specific
+    dasApiProviders: {
+      en: 'DAS API RPC Providers',
+      ja: 'DAS API RPCプロバイダー',
+      ko: 'DAS API RPC 제공업체'
+    },
+    displayOptions: {
+      en: 'Display Options',
+      ja: '表示オプション',
+      ko: '표시 옵션'
+    },
+    methodOverview: {
+      en: 'Method Overview',
+      ja: 'メソッド概要',
+      ko: '메서드 개요'
+    },
+    getAsset: {
+      en: 'Get Asset',
+      ja: 'アセットの取得',
+      ko: '에셋 가져오기'
+    },
+    getAssets: {
+      en: 'Get Assets',
+      ja: '複数アセットの取得',
+      ko: '여러 에셋 가져오기'
+    },
+    getAssetProof: {
+      en: 'Get Asset Proof',
+      ja: 'アセット証明の取得',
+      ko: '에셋 증명 가져오기'
+    },
+    getAssetProofs: {
+      en: 'Get Asset Proofs',
+      ja: '複数アセット証明の取得',
+      ko: '여러 에셋 증명 가져오기'
+    },
+    getAssetSignatures: {
+      en: 'Get Asset Signatures',
+      ja: 'アセット署名の取得',
+      ko: '에셋 서명 가져오기'
+    },
+    getAssetsByAuthority: {
+      en: 'Get Assets By Authority',
+      ja: '権限別アセットの取得',
+      ko: '권한별 에셋 가져오기'
+    },
+    getAssetsByCreator: {
+      en: 'Get Assets By Creator',
+      ja: '作成者別アセットの取得',
+      ko: '생성자별 에셋 가져오기'
+    },
+    getAssetsByGroup: {
+      en: 'Get Assets By Group',
+      ja: 'グループ別アセットの取得',
+      ko: '그룹별 에셋 가져오기'
+    },
+    getAssetsByOwner: {
+      en: 'Get Assets By Owner',
+      ja: '所有者別アセットの取得',
+      ko: '소유자별 에셋 가져오기'
+    },
+    getNftEditions: {
+      en: 'Get NFT Editions',
+      ja: 'NFTエディションの取得',
+      ko: 'NFT 에디션 가져오기'
+    },
+    getTokenAccounts: {
+      en: 'Get Token Accounts',
+      ja: 'トークンアカウントの取得',
+      ko: '토큰 계정 가져오기'
+    },
+    searchAssets: {
+      en: 'Search Assets',
+      ja: 'アセットの検索',
+      ko: '에셋 검색'
+    },
+    pagination: {
+      en: 'Pagination',
+      ja: 'ページネーション',
+      ko: '페이지네이션'
+    },
+    getCollectionNfts: {
+      en: 'Get Collection NFTs',
+      ja: 'コレクションNFTの取得',
+      ko: '컬렉션 NFT 가져오기'
+    },
+    getNftsByOwner: {
+      en: 'Get NFTs by Owner',
+      ja: '所有者別NFTの取得',
+      ko: '소유자별 NFT 가져오기'
+    },
+    getWalletTokens: {
+      en: 'Get Wallet Tokens',
+      ja: 'ウォレットトークンの取得',
+      ko: '지갑 토큰 가져오기'
+    },
+    getFungibleAssets: {
+      en: 'Get Fungible Assets',
+      ja: 'ファンジブルアセットの取得',
+      ko: '대체 가능 에셋 가져오기'
+    },
+    searchByCriteria: {
+      en: 'Search by Criteria',
+      ja: '条件による検索',
+      ko: '조건별 검색'
+    },
+    ownerAndCollection: {
+      en: 'Owner and Collection',
+      ja: '所有者とコレクション',
+      ko: '소유자와 컬렉션'
+    },
+    findCompressedNfts: {
+      en: 'Find Compressed NFTs',
+      ja: '圧縮NFTの検索',
+      ko: '압축 NFT 찾기'
+    },
+    collectionStatistics: {
+      en: 'Collection Statistics',
+      ja: 'コレクション統計',
+      ko: '컬렉션 통계'
+    },
+    findTokenHolders: {
+      en: 'Find Token Holders',
+      ja: 'トークン保有者の検索',
+      ko: '토큰 보유자 찾기'
+    },
+    extensionOverview: {
+      en: 'Extension Overview',
+      ja: '拡張機能の概要',
+      ko: '확장 개요'
+    },
+    getCoreAsset: {
+      en: 'Get Core Asset',
+      ja: 'Coreアセットの取得',
+      ko: 'Core 에셋 가져오기'
+    },
+    getCoreCollection: {
+      en: 'Get Core Collection',
+      ja: 'Coreコレクションの取得',
+      ko: 'Core 컬렉션 가져오기'
+    },
+    getCoreAssetsByAuthority: {
+      en: 'Get Core Assets By Authority',
+      ja: '権限別Coreアセットの取得',
+      ko: '권한별 Core 에셋 가져오기'
+    },
+    getCoreAssetsByCollection: {
+      en: 'Get Core Assets By Collection',
+      ja: 'コレクション別Coreアセットの取得',
+      ko: '컬렉션별 Core 에셋 가져오기'
+    },
+    getCoreAssetsByOwner: {
+      en: 'Get Core Assets By Owner',
+      ja: '所有者別Coreアセットの取得',
+      ko: '소유자별 Core 에셋 가져오기'
+    },
+    searchCoreAssets: {
+      en: 'Search Core Assets',
+      ja: 'Coreアセットの検索',
+      ko: 'Core 에셋 검색'
+    },
+    searchCoreCollections: {
+      en: 'Search Core Collections',
+      ja: 'Coreコレクションの検索',
+      ko: 'Core 컬렉션 검색'
+    },
+    pluginDerivation: {
+      en: 'Plugin Derivation',
+      ja: 'プラグインの導出',
+      ko: '플러그인 파생'
+    },
+    typeConversion: {
+      en: 'Type Conversion',
+      ja: '型変換',
+      ko: '타입 변환'
+    },
+    // Bubblegum specific
+    metaplexDasApiRpcs: {
+      en: 'Metaplex DAS API RPCs',
+      ja: 'Metaplex DAS API RPC',
+      ko: 'Metaplex DAS API RPC'
+    },
+    creatingBubblegumTrees: {
+      en: 'Creating Bubblegum Trees',
+      ja: 'Bubblegumツリーの作成',
+      ko: 'Bubblegum 트리 생성'
+    },
+    mintingCnfts: {
+      en: 'Minting Compressed NFTs (cNFTs)',
+      ja: '圧縮NFT(cNFT)のミント',
+      ko: '압축 NFT(cNFT) 민팅'
+    },
+    fetchingCnfts: {
+      en: 'Fetching cNFTs',
+      ja: 'cNFTの取得',
+      ko: 'cNFT 가져오기'
+    },
+    transferringCnfts: {
+      en: 'Transferring cNFTs',
+      ja: 'cNFTの転送',
+      ko: 'cNFT 전송'
+    },
+    freezeAndThawCnfts: {
+      en: 'Freeze and Thaw cNFTs',
+      ja: 'cNFTの凍結と解凍',
+      ko: 'cNFT 동결 및 해제'
+    },
+    updatingCnfts: {
+      en: 'Updating cNFTs',
+      ja: 'cNFTの更新',
+      ko: 'cNFT 업데이트'
+    },
+    burningCnfts: {
+      en: 'Burning cNFTs',
+      ja: 'cNFTのバーン',
+      ko: 'cNFT 소각'
+    },
+    delegatingCnfts: {
+      en: 'Delegating cNFTs',
+      ja: 'cNFTのデリゲート',
+      ko: 'cNFT 위임'
+    },
+    delegatingTrees: {
+      en: 'Delegating Trees',
+      ja: 'ツリーのデリゲート',
+      ko: '트리 위임'
+    },
+    collections: {
+      en: 'Collections',
+      ja: 'コレクション',
+      ko: '컬렉션'
+    },
+    verifyingCreators: {
+      en: 'Verifying Creators',
+      ja: '作成者の検証',
+      ko: '크리에이터 검증'
+    },
+    concurrentMerkleTrees: {
+      en: 'Concurrent Merkle Trees',
+      ja: '同時マークルツリー',
+      ko: '동시 머클 트리'
+    },
+    storingAndIndexingNftData: {
+      en: 'Storing and Indexing NFT Data',
+      ja: 'NFTデータの保存とインデックス化',
+      ko: 'NFT 데이터 저장 및 인덱싱'
+    },
+    hashingNftData: {
+      en: 'Hashing NFT Data',
+      ja: 'NFTデータのハッシュ化',
+      ko: 'NFT 데이터 해싱'
+    },
+    merkleTreeCanopy: {
+      en: 'Merkle Tree Canopy',
+      ja: 'マークルツリーキャノピー',
+      ko: '머클 트리 캐노피'
+    }
+  },
+
+  // Product-specific headlines and descriptions
+  products: {
+    dasApi: {
+      headline: {
+        en: 'Fetch Digital Asset Data',
+        ja: 'デジタルアセットデータの取得',
+        ko: '디지털 에셋 데이터 가져오기'
+      },
+      description: {
+        en: 'A DAS API Client to access Digital Asset data on chain',
+        ja: 'オンチェーンデジタルアセットデータにアクセスするDAS APIクライアント',
+        ko: '온체인 디지털 에셋 데이터에 접근하는 DAS API 클라이언트'
+      }
+    },
+    bubblegumV2: {
+      headline: {
+        en: 'Improved Compressed NFTs',
+        ja: '改良された圧縮NFT',
+        ko: '개선된 압축 NFT'
+      },
+      description: {
+        en: 'NFTs that scale to new orders of magnitude.',
+        ja: '新たな桁のスケールを実現するNFT。',
+        ko: '새로운 차원의 확장성을 제공하는 NFT입니다.'
+      }
+    }
+  }
+}
+
+/**
+ * Resolve a translation key to its localized value
+ *
+ * @param {string} key - Translation key (e.g., 'nav.sections.introduction')
+ * @param {string} locale - Target locale (en, ja, ko)
+ * @param {string} fallback - Fallback text if translation not found
+ * @returns {string} Translated text or fallback
+ */
+export function resolveNavigationTranslation(key, locale = 'en', fallback = '') {
+  const parts = key.split('.')
+  let current = NAVIGATION_TRANSLATIONS
+
+  for (const part of parts) {
+    if (current && typeof current === 'object' && part in current) {
+      current = current[part]
+    } else {
+      // Key not found, return fallback or key itself
+      return fallback || key
+    }
+  }
+
+  // If we have a translation object, get the locale value
+  if (current && typeof current === 'object' && locale in current) {
+    return current[locale]
+  }
+
+  // Fallback to English if locale not found
+  if (current && typeof current === 'object' && 'en' in current) {
+    return current.en
+  }
+
+  return fallback || key
+}
+
+/**
+ * Build translations object for a product using keys OR inline translations
+ *
+ * This helper generates the localizedNavigation structure from translation keys.
+ * Supports both centralized keys and product-specific inline translations.
+ *
+ * @param {Object} config - Configuration object
+ * @param {string} config.productKey - Product key for headline/description (uses centralized)
+ * @param {Object} config.headlineTranslations - Inline translations for headline { ja: '...', ko: '...' }
+ * @param {Object} config.descriptionTranslations - Inline translations for description { ja: '...', ko: '...' }
+ * @param {Object} config.sectionKeys - Map of section titles to translation keys or inline translations
+ * @param {Object} config.linkKeys - Map of link titles to translation keys or inline translations
+ * @returns {Object} Complete localizedNavigation object for ja, ko
+ *
+ * @example
+ * // Using centralized keys (preferred for common terms)
+ * buildProductTranslations({
+ *   linkKeys: {
+ *     'Overview': 'links.overview'  // Uses centralized translation
+ *   }
+ * })
+ *
+ * @example
+ * // Using inline translations (preferred for product-specific terms)
+ * buildProductTranslations({
+ *   linkKeys: {
+ *     'Custom Feature': { ja: 'カスタム機能', ko: '커스텀 기능' }
+ *   }
+ * })
+ *
+ * @example
+ * // Mixed approach (best of both worlds)
+ * buildProductTranslations({
+ *   linkKeys: {
+ *     'Overview': 'links.overview',  // Common term - use centralized
+ *     'Rare Product Feature': { ja: 'レア機能', ko: '희귀 기능' }  // Specific - inline
+ *   }
+ * })
+ */
+export function buildProductTranslations({
+  productKey,
+  headlineTranslations,
+  descriptionTranslations,
+  sectionKeys = {},
+  linkKeys = {}
+}) {
+  const locales = ['ja', 'ko']
+  const translations = {}
+
+  locales.forEach(locale => {
+    translations[locale] = {}
+
+    // Priority 1: Use inline translations if provided (product-specific)
+    if (headlineTranslations && headlineTranslations[locale]) {
+      translations[locale].headline = headlineTranslations[locale]
+    }
+    // Priority 2: Fall back to centralized productKey
+    else if (productKey && NAVIGATION_TRANSLATIONS.products[productKey]) {
+      translations[locale].headline = NAVIGATION_TRANSLATIONS.products[productKey].headline[locale]
+    }
+
+    // Same for description
+    if (descriptionTranslations && descriptionTranslations[locale]) {
+      translations[locale].description = descriptionTranslations[locale]
+    }
+    else if (productKey && NAVIGATION_TRANSLATIONS.products[productKey]) {
+      translations[locale].description = NAVIGATION_TRANSLATIONS.products[productKey].description[locale]
+    }
+
+    // Build sections translations
+    if (Object.keys(sectionKeys).length > 0) {
+      translations[locale].sections = {}
+      Object.entries(sectionKeys).forEach(([title, keyOrTranslations]) => {
+        // Check if it's an inline translation object { ja: '...', ko: '...' }
+        if (typeof keyOrTranslations === 'object' && keyOrTranslations[locale]) {
+          translations[locale].sections[title] = keyOrTranslations[locale]
+        } else if (typeof keyOrTranslations === 'string') {
+          // It's a key reference - resolve from centralized translations
+          translations[locale].sections[title] = resolveNavigationTranslation(keyOrTranslations, locale, title)
+        } else {
+          // Fallback to title itself
+          translations[locale].sections[title] = title
+        }
+      })
+    }
+
+    // Build links translations
+    if (Object.keys(linkKeys).length > 0) {
+      translations[locale].links = {}
+      Object.entries(linkKeys).forEach(([title, keyOrTranslations]) => {
+        // Check if it's an inline translation object { ja: '...', ko: '...' }
+        if (typeof keyOrTranslations === 'object' && keyOrTranslations[locale]) {
+          translations[locale].links[title] = keyOrTranslations[locale]
+        } else if (typeof keyOrTranslations === 'string') {
+          // It's a key reference - resolve from centralized translations
+          translations[locale].links[title] = resolveNavigationTranslation(keyOrTranslations, locale, title)
+        } else {
+          // Fallback to title itself
+          translations[locale].links[title] = title
+        }
+      })
+    }
+  })
+
+  return translations
+}

+ 2 - 4
src/i18n.js

@@ -1,12 +1,10 @@
 import { getRequestConfig } from 'next-intl/server';
 import { notFound } from 'next/navigation';
-
-// Can be imported from a shared config
-const locales = ['en', 'ja', 'ko'];
+import { SUPPORTED_LANGUAGES } from './config/languages';
 
 export default getRequestConfig(async ({ locale }) => {
   // Validate that the incoming `locale` parameter is valid
-  if (!locales.includes(locale)) notFound();
+  if (!SUPPORTED_LANGUAGES.includes(locale)) notFound();
 
   return {
     messages: (await import(`./locales/${locale}.json`)).default

+ 2 - 2
src/pages/ja/amman/index.md

@@ -8,8 +8,8 @@ description: Ammanローカルバリデーターの概要を説明します。
 
 {% quick-links %}
 
-{% quick-link title="はじめに" icon="InboxArrowDown" href="/jp/amman/getting-started" description="お好みの言語またはライブラリを見つけて、基本的なプログラムを開始しましょう。" /%}
+{% quick-link title="はじめに" icon="InboxArrowDown" href="/ja/amman/getting-started" description="お好みの言語またはライブラリを見つけて、基本的なプログラムを開始しましょう。" /%}
 
-{% quick-link title="設定" icon="CodeBracketSquare" href="/jp/amman/pre-made-configs" description="試用・修正可能な既成の設定セット。" /%}
+{% quick-link title="設定" icon="CodeBracketSquare" href="/ja/amman/pre-made-configs" description="試用・修正可能な既成の設定セット。" /%}
 
 {% /quick-links %}

+ 1 - 1
src/pages/ja/aura/index.md

@@ -14,4 +14,4 @@ Metaplex Auraは、SolanaとSolana Virtual Machine(SVM)を拡張するオー
 
 ## 参考ページ
 
-- [SolanaとSVMデータの読み取り](/jp/aura/reading-solana-and-svm-data): Auraネットワークはアセットデータのデータ可用性と分散型インデックス化を提供し、[Metaplex Digital Asset Standard(DAS)API](/jp/das-api)を使用してクエリできます。
+- [SolanaとSVMデータの読み取り](/ja/aura/reading-solana-and-svm-data): Auraネットワークはアセットデータのデータ可用性と分散型インデックス化を提供し、[Metaplex Digital Asset Standard(DAS)API](/ja/das-api)を使用してクエリできます。

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

@@ -8,10 +8,10 @@ description: Bubblegumで圧縮NFTをバーンする方法を学びます。
 
 - **リーフ所有者**、**リーフデリゲート**、または**永続バーンデリゲート**: 圧縮NFTの現在の所有者、そのデリゲート権限(存在する場合)、またはコレクションの永続バーンデリゲート。アセットがコレクションの一部である場合、`coreCollection`パラメータを渡す必要があります。これらのいずれかがトランザクションに署名する必要があります。
 
-この命令はBubblegumツリー上のリーフを置き換えるため、バーンする前に圧縮NFTの整合性を検証するために追加のパラメータを提供する必要があります。これらのパラメータはリーフを変更するすべての命令に共通であるため、[次のFAQ](/jp/bubblegum-v2/faq#replace-leaf-instruction-arguments)でドキュメント化されています。幸いなことに、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
+この命令はBubblegumツリー上のリーフを置き換えるため、バーンする前に圧縮NFTの整合性を検証するために追加のパラメータを提供する必要があります。これらのパラメータはリーフを変更するすべての命令に共通であるため、[次のFAQ](/ja/bubblegum-v2/faq#replace-leaf-instruction-arguments)でドキュメント化されています。幸いなことに、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
 
 {% callout title="トランザクションサイズ" type="note" %}
-トランザクションサイズエラーが発生した場合は、`getAssetWithProof`で`{ truncateCanopy: true }`の使用を検討してください。詳細については[FAQ](/jp/bubblegum-v2/faq#replace-leaf-instruction-arguments)を参照してください。
+トランザクションサイズエラーが発生した場合は、`getAssetWithProof`で`{ truncateCanopy: true }`の使用を検討してください。詳細については[FAQ](/ja/bubblegum-v2/faq#replace-leaf-instruction-arguments)を参照してください。
 {% /callout %}
 
 {% callout title="コレクション" type="note" %}

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

@@ -6,10 +6,10 @@ description: Bubblegumでコレクションの設定、検証、検証解除を
 
 cNFTは、ミント時または後でMPL-Coreコレクションに追加できます。 {% .lead %}
 
-NFTに関するコレクションの概念に馴染みがない場合、これらは他のNFTをグループ化するために使用できる特別な非圧縮NFTです。したがって、**コレクション**のデータは、コレクション全体の名前とブランディングを説明するために使用されます。Bubblegum V2以降、リーフ所有者による相互作用の必要なしに、デリゲートがcNFTを凍結・解凍できるなど、コレクションレベルでの追加機能も可能になります。[MPL-Coreコレクションについてはこちらで詳しく読むことができます](/jp/core/collections)。
-[ここでドキュメント化されている](/jp/bubblegum-v2/mint-cnfts#minting-to-a-collection)**MintV2**命令を使用して、圧縮NFTを直接コレクションにミントすることが可能であることに注意してください。とはいえ、コレクションなしでcNFTをすでにミントしている場合、そのcNFTにコレクションを設定する方法を見てみましょう。「verified」ブール値を持つMetaplex Token Metadataコレクションを使用するBubblegum v1とは異なり、Bubblegum V2はそのブール値を持たないMPL-Coreコレクションを使用します。
+NFTに関するコレクションの概念に馴染みがない場合、これらは他のNFTをグループ化するために使用できる特別な非圧縮NFTです。したがって、**コレクション**のデータは、コレクション全体の名前とブランディングを説明するために使用されます。Bubblegum V2以降、リーフ所有者による相互作用の必要なしに、デリゲートがcNFTを凍結・解凍できるなど、コレクションレベルでの追加機能も可能になります。[MPL-Coreコレクションについてはこちらで詳しく読むことができます](/ja/core/collections)。
+[ここでドキュメント化されている](/ja/bubblegum-v2/mint-cnfts#minting-to-a-collection)**MintV2**命令を使用して、圧縮NFTを直接コレクションにミントすることが可能であることに注意してください。とはいえ、コレクションなしでcNFTをすでにミントしている場合、そのcNFTにコレクションを設定する方法を見てみましょう。「verified」ブール値を持つMetaplex Token Metadataコレクションを使用するBubblegum v1とは異なり、Bubblegum V2はそのブール値を持たないMPL-Coreコレクションを使用します。
 
-MPL-Coreコレクションは[`BubblegumV2`プラグイン](/jp/core/plugins/bubblegum)を含む必要があります。
+MPL-Coreコレクションは[`BubblegumV2`プラグイン](/ja/core/plugins/bubblegum)を含む必要があります。
 
 以下のセクションでは、単一ステップトランザクションでcNFTからコレクションを設定・削除する方法を示します。`coreCollection`と`newCoreCollection`パラメータを追加する際に、単一の命令で両方の操作を行うことも可能です。両方のコレクション権限が同じウォレットでない場合、両方が署名する必要があります。
 

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

@@ -8,9 +8,9 @@ description: Bubblegumで圧縮NFTをデリゲートする方法を学びます
 
 これにより、デリゲートされたアカウント(**デリゲート権限**とも呼ばれます)は、所有者に代わってアクションを実行できます。これらのアクションは以下の通りです:
 
-- [cNFTの転送](/jp/bubblegum-v2/transfer-cnfts):デリゲート権限は転送後にリセット(つまり新しい所有者に設定)されます。
-- [cNFTのバーン](/jp/bubblegum-v2/burn-cnfts)。
-- [cNFTの凍結と解凍](/jp/bubblegum-v2/freeze-cnfts)。
+- [cNFTの転送](/ja/bubblegum-v2/transfer-cnfts):デリゲート権限は転送後にリセット(つまり新しい所有者に設定)されます。
+- [cNFTのバーン](/ja/bubblegum-v2/burn-cnfts)。
+- [cNFTの凍結と解凍](/ja/bubblegum-v2/freeze-cnfts)。
 
 これらのアクションはそれぞれ、デリゲート権限を使用してそれらを実行する方法の例を提供します。通常、**リーフ所有者**アカウントの代わりに**リーフデリゲート**アカウントを署名者として提供するだけです。
 圧縮NFTのデリゲート権限を承認・取り消しする方法を見てみましょう。
@@ -23,7 +23,7 @@ description: Bubblegumで圧縮NFTをデリゲートする方法を学びます
 - **前のリーフデリゲート**:前のデリゲート権限(存在する場合)。そうでなければ、これは**リーフ所有者**に設定する必要があります。
 - **新しいリーフデリゲート**:承認する新しいデリゲート権限。
 
-さらに、この命令はBubblegumツリー上のリーフを置き換えるため、圧縮NFTの整合性を検証するためにより多くのパラメータを提供する必要があります。これらのパラメータはリーフを変更するすべての命令に共通であるため、[次のFAQ](/jp/bubblegum-v2/faq#replace-leaf-instruction-arguments)でドキュメント化されています。幸いなことに、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
+さらに、この命令はBubblegumツリー上のリーフを置き換えるため、圧縮NFTの整合性を検証するためにより多くのパラメータを提供する必要があります。これらのパラメータはリーフを変更するすべての命令に共通であるため、[次のFAQ](/ja/bubblegum-v2/faq#replace-leaf-instruction-arguments)でドキュメント化されています。幸いなことに、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
 
 {% dialect-switcher title="圧縮NFTのデリゲート" %}
 {% dialect title="JavaScript" id="js" %}

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

@@ -6,7 +6,7 @@ description: Bubblegumでマークルツリーをデリゲートする方法を
 
 圧縮NFTの所有者がデリゲート権限を承認できるのと同様に、Bubblegumツリーの作成者も、自分の代わりにアクションを実行する別のアカウントを承認できます。 {% .lead %}
 
-Bubblegumツリーに対してデリゲート権限が承認されると、作成者に代わって[圧縮NFTをミント](/jp/bubblegum-v2/mint-cnfts)できるようになります。これは、誰でも公開ツリーでミントできるため、プライベートツリーにのみ関連することに注意してください。
+Bubblegumツリーに対してデリゲート権限が承認されると、作成者に代わって[圧縮NFTをミント](/ja/bubblegum-v2/mint-cnfts)できるようになります。これは、誰でも公開ツリーでミントできるため、プライベートツリーにのみ関連することに注意してください。
 
 ## ツリーのデリゲート権限の承認
 

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

@@ -11,7 +11,7 @@ Bubblegum V2は、いくつかの改良と新機能を導入するBubblegumプ
 Bubblegum V2では、cNFTはMetaplex Token Metadataコレクションの代わりにMPL-Coreコレクションを使用してコレクションにグループ化されます。また、凍結、解凍、ソウルバウンドNFTなどの新機能と以下のような追加機能も導入しています:
 - **凍結・解凍機能**: プロジェクト作成者は、特定のイベント中の転送を防ぐことや権利確定メカニズムの実装など、さまざまなユースケースでアセットをより詳細に制御するためにcNFTを凍結・解凍できるようになりました。
 - **MPL-Coreコレクション統合**: Bubblegum V2 NFTは、トークンメタデータコレクションに限定されることなく、MPL-Coreコレクションに追加できるようになり、より大きなMetaplexエコシステムとの柔軟性と統合を可能にします。
-- **ロイヤリティ強制**: Bubblegum V2は[MPL-Core](https://docs.metaplex.com/jp/core/overview)コレクションを使用しているため、`ProgramDenyList`などを使用してcNFTにロイヤリティを強制することが可能です。
+- **ロイヤリティ強制**: Bubblegum V2は[MPL-Core](https://docs.metaplex.com/ja/core/overview)コレクションを使用しているため、`ProgramDenyList`などを使用してcNFTにロイヤリティを強制することが可能です。
 - **ソウルバウンドNFT**: cNFTをソウルバウンド(転送不可)にすることが可能になり、所有者のウォレットに永続的に紐づけられます。これは資格、出席証明、身元確認などに最適です。コレクションで`PermanentFreezeDelegate`プラグインを有効にする必要があります。
 - **永続転送の許可**: コレクションで`PermanentTransferDelegate`プラグインが有効になっている場合、永続転送デリゲートはリーフ所有者の相互作用なしにcNFTを新しい所有者に転送できます。
 

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

@@ -4,11 +4,11 @@ metaTitle: 圧縮NFTの取得 | Bubblegum V2
 description: Bubblegumで圧縮NFTを取得する方法を学びます。
 ---
 
-[概要](/jp/bubblegum#read-api)ページで述べたように、圧縮NFTは通常のNFTのようにオンチェーンアカウント内に保存されるのではなく、それらを作成し更新したトランザクションにログされます。 {% .lead %}
+[概要](/ja/bubblegum#read-api)ページで述べたように、圧縮NFTは通常のNFTのようにオンチェーンアカウント内に保存されるのではなく、それらを作成し更新したトランザクションにログされます。 {% .lead %}
 
 そのため、圧縮NFTの取得を容易にするために特別なインデクサーが作成されました。このインデックス化されたデータは、**Metaplex DAS API**と呼ぶSolana RPCメソッドの拡張を通じて利用できます。実際、DAS APIは任意の**デジタルアセット**を取得できます。これは圧縮NFT、通常のNFT、またはFungibleアセットでもかまいません。
 
-すべてのRPCがDAS APIをサポートしているわけではないため、圧縮NFTを扱う予定がある場合は、RPCプロバイダーを慎重に選択する必要があります。Metaplex DAS APIをサポートするすべてのRPCのリストを[専用ページ](/jp/rpc-providers)で維持していることに注意してください。
+すべてのRPCがDAS APIをサポートしているわけではないため、圧縮NFTを扱う予定がある場合は、RPCプロバイダーを慎重に選択する必要があります。Metaplex DAS APIをサポートするすべてのRPCのリストを[専用ページ](/ja/rpc-providers)で維持していることに注意してください。
 
 このページでは、Metaplex DAS APIを使用して圧縮NFTを取得する方法を学習します。
 

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

@@ -46,4 +46,6 @@ cNFTのメタデータは、図に示され以下に説明されているよう
 {% node label="作成者" /%}
 {% /node %}
 
-{% node #seller-fee-basis-points parent="metadata" y="305" label="販売者手数料ベーシスポイント" theme="blue" /%}
+{% node #seller-fee-basis-points parent="metadata" y="305" label="販売者手数料ベーシスポイント" theme="blue" /%}
+
+{% /diagram %}

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

@@ -8,7 +8,7 @@ Bubblegum V2は、Solana上で圧縮NFT(cNFT)を作成し、操作するた
 
 {% quick-links %}
 
-{% quick-link title="はじめに" icon="InboxArrowDown" href="/jp/bubblegum-v2/sdk" description="お好みの言語またはライブラリを見つけて、圧縮NFTを開始しましょう。" /%}
+{% quick-link title="はじめに" icon="InboxArrowDown" href="/ja/bubblegum-v2/sdk" description="お好みの言語またはライブラリを見つけて、圧縮NFTを開始しましょう。" /%}
 
 {% quick-link title="APIリファレンス" icon="CodeBracketSquare" href="https://mpl-bubblegum.typedoc.metaplex.com/" target="_blank" description="特定のものをお探しですか?APIリファレンスをご覧いただき、答えを見つけてください。" /%}
 
@@ -20,7 +20,7 @@ Bubblegum V2は、オリジナルのBubblegumプログラムの基盤の上に
 
 - **凍結・解凍機能**: 2種類の凍結/解凍が利用可能:1) cNFT所有者は、アセットレベルの制御のためにフリーズ権限をリーフデリゲートに委任でき、特定のイベント中の転送を防ぐことや権利確定メカニズムの実装など、さまざまなユースケースに柔軟性を提供します。2) コレクション作成時に`PermanentFreezeDelegate`プラグインが有効になっている場合、プロジェクト作成者は永続フリーズデリゲートを通じてcNFTを凍結・解凍でき、コレクション全体の制御が可能です
 - **MPL-Coreコレクション統合**: Bubblegum V2 NFTは、トークンメタデータコレクションに限定されることなく、MPL-Coreコレクションに追加できるようになり、より大きなMetaplexエコシステムとの柔軟性と統合を可能にします。
-- **ロイヤリティ強制**: Bubblegum V2は[MPL-Core](https://docs.metaplex.com/jp/core/overview)コレクションを使用しているため、`ProgramDenyList`などを使用してcNFTにロイヤリティを強制することが可能です。
+- **ロイヤリティ強制**: Bubblegum V2は[MPL-Core](https://docs.metaplex.com/ja/core/overview)コレクションを使用しているため、`ProgramDenyList`などを使用してcNFTにロイヤリティを強制することが可能です。
 - **ソウルバウンドNFT**: cNFTをソウルバウンド(転送不可)にすることが可能になり、所有者のウォレットに永続的に紐づけられます。これは資格、出席証明、身元確認などに最適です。コレクション作成時に`PermanentFreezeDelegate`プラグインを有効にする必要があります。
 - **永続転送の許可**: コレクションで`PermanentTransferDelegate`プラグインが有効になっている場合、永続転送デリゲートはリーフ所有者の相互作用なしにcNFTを新しい所有者に転送できます。
 - **権限によるバーン**: コレクションに`PermanentBurnDelegate`プラグインが有効になっている場合、デリゲートはリーフ所有者の署名なしにNFTをバーンできます。
@@ -38,11 +38,11 @@ Bubblegum V2は、後方互換性を維持しながら追加機能をサポー
 
 プロジェクトは、要件に応じて、Legacy Bubblegumを使用したオリジナルのリーフスキーマまたはBubblegum V2を使用した新しいv2スキーマを選択できます。
 
-新しい`LeafSchemaV2`を使用するには、[`createTreeV2`命令](/jp/bubblegum-v2/create-trees)を使用して作成する必要があるV2マークルツリーを使用する必要があります。V1マークルツリーは新しいリーフスキーマをサポートせず、V2マークルツリーはV1リーフと互換性がありません。
+新しい`LeafSchemaV2`を使用するには、[`createTreeV2`命令](/ja/bubblegum-v2/create-trees)を使用して作成する必要があるV2マークルツリーを使用する必要があります。V1マークルツリーは新しいリーフスキーマをサポートせず、V2マークルツリーはV1リーフと互換性がありません。
 
 ## マークルツリー、リーフ、証明
 
-圧縮NFTは、**マークルツリー**のコンテキストでのみ存在します。マークルツリーが何であるかは[専用の高度なガイド](/jp/bubblegum-v2/concurrent-merkle-trees)で説明していますが、この概要では、マークルツリーを**リーフ**と呼ぶハッシュのコレクションと考えることができます。各リーフは、[圧縮NFTのデータをハッシュ化する](/jp/bubblegum-v2/hashed-nft-data)ことで得られます。
+圧縮NFTは、**マークルツリー**のコンテキストでのみ存在します。マークルツリーが何であるかは[専用の高度なガイド](/ja/bubblegum-v2/concurrent-merkle-trees)で説明していますが、この概要では、マークルツリーを**リーフ**と呼ぶハッシュのコレクションと考えることができます。各リーフは、[圧縮NFTのデータをハッシュ化する](/ja/bubblegum-v2/hashed-nft-data)ことで得られます。
 
 マークルツリー内の各リーフに対して、**証明**と呼ばれるハッシュのリストを提供できます。これにより、誰でも与えられたリーフがそのツリーの一部であることを検証できます。圧縮NFTが更新または転送されるたびに、関連するリーフも変更され、その証明も変更されます。
 
@@ -124,24 +124,24 @@ Bubblegum V2は、後方互換性を維持しながら追加機能をサポー
 
 1つのNFTのデータを取得するためだけに、毎回何百万ものトランザクションをクロールすることは、確実に最良のユーザー体験ではありません。したがって、圧縮NFTは、この情報をリアルタイムでインデックス化し、エンドユーザーからこれを抽象化するために一部のRPCに依存しています。圧縮NFTの取得を可能にする結果のRPC APIを**Metaplex DAS API**と呼びます。
 
-すべてのRPCがDAS APIをサポートしているわけではないことに注意してください。そのため、アプリケーションで圧縮NFTを使用する際に適切なRPCを選択するために、["Metaplex DAS API RPC"](/jp/rpc-providers)ページに興味があるかもしれません。
+すべてのRPCがDAS APIをサポートしているわけではないことに注意してください。そのため、アプリケーションで圧縮NFTを使用する際に適切なRPCを選択するために、["Metaplex DAS API RPC"](/ja/rpc-providers)ページに興味があるかもしれません。
 
-これについては、高度な["NFTデータの保存とインデックス化"](/jp/bubblegum-v2/stored-nft-data)ガイドで詳しく説明しています。
+これについては、高度な["NFTデータの保存とインデックス化"](/ja/bubblegum-v2/stored-nft-data)ガイドで詳しく説明しています。
 
 ## 機能
 
 NFTデータがアカウント内に存在しないにもかかわらず、圧縮NFTに対してさまざまな操作を実行することは依然として可能です。これは、現在のNFTデータをリクエストし、そのハッシュ化されたリーフがマークルツリーで有効であることを確認することで可能になります。そのため、圧縮NFTで以下の操作を実行できます:
 
-- 関連するコレクションを持つまたは持たない[cNFTのミント](/jp/bubblegum-v2/mint-cnfts)。
-- [cNFTの転送](/jp/bubblegum-v2/transfer-cnfts)。
-- [cNFTのデータまたはコレクションの更新](/jp/bubblegum-v2/update-cnfts)。
-- [cNFTのバーン](/jp/bubblegum-v2/burn-cnfts)。
-- [cNFTのデリゲート](/jp/bubblegum-v2/delegate-cnfts)。
-- [cNFTコレクションの検証と検証解除](/jp/bubblegum-v2/verify-collections)。
-- [cNFTの作成者の検証と検証解除](/jp/bubblegum-v2/verify-creators)。
-- [cNFTの凍結と解凍](/jp/bubblegum-v2/freeze-cnfts)。
-- [cNFTをソウルバウンドにする](/jp/bubblegum-v2/freeze-cnfts#create-a-soulbound-c-nft)。
+- 関連するコレクションを持つまたは持たない[cNFTのミント](/ja/bubblegum-v2/mint-cnfts)。
+- [cNFTの転送](/ja/bubblegum-v2/transfer-cnfts)。
+- [cNFTのデータまたはコレクションの更新](/ja/bubblegum-v2/update-cnfts)。
+- [cNFTのバーン](/ja/bubblegum-v2/burn-cnfts)。
+- [cNFTのデリゲート](/ja/bubblegum-v2/delegate-cnfts)。
+- [cNFTコレクションの検証と検証解除](/ja/bubblegum-v2/verify-collections)。
+- [cNFTの作成者の検証と検証解除](/ja/bubblegum-v2/verify-creators)。
+- [cNFTの凍結と解凍](/ja/bubblegum-v2/freeze-cnfts)。
+- [cNFTをソウルバウンドにする](/ja/bubblegum-v2/freeze-cnfts#create-a-soulbound-c-nft)。
 
 ## 次のステップ
 
-圧縮NFTが高レベルでどのように機能し、Bubblegum V2の新機能について理解したので、圧縮NFTとの相互作用に使用できるさまざまな言語/フレームワークを列挙した[はじめに](/jp/bubblegum-v2/sdk)ページをチェックすることをお勧めします。その後、さまざまな[機能ページ](/jp/bubblegum-v2/create-trees)を使用して、cNFTで実行できる特定の操作について詳しく学ぶことができます。最後に、cNFTとマークルツリーの知識を深めるための[高度なガイド](/jp/bubblegum-v2/concurrent-merkle-trees)も利用できます。
+圧縮NFTが高レベルでどのように機能し、Bubblegum V2の新機能について理解したので、圧縮NFTとの相互作用に使用できるさまざまな言語/フレームワークを列挙した[はじめに](/ja/bubblegum-v2/sdk)ページをチェックすることをお勧めします。その後、さまざまな[機能ページ](/ja/bubblegum-v2/create-trees)を使用して、cNFTで実行できる特定の操作について詳しく学ぶことができます。最後に、cNFTとマークルツリーの知識を深めるための[高度なガイド](/ja/bubblegum-v2/concurrent-merkle-trees)も利用できます。

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

@@ -4,7 +4,7 @@ metaTitle: 圧縮NFTのミント | Bubblegum V2
 description: Bubblegum V2で圧縮NFTをミントする方法を学びます。
 ---
 
-[前のページ](/jp/bubblegum-v2/create-trees)では、圧縮NFTをミントするためにBubblegumツリーが必要であることを確認し、その作成方法を見ました。今度は、与えられたBubblegumツリーから圧縮NFTをミントする方法を見てみましょう。 {% .lead %}
+[前のページ](/ja/bubblegum-v2/create-trees)では、圧縮NFTをミントするためにBubblegumツリーが必要であることを確認し、その作成方法を見ました。今度は、与えられたBubblegumツリーから圧縮NFTをミントする方法を見てみましょう。 {% .lead %}
 
 Bubblegumプログラムは、異なるリーフスキーマバージョン用の複数のミント命令を提供します。Bubblegum V2は、与えられたコレクションに、またはコレクションなしで圧縮NFTをミントするために使用される**mintV2**という新しいミント命令を導入しています。
 

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

@@ -8,8 +8,8 @@ MPL-Bubblegumを使用した新しいMetaplex圧縮NFT(cNFT)標準を開始
 
 {% quick-links %}
 
-{% quick-link title="JavaScript" icon="JavaScript" href="/jp/bubblegum-v2/sdk/javascript" description="Umiフレームワークベースのaファイル-Bubblegum用JavaScriptライブラリを開始しましょう。" /%}
+{% quick-link title="JavaScript" icon="JavaScript" href="/ja/bubblegum-v2/sdk/javascript" description="Umiフレームワークベースのaファイル-Bubblegum用JavaScriptライブラリを開始しましょう。" /%}
 
-{% quick-link title="Rust" icon="Rust" href="/jp/bubblegum-v2/sdk/rust" description="MPL-Bubblegum Rustクレートを使用して開始しましょう。" /%}
+{% quick-link title="Rust" icon="Rust" href="/ja/bubblegum-v2/sdk/rust" description="MPL-Bubblegum Rustクレートを使用して開始しましょう。" /%}
 
 {% /quick-links %}

+ 3 - 3
src/pages/ja/bubblegum-v2/sdk/javascript.md

@@ -4,9 +4,9 @@ metaTitle: JavaScript SDK | MPL-Bubblegum
 description: MPL-Bubblegum JavaScript SDKを実行するためのプロジェクト設定方法を学びます。
 ---
 
-MetaplexはMPL-Bubblegumプログラムとの相互作用に使用できるJavaScriptライブラリを提供しています。[Umiフレームワーク](/jp/umi)のおかげで、多くの固有の依存関係なしに配布され、任意のJavaScriptプロジェクトで使用できる軽量なライブラリを提供します。
+MetaplexはMPL-Bubblegumプログラムとの相互作用に使用できるJavaScriptライブラリを提供しています。[Umiフレームワーク](/ja/umi)のおかげで、多くの固有の依存関係なしに配布され、任意のJavaScriptプロジェクトで使用できる軽量なライブラリを提供します。
 
-開始するには、[Umiフレームワークをインストール](/jp/umi/getting-started)し、MPL-Bubblegum JavaScriptライブラリをインストールする必要があります。
+開始するには、[Umiフレームワークをインストール](/ja/umi/getting-started)し、MPL-Bubblegum JavaScriptライブラリをインストールする必要があります。
 
 ## インストール
 
@@ -25,7 +25,7 @@ npm install @metaplex-foundation/mpl-bubblegum
 
 ## Umiのセットアップ
 
-まだ`umi`インスタンスをセットアップして設定していない場合は、[Umiはじめに](/jp/umi/getting-started)ページをご確認ください。
+まだ`umi`インスタンスをセットアップして設定していない場合は、[Umiはじめに](/ja/umi/getting-started)ページをご確認ください。
 
 `umi`インスタンスの初期化中に、以下を使用してMPL-Bubblegumパッケージを`umi`に追加できます
 

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

@@ -28,7 +28,7 @@ cargo add mpl-bubblegum
 
 すべてのBubblegum命令のリストはこちらで確認できます:[MPL-Bubblegum - Rust Instructions](https://docs.rs/mpl-bubblegum/latest/mpl_bubblegum/instructions/index.html)
 
-Rustの使用に関するより包括的なガイドについては、[Metaplex Rust SDKガイド](/jp/guides/rust/metaplex-rust-sdks)ページをご覧ください。
+Rustの使用に関するより包括的なガイドについては、[Metaplex Rust SDKガイド](/ja/guides/rust/metaplex-rust-sdks)ページをご覧ください。
 
 #### CreateTreeConfigBuilder - 例
 
@@ -96,7 +96,7 @@ pub async fn create_tree(keypair: Keypair) {
 
 すべてのBubblegum命令のリストはこちらで確認できます:[Metaplex Bubblegum - Rust Instructions](https://docs.rs/mpl-bubblegum/latest/mpl_bubblegum/instructions/index.html)
 
-MetaplexクレートとCPI命令の作成に関するより包括的なガイドについては、[MetaplexプログラムへのCPI方法ガイド](/jp/guides/rust/how-to-cpi-into-a-metaplex-program)ページをご覧ください。
+MetaplexクレートとCPI命令の作成に関するより包括的なガイドについては、[MetaplexプログラムへのCPI方法ガイド](/ja/guides/rust/how-to-cpi-into-a-metaplex-program)ページをご覧ください。
 
 #### CreateTreeConfigCpiBuilder - 例
 

+ 2 - 2
src/pages/ja/bubblegum-v2/stored-nft-data.md

@@ -4,9 +4,9 @@ metaTitle: NFTデータの保存とインデックス化 | Bubblegum V2
 description: BubblegumでNFTデータがどのように保存されるかについて詳しく学びます。
 ---
 
-[概要](/jp/bubblegum#read-api)で述べたように、圧縮NFT(cNFT)が作成または変更されるたびに、対応するトランザクションが台帳にオンチェーンで記録されますが、cNFTの状態データはアカウントスペースに保存されません。これがcNFTの大幅なコスト削減の理由ですが、利便性と使いやすさのために、cNFTの状態データはRPCプロバイダーによってインデックス化され、**Metaplex DAS API**を通じて利用できます。
+[概要](/ja/bubblegum#read-api)で述べたように、圧縮NFT(cNFT)が作成または変更されるたびに、対応するトランザクションが台帳にオンチェーンで記録されますが、cNFTの状態データはアカウントスペースに保存されません。これがcNFTの大幅なコスト削減の理由ですが、利便性と使いやすさのために、cNFTの状態データはRPCプロバイダーによってインデックス化され、**Metaplex DAS API**を通じて利用できます。
 
-Metaplexは、DAS APIの[参考実装](https://github.com/metaplex-foundation/digital-asset-rpc-infrastructure)を作成しており、一部のRPCプロバイダーは特定の実装にこのコードの一部またはすべてを使用していますが、他のRPCプロバイダーは独自のものを作成しています。Metaplex DAS APIをサポートする他のRPCプロバイダーのリストについては、["Metaplex DAS API RPC"](/jp/rpc-providers)ページを参照してください。
+Metaplexは、DAS APIの[参考実装](https://github.com/metaplex-foundation/digital-asset-rpc-infrastructure)を作成しており、一部のRPCプロバイダーは特定の実装にこのコードの一部またはすべてを使用していますが、他のRPCプロバイダーは独自のものを作成しています。Metaplex DAS APIをサポートする他のRPCプロバイダーのリストについては、["Metaplex DAS API RPC"](/ja/rpc-providers)ページを参照してください。
 
 Metaplexのリファレンス実装であるDAS APIには、以下の主要な項目が含まれています:
 * Solanaノーヴォートバリデーター - このバリデーターは、コンセンサスの下でバリデーター台帳とアカウントデータへの安全なアクセスのみを持つように構成されています。

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

@@ -6,10 +6,10 @@ description: Bubblegumで圧縮NFTを転送する方法を学びます。
 
 **transferV2**命令は、圧縮NFTをある所有者から別の所有者に転送するために使用できます。転送を認証するには、現在の所有者またはデリゲート権限(存在する場合)がトランザクションに署名する必要があります。デリゲート権限は、リーフデリゲートまたはコレクションの`permanentTransferDelegate`のいずれかです。
 
-この命令は圧縮NFTを更新するため、Bubblegumツリー上のリーフを置き換えることに注意してください。これは、圧縮NFTの整合性を検証するために追加のパラメータを提供する必要があることを意味します。これらのパラメータはリーフを変更するすべての命令に共通であるため、[次のFAQ](/jp/bubblegum-v2/faq#replace-leaf-instruction-arguments)でドキュメント化されています。幸いなことに、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
+この命令は圧縮NFTを更新するため、Bubblegumツリー上のリーフを置き換えることに注意してください。これは、圧縮NFTの整合性を検証するために追加のパラメータを提供する必要があることを意味します。これらのパラメータはリーフを変更するすべての命令に共通であるため、[次のFAQ](/ja/bubblegum-v2/faq#replace-leaf-instruction-arguments)でドキュメント化されています。幸いなことに、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
 
 {% callout title="トランザクションサイズ" type="note" %}
-トランザクションサイズエラーが発生した場合は、`getAssetWithProof`で`{ truncateCanopy: true }`の使用を検討してください。詳細については[FAQ](/jp/bubblegum-v2/faq#replace-leaf-instruction-arguments)を参照してください。
+トランザクションサイズエラーが発生した場合は、`getAssetWithProof`で`{ truncateCanopy: true }`の使用を検討してください。詳細については[FAQ](/ja/bubblegum-v2/faq#replace-leaf-instruction-arguments)を参照してください。
 {% /callout %}
 
 ## Bubblegum V2圧縮NFTの転送

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

@@ -8,13 +8,13 @@ description: Bubblegumで作成者の検証と検証解除を行う方法を学
 
 これらの命令は、cNFTの**作成者**配列の適切な項目で**検証済み**ブール値を切り替えます。このブール値は、ウォレットやマーケットプレイスなどのアプリがどの作成者が本物でどの作成者がそうでないかを知ることができるため重要です。
 
-作成者は、ミントトランザクションに署名することで、[圧縮NFTをミント](/jp/bubblegum-v2/mint-cnfts)する際に直接自分自身を検証できることに注目する価値があります。とはいえ、今度は作成者が既存の圧縮NFTで自分自身を検証または検証解除する方法を見てみましょう。
+作成者は、ミントトランザクションに署名することで、[圧縮NFTをミント](/ja/bubblegum-v2/mint-cnfts)する際に直接自分自身を検証できることに注目する価値があります。とはいえ、今度は作成者が既存の圧縮NFTで自分自身を検証または検証解除する方法を見てみましょう。
 
 ## 作成者の検証
 
-Bubblegumプログラムは、検証しようとしている作成者によって署名される必要がある**verifyCreatorV2**命令を提供します。作成者は既に圧縮NFTの**作成者**配列の一部である必要があります。まだ配列の一部でない場合は、最初に[`updateMetadataV2`](/jp/bubblegum-v2/update-cnfts)命令を使用して**作成者**配列に作成者を追加してください。
+Bubblegumプログラムは、検証しようとしている作成者によって署名される必要がある**verifyCreatorV2**命令を提供します。作成者は既に圧縮NFTの**作成者**配列の一部である必要があります。まだ配列の一部でない場合は、最初に[`updateMetadataV2`](/ja/bubblegum-v2/update-cnfts)命令を使用して**作成者**配列に作成者を追加してください。
 
-さらに、この命令はBubblegumツリー上のリーフを置き換えるため、圧縮NFTの整合性を検証するためにより多くのパラメータを提供する必要があります。これらのパラメータはリーフを変更するすべての命令に共通であるため、[次のFAQ](/jp/bubblegum-v2/faq#replace-leaf-instruction-arguments)でドキュメント化されています。幸いなことに、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
+さらに、この命令はBubblegumツリー上のリーフを置き換えるため、圧縮NFTの整合性を検証するためにより多くのパラメータを提供する必要があります。これらのパラメータはリーフを変更するすべての命令に共通であるため、[次のFAQ](/ja/bubblegum-v2/faq#replace-leaf-instruction-arguments)でドキュメント化されています。幸いなことに、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
 
 {% dialect-switcher title="圧縮NFTの作成者の検証" %}
 {% dialect title="JavaScript" id="js" %}

+ 2 - 2
src/pages/ja/bubblegum/burn-cnfts.md

@@ -8,10 +8,10 @@ description: Bubblegumで圧縮NFTをバーンする方法を学びます。
 
 - **Leaf Owner**と**Leaf Delegate**: 圧縮NFTの現在の所有者とそのdelegate権限(存在する場合)。これらのいずれかがトランザクションに署名する必要があります。
 
-この命令はBubblegum Tree上のリーフを置き換えるため、圧縮NFTをバーンする前にその整合性を検証するために追加のパラメータを提供する必要があることに注意してください。これらのパラメータはリーフを変更するすべての命令に共通であるため、[以下のFAQ](/jp/bubblegum/faq#replace-leaf-instruction-arguments)に文書化されています。幸い、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
+この命令はBubblegum Tree上のリーフを置き換えるため、圧縮NFTをバーンする前にその整合性を検証するために追加のパラメータを提供する必要があることに注意してください。これらのパラメータはリーフを変更するすべての命令に共通であるため、[以下のFAQ](/ja/bubblegum/faq#replace-leaf-instruction-arguments)に文書化されています。幸い、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
 
 {% callout title="トランザクションサイズ" type="note" %}
-トランザクションサイズエラーが発生した場合は、`getAssetWithProof`で`{ truncateCanopy: true }`の使用を検討してください。詳細については[FAQ](/jp/bubblegum/faq#replace-leaf-instruction-arguments)を参照してください。
+トランザクションサイズエラーが発生した場合は、`getAssetWithProof`で`{ truncateCanopy: true }`の使用を検討してください。詳細については[FAQ](/ja/bubblegum/faq#replace-leaf-instruction-arguments)を参照してください。
 {% /callout %}
 
 {% dialect-switcher title="圧縮NFTのバーン" %}

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

@@ -75,7 +75,7 @@ Token Metadata NFTへの解凍は、Bubblegum v1でのみ利用可能です。
 
 解凍プロセスの最初のステップを開始するために、圧縮NFTの所有者は**Redeem**命令を送信し、トランザクションに署名する必要があります。これにより、解凍プロセスの次のステップで使用されるcNFT用のVoucherアカウントが作成されます。
 
-この命令はBubblegum TreeからリーフKを削除することに注意してください。したがって、削除する圧縮NFTの整合性を検証するために追加のパラメータを提供する必要があります。これらのパラメータはリーフを変更するすべての命令に共通であるため、[以下のFAQ](/jp/bubblegum/faq#replace-leaf-instruction-arguments)に文書化されています。幸い、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
+この命令はBubblegum TreeからリーフKを削除することに注意してください。したがって、削除する圧縮NFTの整合性を検証するために追加のパラメータを提供する必要があります。これらのパラメータはリーフを変更するすべての命令に共通であるため、[以下のFAQ](/ja/bubblegum/faq#replace-leaf-instruction-arguments)に文書化されています。幸い、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
 
 {% dialect-switcher title="圧縮NFTの償還" %}
 {% dialect title="JavaScript" id="js" %}

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

@@ -8,8 +8,8 @@ description: Bubblegumで圧縮NFTをdelegateする方法を学びます。
 
 これにより、委任されたアカウント(**Delegate Authority**とも呼ばれます)が所有者に代わってアクションを実行できます。これらのアクションは以下の通りです:
 
-- [cNFTの転送](/jp/bubblegum/transfer-cnfts)。Delegate Authorityは転送後にリセットされます(つまり、新しい所有者に設定されます)。
-- [cNFTのバーン](/jp/bubblegum/burn-cnfts)。
+- [cNFTの転送](/ja/bubblegum/transfer-cnfts)。Delegate Authorityは転送後にリセットされます(つまり、新しい所有者に設定されます)。
+- [cNFTのバーン](/ja/bubblegum/burn-cnfts)。
 
 これらのアクションのそれぞれで、Delegate Authorityを使用してそれらを実行する方法の例が提供されていますが、通常は単に**Leaf Owner**アカウントをSignerとして渡す代わりに**Leaf Delegate**アカウントをSignerとして提供するだけです。
 
@@ -23,7 +23,7 @@ Delegate Authorityを承認または置き換えるために、所有者は**Del
 - **Previous Leaf Delegate**: 以前のDelegate Authority(存在する場合)。そうでない場合は、これを**Leaf Owner**に設定する必要があります。
 - **New Leaf Delegate**: 承認する新しいDelegate Authority。
 
-さらに、この命令はBubblegum Tree上のリーフを置き換えることになるため、圧縮NFTの整合性を検証するためにより多くのパラメータを提供する必要があります。これらのパラメータはリーフを変更するすべての命令に共通であるため、[以下のFAQ](/jp/bubblegum/faq#replace-leaf-instruction-arguments)に文書化されています。幸い、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
+さらに、この命令はBubblegum Tree上のリーフを置き換えることになるため、圧縮NFTの整合性を検証するためにより多くのパラメータを提供する必要があります。これらのパラメータはリーフを変更するすべての命令に共通であるため、[以下のFAQ](/ja/bubblegum/faq#replace-leaf-instruction-arguments)に文書化されています。幸い、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
 
 {% dialect-switcher title="圧縮NFTのDelegate" %}
 {% dialect title="JavaScript" id="js" %}

+ 1 - 1
src/pages/ja/bubblegum/delegate-trees.md

@@ -6,7 +6,7 @@ description: BubblegumでMerkle Treesをdelegateする方法を学びます。
 
 圧縮NFTの所有者がDelegate Authorityを承認できるのと同様に、Bubblegum Treeの作成者も他のアカウントに代理でアクションを実行することを承認できます。 {% .lead %}
 
-Bubblegum TreeにDelegate Authorityが承認されると、作成者に代わって[圧縮NFTをミント](/jp/bubblegum/mint-cnfts)できるようになります。これはプライベートtreeにのみ関連することに注意してください。なぜなら、パブリックtreeでは誰でもミントできるからです。
+Bubblegum TreeにDelegate Authorityが承認されると、作成者に代わって[圧縮NFTをミント](/ja/bubblegum/mint-cnfts)できるようになります。これはプライベートtreeにのみ関連することに注意してください。なぜなら、パブリックtreeでは誰でもミントできるからです。
 
 ## TreeのDelegate Authorityの承認
 

+ 2 - 2
src/pages/ja/bubblegum/guides/index.md

@@ -8,8 +8,8 @@ description: SolanaブロックチェーンのMetaplex Bubblegum圧縮NFTプロ
 
 {% quick-links %}
 
-{% quick-link title="Solanaで1,000,000のNFTコレクションを作成する方法" icon="CodeBracketSquare" href="/jp/bubblegum/guides/javascript/how-to-create-1000000-nfts-on-solana" description="Bubblegum treesからcNFTを作成およびミントする方法を学びます" /%}
+{% quick-link title="Solanaで1,000,000のNFTコレクションを作成する方法" icon="CodeBracketSquare" href="/ja/bubblegum/guides/javascript/how-to-create-1000000-nfts-on-solana" description="Bubblegum treesからcNFTを作成およびミントする方法を学びます" /%}
 
-{% quick-link title="他のSVMでcNFTとやりとりする方法" icon="CodeBracketSquare" href="/jp/bubblegum/guides/javascript/how-to-interact-with-cnfts-on-other-svms" description="Solana devnetおよびmainnet-beta以外のSolana Virtual Machine(SVM)環境で、Metaplex Bubblegumプログラムを使用して圧縮NFTとやりとりする方法。" /%}
+{% quick-link title="他のSVMでcNFTとやりとりする方法" icon="CodeBracketSquare" href="/ja/bubblegum/guides/javascript/how-to-interact-with-cnfts-on-other-svms" description="Solana devnetおよびmainnet-beta以外のSolana Virtual Machine(SVM)環境で、Metaplex Bubblegumプログラムを使用して圧縮NFTとやりとりする方法。" /%}
 
 {% /quick-links %}

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

@@ -160,7 +160,7 @@ Merkle Treeは、ほとんどの場合、cNFTデータの「データベース
 
 Merkle Tree cNFTデータの性質により、データはSolanaアカウントに保存されず、代わりにレジャー状態に保存されます。データを効果的に読み戻すために、データが作成/変更されるときにすべてのcNFTデータをインデックスするインデクサを使用する必要があります。DAS対応RPCは、DASインデクササービスを実行しているRPCであり、オンデマンドでこのデータをRPCプロバイダに照会することを可能にします。
 
-DASをサポートするRPCプロバイダの完全なリストについては、[RPCプロバイダページ](/jp/rpc-providers#rp-cs-with-das-support)をご覧ください。
+DASをサポートするRPCプロバイダの完全なリストについては、[RPCプロバイダページ](/ja/rpc-providers#rp-cs-with-das-support)をご覧ください。
 
 これらのプロバイダのいずれかから無料のアカウントを取得して、このガイドを実行できます。サインアップしたら、以前の`umi`作成中にRPCインスタンスを置き換える必要があります。
 

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

@@ -6,7 +6,7 @@ description: Solanaのdevnetおよびmainnet-beta以外のSolana Virtual Machine
 
 ## 概要
 
-このガイドでは、Solanaのdevnetおよびmainnet-beta以外のSolana Virtual Machine(SVM)環境でJavaScriptを使用して圧縮NFT(cNFT)アセットとやりとりするための特定の要件について詳しく説明します。cNFTの作成のより包括的な概要については、[BubblegumでSolanaで100万個のNFTを作成する](/jp/bubblegum/guides/javascript/how-to-create-1000000-nfts-on-solana)ガイドを参照してください。
+このガイドでは、Solanaのdevnetおよびmainnet-beta以外のSolana Virtual Machine(SVM)環境でJavaScriptを使用して圧縮NFT(cNFT)アセットとやりとりするための特定の要件について詳しく説明します。cNFTの作成のより包括的な概要については、[BubblegumでSolanaで100万個のNFTを作成する](/ja/bubblegum/guides/javascript/how-to-create-1000000-nfts-on-solana)ガイドを参照してください。
 
 ### 必要なパッケージ
 

+ 14 - 14
src/pages/ja/bubblegum/index.md

@@ -6,7 +6,7 @@ description: 圧縮NFTの概要を説明します。
 
 {% callout type="note" title="新しいBubblegumバージョン" %}
 
-より多くの柔軟性と機能を可能にするために、[Bubblegum v2](/jp/bubblegum-v2)の使用をお勧めします。
+より多くの柔軟性と機能を可能にするために、[Bubblegum v2](/ja/bubblegum-v2)の使用をお勧めします。
 
 {% /callout %}
 
@@ -14,7 +14,7 @@ Bubblegumは、Solana上で圧縮NFT(cNFT)を作成し、操作するため
 
 {% quick-links %}
 
-{% quick-link title="はじめに" icon="InboxArrowDown" href="/jp/bubblegum/getting-started" description="お好みの言語またはライブラリを見つけて、圧縮NFTを開始しましょう。" /%}
+{% quick-link title="はじめに" icon="InboxArrowDown" href="/ja/bubblegum/getting-started" description="お好みの言語またはライブラリを見つけて、圧縮NFTを開始しましょう。" /%}
 
 {% quick-link title="APIリファレンス" icon="CodeBracketSquare" href="https://mpl-bubblegum.typedoc.metaplex.com/" target="_blank" description="特定のものをお探しですか?APIリファレンスをご覧いただき、答えを見つけてください。" /%}
 
@@ -41,7 +41,7 @@ NFTがSolanaブロックチェーン上で繁栄するにつれて、NFTがイ
 
 ## マークルツリー、リーフ、証明
 
-圧縮NFTは、**マークルツリー**のコンテキストでのみ存在します。マークルツリーが何であるかは[専用の高度なガイド](/jp/bubblegum/concurrent-merkle-trees)で説明していますが、この概要では、マークルツリーを**リーフ**と呼ぶハッシュのコレクションと考えることができます。各リーフは、[圧縮NFTのデータをハッシュ化する](/jp/bubblegum/hashed-nft-data)ことで得られます。
+圧縮NFTは、**マークルツリー**のコンテキストでのみ存在します。マークルツリーが何であるかは[専用の高度なガイド](/ja/bubblegum/concurrent-merkle-trees)で説明していますが、この概要では、マークルツリーを**リーフ**と呼ぶハッシュのコレクションと考えることができます。各リーフは、[圧縮NFTのデータをハッシュ化する](/ja/bubblegum/hashed-nft-data)ことで得られます。
 
 マークルツリー内の各リーフに対して、**証明**と呼ばれるハッシュのリストを提供できます。これにより、誰でも与えられたリーフがそのツリーの一部であることを検証できます。圧縮NFTが更新または転送されるたびに、関連するリーフも変更され、その証明も変更されます。
 
@@ -123,23 +123,23 @@ NFTがSolanaブロックチェーン上で繁栄するにつれて、NFTがイ
 
 1つのNFTのデータを取得するためだけに、毎回何百万ものトランザクションをクロールすることは、確実に最良のユーザー体験ではありません。したがって、圧縮NFTは、この情報をリアルタイムでインデックス化し、エンドユーザーからこれを抽象化するために一部のRPCに依存しています。圧縮NFTの取得を可能にする結果のRPC APIを**Metaplex DAS API**と呼びます。
 
-すべてのRPCがDAS APIをサポートしているわけではないことに注意してください。そのため、アプリケーションで圧縮NFTを使用する際に適切なRPCを選択するために、["Metaplex DAS API RPC"](/jp/rpc-providers)ページに興味があるかもしれません。
+すべてのRPCがDAS APIをサポートしているわけではないことに注意してください。そのため、アプリケーションで圧縮NFTを使用する際に適切なRPCを選択するために、["Metaplex DAS API RPC"](/ja/rpc-providers)ページに興味があるかもしれません。
 
-これについては、高度な["NFTデータの保存とインデックス化"](/jp/bubblegum/stored-nft-data)ガイドで詳しく説明しています。
+これについては、高度な["NFTデータの保存とインデックス化"](/ja/bubblegum/stored-nft-data)ガイドで詳しく説明しています。
 
 ## 機能
 
 NFTデータがアカウント内に存在しないにもかかわらず、圧縮NFTに対してさまざまな操作を実行することは依然として可能です。これは、現在のNFTデータをリクエストし、そのハッシュ化されたリーフがマークルツリーで有効であることを確認することで可能になります。そのため、圧縮NFTで以下の操作を実行できます:
 
-- 関連するコレクションを持つまたは持たない[cNFTのミント](/jp/bubblegum/mint-cnfts)。
-- [cNFTの転送](/jp/bubblegum/transfer-cnfts)。
-- [cNFTのデータの更新](/jp/bubblegum/update-cnfts)。
-- [cNFTのバーン](/jp/bubblegum/burn-cnfts)。
-- [cNFTを通常のNFTに解凍](/jp/bubblegum/decompress-cnfts)。これは既存のスマートコントラクトとの相互運用性を可能にしますが、レント費用付きのオンチェーンアカウントを作成することに注意してください。
-- [cNFTのデリゲート](/jp/bubblegum/delegate-cnfts)。
-- [cNFTコレクションの検証と検証解除](/jp/bubblegum/verify-collections)。
-- [cNFTの作成者の検証と検証解除](/jp/bubblegum/verify-creators)。
+- 関連するコレクションを持つまたは持たない[cNFTのミント](/ja/bubblegum/mint-cnfts)。
+- [cNFTの転送](/ja/bubblegum/transfer-cnfts)。
+- [cNFTのデータの更新](/ja/bubblegum/update-cnfts)。
+- [cNFTのバーン](/ja/bubblegum/burn-cnfts)。
+- [cNFTを通常のNFTに解凍](/ja/bubblegum/decompress-cnfts)。これは既存のスマートコントラクトとの相互運用性を可能にしますが、レント費用付きのオンチェーンアカウントを作成することに注意してください。
+- [cNFTのデリゲート](/ja/bubblegum/delegate-cnfts)。
+- [cNFTコレクションの検証と検証解除](/ja/bubblegum/verify-collections)。
+- [cNFTの作成者の検証と検証解除](/ja/bubblegum/verify-creators)。
 
 ## 次のステップ
 
-圧縮NFTが高レベルでどのように機能するかを理解したので、圧縮NFTとの相互作用に使用できるさまざまな言語/フレームワークを列挙した[はじめに](/jp/bubblegum/getting-started)ページをチェックすることをお勧めします。その後、さまざまな[機能ページ](/jp/bubblegum/create-trees)を使用して、cNFTで実行できる特定の操作について詳しく学ぶことができます。最後に、cNFTとマークルツリーの知識を深めるための[高度なガイド](/jp/bubblegum/concurrent-merkle-trees)も利用できます。
+圧縮NFTが高レベルでどのように機能するかを理解したので、圧縮NFTとの相互作用に使用できるさまざまな言語/フレームワークを列挙した[はじめに](/ja/bubblegum/getting-started)ページをチェックすることをお勧めします。その後、さまざまな[機能ページ](/ja/bubblegum/create-trees)を使用して、cNFTで実行できる特定の操作について詳しく学ぶことができます。最後に、cNFTとマークルツリーの知識を深めるための[高度なガイド](/ja/bubblegum/concurrent-merkle-trees)も利用できます。

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

@@ -4,10 +4,10 @@ metaTitle: 圧縮NFTのミント | Bubblegum
 description: Bubblegumで圧縮NFTをミントする方法を学びます。
 ---
 {% callout title="Bubblegum v2" type="note" %}
-このページはBubblegum v1に固有です。拡張された機能セットについては、Bubblegum v2の使用をお勧めします。Bubblegum v2を使用している場合は、詳細について[Bubblegum v2](/jp/bubblegum-v2/mint-cnfts)のドキュメントを参照してください。
+このページはBubblegum v1に固有です。拡張された機能セットについては、Bubblegum v2の使用をお勧めします。Bubblegum v2を使用している場合は、詳細について[Bubblegum v2](/ja/bubblegum-v2/mint-cnfts)のドキュメントを参照してください。
 {% /callout %}
 
-[前のページ](/jp/bubblegum/create-trees)では、圧縮NFTをミントするためにBubblegum Treeが必要であり、その作成方法を見てきました。今度は、指定されたBubblegum Treeから圧縮NFTをミントする方法を見てみましょう。 {% .lead %}
+[前のページ](/ja/bubblegum/create-trees)では、圧縮NFTをミントするためにBubblegum Treeが必要であり、その作成方法を見てきました。今度は、指定されたBubblegum Treeから圧縮NFTをミントする方法を見てみましょう。 {% .lead %}
 
 BubblegumプログラムはTwo つのミント命令を提供します。1つはNFTをコレクションに関連付けずにミントするもの、もう1つはNFTを指定されたコレクションにミントするものです。後者は単にいくつかの追加パラメータが必要なだけなので、まず前者から見てみましょう。
 
@@ -86,7 +86,7 @@ const assetId = findLeafAssetIdPda(umi, { merkleTree, leafIndex: leaf.nonce });
 
 圧縮NFTがミントされた_後に_コレクションを設定および検証することは可能ですが、Bubblegumプログラムは圧縮NFTを指定されたコレクションに直接ミントする便利な命令を提供します。BubblegumはMetaplex Token MetadataコレクションNFTを使用して圧縮NFTをグループ化します。この命令は**MintToCollectionV1**と呼ばれ、**MintV1**命令と同じパラメータを使用しますが、以下のパラメータが追加されます:
 
-- **Collection Mint**: 圧縮NFTが属する[Token Metadata Collection NFT](https://developers.metaplex.com/jp/token-metadata/collections#creating-collection-nfts)のミントアドレス。
+- **Collection Mint**: 圧縮NFTが属する[Token Metadata Collection NFT](https://developers.metaplex.com/ja/token-metadata/collections#creating-collection-nfts)のミントアドレス。
 - **Collection Authority**: 指定されたCollection NFTを管理することが許可された権限。これは、Collection NFTのupdate authorityまたは委任されたコレクション権限のいずれかです。Bubblegum Treeが公開されているかどうかに関係なく、この権限はトランザクションに署名する必要があります。
 - **Collection Authority Record Pda**: 委任されたコレクション権限を使用する場合、権限がCollection NFTを管理することが許可されていることを確認するために、Delegate Record PDAを提供する必要があります。これは、新しい「Metadata Delegate」PDAまたはレガシーの「Collection Authority Record」PDAのいずれかを使用できます。
 

+ 2 - 2
src/pages/ja/bubblegum/sdk/index.md

@@ -8,8 +8,8 @@ MPL-Bubblegumを使用した新しいMetaplex圧縮NFT(cNFT)標準を開始
 
 {% quick-links %}
 
-{% quick-link title="JavaScript" icon="JavaScript" href="/jp/bubblegum/sdk/javascript" description="Umiフレームワークベースのaファイル-Bubblegum用JavaScriptライブラリを開始しましょう。" /%}
+{% quick-link title="JavaScript" icon="JavaScript" href="/ja/bubblegum/sdk/javascript" description="Umiフレームワークベースの Bubblegum 用 JavaScript ライブラリを開始しましょう。" /%}
 
-{% quick-link title="Rust" icon="Rust" href="/jp/bubblegum/sdk/rust" description="MPL-Bubblegum Rustクレートを使用して開始しましょう。" /%}
+{% quick-link title="Rust" icon="Rust" href="/ja/bubblegum/sdk/rust" description="MPL-Bubblegum Rustクレートを使用して開始しましょう。" /%}
 
 {% /quick-links %}

+ 3 - 3
src/pages/ja/bubblegum/sdk/javascript.md

@@ -4,9 +4,9 @@ metaTitle: JavaScript SDK | MPL-Bubblegum
 description: MPL-Bubblegum JavaScript SDKを実行するためのプロジェクト設定方法を学びます。
 ---
 
-MetaplexはMPL-BubblegumプログラムとやりとりするためのJavaScriptライブラリを提供しています。[Umiフレームワーク](/jp/umi)のおかげで、多くの独断的な依存関係なしに配布されるため、任意のJavaScriptプロジェクトで使用できる軽量なライブラリを提供します。
+MetaplexはMPL-BubblegumプログラムとやりとりするためのJavaScriptライブラリを提供しています。[Umiフレームワーク](/ja/umi)のおかげで、多くの独断的な依存関係なしに配布されるため、任意のJavaScriptプロジェクトで使用できる軽量なライブラリを提供します。
 
-開始するには、[Umiフレームワークをインストール](/jp/umi/getting-started)し、MPL-Bubblegum JavaScriptライブラリをインストールする必要があります。
+開始するには、[Umiフレームワークをインストール](/ja/umi/getting-started)し、MPL-Bubblegum JavaScriptライブラリをインストールする必要があります。
 
 ## インストール
 
@@ -26,7 +26,7 @@ npm install @metaplex-foundation/mpl-bubblegum
 
 ## Umiセットアップ
 
-Metaplex JavaScript SDKとやりとりするには`umi`インスタンスが必要です。まだ`umi`インスタンスをセットアップおよび設定していない場合は、[Umi入門](/jp/umi/getting-started)ページをチェックし、RPCエンドポイントと`umi`のidentity/signerを設定してください。
+Metaplex JavaScript SDKとやりとりするには`umi`インスタンスが必要です。まだ`umi`インスタンスをセットアップおよび設定していない場合は、[Umi入門](/ja/umi/getting-started)ページをチェックし、RPCエンドポイントと`umi`のidentity/signerを設定してください。
 
 `umi`インスタンスの初期化中に、以下を使用してMPL-Bubblegumパッケージを`umi`に追加できます:
 

+ 2 - 2
src/pages/ja/bubblegum/sdk/rust.md

@@ -28,7 +28,7 @@ cargo add mpl-bubblegum
 
 すべてのBubblegum命令のリストはここにあります:[MPL-Bubblegum - Rust Instructions](https://docs.rs/mpl-bubblegum/latest/mpl_bubblegum/instructions/index.html)
 
-Rustの使用に関するより包括的なガイドについては、[Metaplex Rust SDKsガイド](/jp/guides/rust/metaplex-rust-sdks)ページをご覧ください。
+Rustの使用に関するより包括的なガイドについては、[Metaplex Rust SDKsガイド](/ja/guides/rust/metaplex-rust-sdks)ページをご覧ください。
 
 #### CreateTreeConfigBuilder - 例
 
@@ -99,7 +99,7 @@ pub async fn create_tree(keypair: Keypair) {
 
 すべてのBubblegum命令のリストはここにあります:[Metaplex Bubblegum - Rust Instructions](https://docs.rs/mpl-bubblegum/latest/mpl_bubblegum/instructions/index.html)
 
-Metaplexクレートを使用してCPI命令を作成するより包括的なガイドについては、[Metaplexプログラムへのcpi方法ガイド](/jp/guides/rust/how-to-cpi-into-a-metaplex-program)ページをご覧ください。
+Metaplexクレートを使用してCPI命令を作成するより包括的なガイドについては、[Metaplexプログラムへのcpi方法ガイド](/ja/guides/rust/how-to-cpi-into-a-metaplex-program)ページをご覧ください。
 
 #### CreateTreeConfigCpiBuilder - 例
 

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

@@ -9,10 +9,10 @@ description: Bubblegumで圧縮NFTを転送する方法を学びます。
 - **Leaf Owner**と**Leaf Delegate**: 圧縮NFTの現在の所有者とそのdelegate権限(存在する場合)。これらのいずれかがトランザクションに署名する必要があります。
 - **New Leaf Owner**: 圧縮NFTの新しい所有者のアドレス。
 
-この命令は圧縮NFTを更新するため、Bubblegum Tree上のリーフを置き換えることに注意してください。これは、圧縮NFTの整合性を検証するために追加のパラメータを提供する必要があることを意味します。これらのパラメータはリーフを変更するすべての命令に共通であるため、[以下のFAQ](/jp/bubblegum/faq#replace-leaf-instruction-arguments)に文書化されています。幸い、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
+この命令は圧縮NFTを更新するため、Bubblegum Tree上のリーフを置き換えることに注意してください。これは、圧縮NFTの整合性を検証するために追加のパラメータを提供する必要があることを意味します。これらのパラメータはリーフを変更するすべての命令に共通であるため、[以下のFAQ](/ja/bubblegum/faq#replace-leaf-instruction-arguments)に文書化されています。幸い、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
 
 {% callout title="トランザクションサイズ" type="note" %}
-トランザクションサイズエラーが発生した場合は、`getAssetWithProof`で`{ truncateCanopy: true }`の使用を検討してください。詳細については[FAQ](/jp/bubblegum/faq#replace-leaf-instruction-arguments)を参照してください。
+トランザクションサイズエラーが発生した場合は、`getAssetWithProof`で`{ truncateCanopy: true }`の使用を検討してください。詳細については[FAQ](/ja/bubblegum/faq#replace-leaf-instruction-arguments)を参照してください。
 {% /callout %}
 
 {% dialect-switcher title="圧縮NFTの転送" %}

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

@@ -8,9 +8,9 @@ description: Bubblegumでコレクションの設定、検証、および検証
 
 技術的には、これはcNFTの**Collection**オブジェクトの**Verified**ブール値を切り替えることになり、コレクションの権限がこの圧縮NFTをコレクションの一部として承認したことを誰もが知ることができます。
 
-NFTに関するコレクションの概念に馴染みがない場合、それらは他のNFTをグループ化するために使用できる特別な非圧縮NFTです。**Collection NFT**のデータは、コレクション全体の名前とブランディングを記述するために使用されます。[Metaplex Verified Collectionsについて詳しく読むことができます](/jp/token-metadata/collections)。
+NFTに関するコレクションの概念に馴染みがない場合、それらは他のNFTをグループ化するために使用できる特別な非圧縮NFTです。**Collection NFT**のデータは、コレクション全体の名前とブランディングを記述するために使用されます。[Metaplex Verified Collectionsについて詳しく読むことができます](/ja/token-metadata/collections)。
 
-**Mint to Collection V1**命令を使用して圧縮NFTを直接コレクションにミントすることが可能であることに注意してください([ここに文書化されています](/jp/bubblegum/mint-cnfts#minting-to-a-collection))。とはいえ、コレクションなしでcNFTを既にミントしている場合は、そのcNFTのコレクションを検証、検証解除、および設定する方法を見てみましょう。
+**Mint to Collection V1**命令を使用して圧縮NFTを直接コレクションにミントすることが可能であることに注意してください([ここに文書化されています](/ja/bubblegum/mint-cnfts#minting-to-a-collection))。とはいえ、コレクションなしでcNFTを既にミントしている場合は、そのcNFTのコレクションを検証、検証解除、および設定する方法を見てみましょう。
 
 ## コレクションの検証
 
@@ -21,7 +21,7 @@ BubblegumプログラムのbusineCollectionV**Verify Collection**命令を使用
 - **Collection Mint**: Collection NFTのmintアカウント。
 - **Collection Authority**: Collection NFTのupdate authority — または承認されたコレクションdelegate — をSignerとして。コレクション権限がdelegate権限の場合、プログラムは新しい統合された**Metadata Delegate**システムとレガシーの**Collection Authority Records**アカウントの両方をサポートすることに注意してください。適切なPDAを**Collection Authority Record Pda**パラメータに渡すだけです。
 
-さらに、この命令はBubblegum Tree上のリーフを置き換えることになるため、圧縮NFTの整合性を検証するためにより多くのパラメータを提供する必要があります。これらのパラメータはリーフを変更するすべての命令に共通であるため、[以下のFAQ](/jp/bubblegum/faq#replace-leaf-instruction-arguments)に文書化されています。幸い、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
+さらに、この命令はBubblegum Tree上のリーフを置き換えることになるため、圧縮NFTの整合性を検証するためにより多くのパラメータを提供する必要があります。これらのパラメータはリーフを変更するすべての命令に共通であるため、[以下のFAQ](/ja/bubblegum/faq#replace-leaf-instruction-arguments)に文書化されています。幸い、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
 
 {% dialect-switcher title="圧縮NFTのコレクションの検証" %}
 {% dialect title="JavaScript" id="js" %}

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

@@ -8,13 +8,13 @@ description: Bubblegumで作成者を検証および検証解除する方法を
 
 これらの命令は、cNFTの**Creators**配列の適切なアイテムの**Verified**ブール値を切り替えます。そのブール値は、ウォレットやマーケットプレイスなどのアプリがどの作成者が本物でどの作成者がそうでないかを知ることができるため重要です。
 
-作成者は[圧縮NFTをミント](/jp/bubblegum/mint-cnfts)するときに、ミントトランザクションに署名することで直接自分自身を検証できることに注目する価値があります。とはいえ、既存の圧縮NFT上で作成者が自分自身を検証または検証解除する方法を見てみましょう。
+作成者は[圧縮NFTをミント](/ja/bubblegum/mint-cnfts)するときに、ミントトランザクションに署名することで直接自分自身を検証できることに注目する価値があります。とはいえ、既存の圧縮NFT上で作成者が自分自身を検証または検証解除する方法を見てみましょう。
 
 ## 作成者の検証
 
 Bubblegumプログラムは、検証しようとしている作成者によって署名される必要がある**Verify Creator**命令を提供します。
 
-さらに、この命令はBubblegum Tree上のリーフを置き換えることになるため、圧縮NFTの整合性を検証するためにより多くのパラメータを提供する必要があります。これらのパラメータはリーフを変更するすべての命令に共通であるため、[以下のFAQ](/jp/bubblegum/faq#replace-leaf-instruction-arguments)に文書化されています。幸い、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
+さらに、この命令はBubblegum Tree上のリーフを置き換えることになるため、圧縮NFTの整合性を検証するためにより多くのパラメータを提供する必要があります。これらのパラメータはリーフを変更するすべての命令に共通であるため、[以下のFAQ](/ja/bubblegum/faq#replace-leaf-instruction-arguments)に文書化されています。幸い、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
 
 {% dialect-switcher title="圧縮NFTの作成者の検証" %}
 {% dialect title="JavaScript" id="js" %}

+ 3 - 3
src/pages/ja/candy-machine/getting-started/index.md

@@ -8,10 +8,10 @@ description: キャンディマシンを始めましょう。
 
 {% quick-links %}
 
-{% quick-link title="JavaScript" icon="JavaScript" href="/jp/candy-machine/getting-started/js" description="Umiフレームワークベースの私たちのJavaScriptライブラリを始めましょう。" /%}
+{% quick-link title="JavaScript" icon="JavaScript" href="/ja/candy-machine/getting-started/js" description="Umiフレームワークベースの私たちのJavaScriptライブラリを始めましょう。" /%}
 
-{% quick-link title="Rust" icon="Rust" href="/jp/candy-machine/getting-started/rust" description="私たちのRustクレートを使って始めましょう。" /%}
+{% quick-link title="Rust" icon="Rust" href="/ja/candy-machine/getting-started/rust" description="私たちのRustクレートを使って始めましょう。" /%}
 
-{% quick-link title="Sugar" icon="SolidCommandLine" href="/jp/candy-machine/sugar/getting-started" description="コマンドラインツールSugarを使って始めましょう。" /%}
+{% quick-link title="Sugar" icon="SolidCommandLine" href="/ja/candy-machine/sugar/getting-started" description="コマンドラインツールSugarを使って始めましょう。" /%}
 
 {% /quick-links %}

+ 1 - 1
src/pages/ja/candy-machine/getting-started/js.md

@@ -26,7 +26,7 @@ import { mplCandyMachine } from '@metaplex-foundation/mpl-candy-machine'
 const umi = createUmi('http://127.0.0.1:8899').use(mplCandyMachine())
 ```
 
-次に、使用するウォレットをUmiに伝える必要があります。これは[キーペア](/jp/umi/connecting-to-umi#connecting-w-a-secret-key)または[Solanaウォレットアダプター](/jp/umi/connecting-to-umi#connecting-w-wallet-adapter)のいずれかです。
+次に、使用するウォレットをUmiに伝える必要があります。これは[キーペア](/ja/umi/connecting-to-umi#connecting-w-a-secret-key)または[Solanaウォレットアダプター](/ja/umi/connecting-to-umi#connecting-w-wallet-adapter)のいずれかです。
 
 これで完了です。[ライブラリが提供するさまざまな関数](https://mpl-candy-machine.typedoc.metaplex.com/)を使用し、`Umi`インスタンスを渡すことでNFTと相互作用できるようになりました。以下は、キャンディマシンアカウントとそれに関連するキャンディガードアカウントを取得する例です。
 

+ 4 - 4
src/pages/ja/candy-machine/guard-groups.md

@@ -4,13 +4,13 @@ metaTitle: ガードグループ | キャンディマシン
 description: 複数のガードグループの設定方法を説明します。
 ---
 
-[前のページ](/jp/candy-machine/guards)では、ガードを紹介し、それらを使用してキャンディマシンのアクセス制御を定義しました。ガードを使用することで、例えばミントごとに1 SOLの支払いを追加し、特定の日付後にミントが開始されることを確保できることがわかりました。しかし、2回目の日付後に2 SOLを請求したい場合はどうでしょうか?特定のトークン保有者を無料または割引価格でミントできるようにしたい場合はどうでしょうか? {% .lead %}
+[前のページ](/ja/candy-machine/guards)では、ガードを紹介し、それらを使用してキャンディマシンのアクセス制御を定義しました。ガードを使用することで、例えばミントごとに1 SOLの支払いを追加し、特定の日付後にミントが開始されることを確保できることがわかりました。しかし、2回目の日付後に2 SOLを請求したい場合はどうでしょうか?特定のトークン保有者を無料または割引価格でミントできるようにしたい場合はどうでしょうか? {% .lead %}
 
 それぞれが独自の要件を持つ複数のガードセットを定義できたらどうでしょうか?そのために、**ガードグループ**を作成しました!
 
 ## グループはどのように機能しますか?
 
-[任意のキャンディマシンでガードを設定する方法](/jp/candy-machine/guards#creating-a-candy-machine-with-guards)を覚えていますか?有効にしたいガードの設定を提供するだけです。ガードグループも同じように機能しますが、それらを識別するための一意の**ラベル**も付ける必要があります。
+[任意のキャンディマシンでガードを設定する方法](/ja/candy-machine/guards#creating-a-candy-machine-with-guards)を覚えていますか?有効にしたいガードの設定を提供するだけです。ガードグループも同じように機能しますが、それらを識別するための一意の**ラベル**も付ける必要があります。
 
 したがって、各ガードグループには以下の属性があります:
 
@@ -171,7 +171,7 @@ APIリファレンス: [create](https://mpl-candy-machine.typedoc.metaplex.com/f
 
 上記の例では、同じ**ボット税**ガードを両方のグループに提供する必要があったことに注目してください。これは、キャンディマシンで設定されたグローバル**ガード**を活用することで簡単にできます。
 
-ガードグループを使用する際、キャンディマシンのグローバルガード — [前のページ](/jp/candy-machine/guards)で説明したもの — は**デフォルトガードとして機能します**!つまり、グループで明示的に有効にしてオーバーライドしない限り、グループはグローバルガードと同じガード設定をデフォルトで使用します。
+ガードグループを使用する際、キャンディマシンのグローバルガード — [前のページ](/ja/candy-machine/guards)で説明したもの — は**デフォルトガードとして機能します**!つまり、グループで明示的に有効にしてオーバーライドしない限り、グループはグローバルガードと同じガード設定をデフォルトで使用します。
 
 簡単なまとめです:
 
@@ -348,4 +348,4 @@ APIリファレンス: [create](https://mpl-candy-machine.typedoc.metaplex.com/f
 
 ガードグループは、ニーズに合わせてシーケンシャルおよび/または並列のミントワークフローを定義することで、キャンディマシンに全く新しい次元をもたらします。
 
-[次のページ](/jp/candy-machine/guard-route)では、ガードに関するもう一つのエキサイティングな機能:ガード命令について見てみましょう!
+[次のページ](/ja/candy-machine/guard-route)では、ガードに関するもう一つのエキサイティングな機能:ガード命令について見てみましょう!

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

@@ -23,9 +23,9 @@ description: ガード固有の命令の実行方法を説明します。
 
 例えば、フローズンNFT — ミントが終了してからのみ解凍できる — のサポートを追加するガードは、そのルート命令を使用してトレジャリーエスクローアカウントを初期化し、適切な条件下で誰でもミントされたNFTを解凍できるようにできます。前者には「init」、後者には「thaw」に等しい**パス**属性を使用してこれら2つの機能を区別できます。
 
-それをサポートする各ガードのルート命令とその基本パスの詳細な説明は、[それぞれのページ](/jp/candy-machine/guards)で見つけることができます。
+それをサポートする各ガードのルート命令とその基本パスの詳細な説明は、[それぞれのページ](/ja/candy-machine/guards)で見つけることができます。
 
-例を提供してルート命令の動作を説明するために少し時間を取りましょう。例えば、[**許可リスト**](/jp/candy-machine/guards/allow-list)ガードは、ミントウォレットが事前設定されたウォレットのリストの一部であることを検証するためにルート命令をサポートしています。
+例を提供してルート命令の動作を説明するために少し時間を取りましょう。例えば、[**許可リスト**](/ja/candy-machine/guards/allow-list)ガードは、ミントウォレットが事前設定されたウォレットのリストの一部であることを検証するためにルート命令をサポートしています。
 
 これは[Merkle Trees](https://en.m.wikipedia.org/wiki/Merkle_tree)を使用して行います。つまり、許可されたウォレットの全リストのハッシュを作成し、そのハッシュ — **Merkle Root**として知られる — をガード設定に保存する必要があります。ウォレットが許可リストにあることを証明するには、プログラムがMerkle Rootを計算し、それがガードの設定と一致することを確認できるハッシュのリスト — **Merkle Proof**として知られる — を提供する必要があります。
 
@@ -202,6 +202,6 @@ APIリファレンス: [route](https://mpl-candy-machine.typedoc.metaplex.com/fu
 
 ## まとめ
 
-ルート命令は、ガードが独自のカスタムプログラムロジックを含むことを可能にすることで、さらに強力にします。各ガードの完全な機能セットを確認するために、[利用可能なすべてのガード](/jp/candy-machine/guards)の専用ページをチェックしてください。
+ルート命令は、ガードが独自のカスタムプログラムロジックを含むことを可能にすることで、さらに強力にします。各ガードの完全な機能セットを確認するために、[利用可能なすべてのガード](/ja/candy-machine/guards)の専用ページをチェックしてください。
 
-キャンディマシンとそのガードの設定について知るべきことをすべて理解したので、ミントについて話すときが来ました。[次のページ](/jp/candy-machine/mint)でお会いしましょう!
+キャンディマシンとそのガードの設定について知るべきことをすべて理解したので、ミントについて話すときが来ました。[次のページ](/ja/candy-machine/mint)でお会いしましょう!

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

@@ -23,7 +23,7 @@ description: ガードの動作と有効化方法を説明します。
 
 ## キャンディガードアカウント
 
-[キャンディマシンアカウント](/jp/candy-machine/manage#candy-machine-account)の内容を覚えている場合、そこにガードの兆候はありません。これは、ガードが**キャンディガードプログラム**によって作成される**キャンディガードアカウント**と呼ばれる別のアカウントに存在するためです。
+[キャンディマシンアカウント](/ja/candy-machine/manage#candy-machine-account)の内容を覚えている場合、そこにガードの兆候はありません。これは、ガードが**キャンディガードプログラム**によって作成される**キャンディガードアカウント**と呼ばれる別のアカウントに存在するためです。
 
 各キャンディマシンアカウントは通常、保護レイヤーを追加する独自のキャンディガードアカウントと関連付けられるべきです。
 
@@ -182,24 +182,24 @@ SDKは、独自のキャンディガードプログラムとそのカスタム
 
 以下のリストでは、各ガードの簡単な説明と、より高度な読み物のための専用ページへのリンクを提供します。
 
-- [**アドレスゲート**](/jp/candy-machine/guards/address-gate): ミントを単一のアドレスに制限します。
-- [**許可リスト**](/jp/candy-machine/guards/allow-list): ウォレットアドレスリストを使用して誰がミントを許可されているかを決定します。
-- [**ボット税**](/jp/candy-machine/guards/bot-tax): 無効なトランザクションに請求する設定可能な税。
-- [**終了日**](/jp/candy-machine/guards/end-date): ミントを終了する日付を決定します。
-- [**フリーズSOL支払い**](/jp/candy-machine/guards/freeze-sol-payment): フリーズ期間付きでミントの価格をSOLで設定します。
-- [**フリーズトークン支払い**](/jp/candy-machine/guards/freeze-token-payment): フリーズ期間付きでミントの価格をトークン量で設定します。
-- [**ゲートキーパー**](/jp/candy-machine/guards/gatekeeper): ゲートキーパーネットワーク経由でミントを制限します(例:Captcha統合)。
-- [**ミント制限**](/jp/candy-machine/guards/mint-limit): ウォレットごとのミント数の制限を指定します。
-- [**NFTバーン**](/jp/candy-machine/guards/nft-burn): ミントを指定されたコレクションの保有者に制限し、NFTのバーンを要求します。
-- [**NFTゲート**](/jp/candy-machine/guards/nft-gate): ミントを指定されたコレクションの保有者に制限します。
-- [**NFT支払い**](/jp/candy-machine/guards/nft-payment): ミントの価格を指定されたコレクションのNFTとして設定します。
-- [**引き換え済み量**](/jp/candy-machine/guards/redeemed-amount): 総ミント量に基づいてミントの終了を決定します。
-- [**SOL支払い**](/jp/candy-machine/guards/sol-payment): ミントの価格をSOLで設定します。
-- [**開始日**](/jp/candy-machine/guards/start-date): ミントの開始日を決定します。
-- [**サードパーティ署名者**](/jp/candy-machine/guards/third-party-signer): トランザクションに追加の署名者を要求します。
-- [**トークンバーン**](/jp/candy-machine/guards/token-burn): ミントを指定されたトークンの保有者に制限し、トークンのバーンを要求します。
-- [**トークンゲート**](/jp/candy-machine/guards/token-gate): ミントを指定されたトークンの保有者に制限します。
-- [**トークン支払い**](/jp/candy-machine/guards/token-payment): ミントの価格をトークン量で設定します。
+- [**アドレスゲート**](/ja/candy-machine/guards/address-gate): ミントを単一のアドレスに制限します。
+- [**許可リスト**](/ja/candy-machine/guards/allow-list): ウォレットアドレスリストを使用して誰がミントを許可されているかを決定します。
+- [**ボット税**](/ja/candy-machine/guards/bot-tax): 無効なトランザクションに請求する設定可能な税。
+- [**終了日**](/ja/candy-machine/guards/end-date): ミントを終了する日付を決定します。
+- [**フリーズSOL支払い**](/ja/candy-machine/guards/freeze-sol-payment): フリーズ期間付きでミントの価格をSOLで設定します。
+- [**フリーズトークン支払い**](/ja/candy-machine/guards/freeze-token-payment): フリーズ期間付きでミントの価格をトークン量で設定します。
+- [**ゲートキーパー**](/ja/candy-machine/guards/gatekeeper): ゲートキーパーネットワーク経由でミントを制限します(例:Captcha統合)。
+- [**ミント制限**](/ja/candy-machine/guards/mint-limit): ウォレットごとのミント数の制限を指定します。
+- [**NFTバーン**](/ja/candy-machine/guards/nft-burn): ミントを指定されたコレクションの保有者に制限し、NFTのバーンを要求します。
+- [**NFTゲート**](/ja/candy-machine/guards/nft-gate): ミントを指定されたコレクションの保有者に制限します。
+- [**NFT支払い**](/ja/candy-machine/guards/nft-payment): ミントの価格を指定されたコレクションのNFTとして設定します。
+- [**引き換え済み量**](/ja/candy-machine/guards/redeemed-amount): 総ミント量に基づいてミントの終了を決定します。
+- [**SOL支払い**](/ja/candy-machine/guards/sol-payment): ミントの価格をSOLで設定します。
+- [**開始日**](/ja/candy-machine/guards/start-date): ミントの開始日を決定します。
+- [**サードパーティ署名者**](/ja/candy-machine/guards/third-party-signer): トランザクションに追加の署名者を要求します。
+- [**トークンバーン**](/ja/candy-machine/guards/token-burn): ミントを指定されたトークンの保有者に制限し、トークンのバーンを要求します。
+- [**トークンゲート**](/ja/candy-machine/guards/token-gate): ミントを指定されたトークンの保有者に制限します。
+- [**トークン支払い**](/ja/candy-machine/guards/token-payment): ミントの価格をトークン量で設定します。
 
 ## ガード付きキャンディマシンの作成
 
@@ -387,4 +387,4 @@ APIリファレンス: [createCandyMachineV2](https://mpl-candy-machine.typedoc.
 
 ## まとめ
 
-ガードはキャンディマシンの重要なコンポーネントです。ミントプロセスの設定を簡単にしながら、誰でもアプリケーション固有のニーズに対して独自のガードを作成できます。[次のページ](/jp/candy-machine/guard-groups)では、ガードグループを使用してさらに多くのミントシナリオを作成する方法を見てみましょう!
+ガードはキャンディマシンの重要なコンポーネントです。ミントプロセスの設定を簡単にしながら、誰でもアプリケーション固有のニーズに対して独自のガードを作成できます。[次のページ](/ja/candy-machine/guard-groups)では、ガードグループを使用してさらに多くのミントシナリオを作成する方法を見てみましょう!

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

@@ -124,7 +124,7 @@ Mint Limitガードには以下のミント設定が含まれます:
 
 - **ID**: このガードの一意な識別子。
 
-注意:SDK の助けなしで命令を構築する予定の場合、これらのミント設定およびそれ以外を命令引数と残りのアカウントの組み合わせとして提供する必要があります。詳細については、[Candy GuardのプログラムドキュメントAtion](https://github.com/metaplex-foundation/mpl-candy-machine/tree/main/programs/candy-guard#mintlimit)を参照してください。
+注意:SDK の助けなしで命令を構築する予定の場合、これらのミント設定およびそれ以外を命令引数と残りのアカウントの組み合わせとして提供する必要があります。詳細については、[Candy Guardのプログラムドキュメンテーション](https://github.com/metaplex-foundation/mpl-candy-machine/tree/main/programs/candy-guard#mintlimit)を参照してください。
 
 {% dialect-switcher title="Mint Limitガードでミントする" %}
 {% dialect title="JavaScript" id="js" %}

+ 2 - 2
src/pages/ja/candy-machine/guides/airdrop-mint-to-another-wallet.md

@@ -26,7 +26,7 @@ description: Candy Machineから別のウォレットアドレスにNFTをミン
 別のウォレットへNFTをミントすることは、エアドロップ、景品配布、または複数の受信者にNFTを配布する際に特に有用です。このガイドでは、Candy Machineから異なるウォレットアドレスにNFTをミントするプロセスを案内します。ミントプロセスを開始する人がミントコストを負担することに注意することが重要です。したがって、受信者が自分でNFTを請求する方がしばしばコスト効率的です。
 
 {% callout type="note" title="重要な考慮事項" %}
-- 別のウォレットへのミントは高額になる可能性があります。代わりに[allowlist](/jp/candy-machine/guards/allow-list)や[NFT Gate](/jp/candy-machine/guards/nft-gate) Guardを使用した請求メカニズムを検討することをお勧めします。
+- 別のウォレットへのミントは高額になる可能性があります。代わりに[allowlist](/ja/candy-machine/guards/allow-list)や[NFT Gate](/ja/candy-machine/guards/nft-gate) Guardを使用した請求メカニズムを検討することをお勧めします。
 - ガードありとガードなしのCandy Machineで利用可能な異なるツールがあります。ガードなしでのミントは通常より簡単です。
 {% /callout %}
 
@@ -40,7 +40,7 @@ Sugar CLIは、他のウォレットにNFTをミントするための2つの主
 1. `sugar mint`:*1つ*の特定のウォレットにミント
 2. `sugar airdrop`:*複数*のウォレットにミント
 
-Sugarを通じてミントを許可する前提条件は、**ガードが添付されていない**Candy Machineを作成することです。Sugarを使用してCandy Machineを作成するには、[この](https://developers.metaplex.com/jp/candy-machine/guides/create-an-nft-collection-on-solana-with-candy-machine)ガイドの最初のステップに従ってください。Candy Machineにガードが添付されている場合、`sugar guard remove`を使用してガードを削除できます。
+Sugarを通じてミントを許可する前提条件は、**ガードが添付されていない**Candy Machineを作成することです。Sugarを使用してCandy Machineを作成するには、[この](https://developers.metaplex.com/ja/candy-machine/guides/create-an-nft-collection-on-solana-with-candy-machine)ガイドの最初のステップに従ってください。Candy Machineにガードが添付されている場合、`sugar guard remove`を使用してガードを削除できます。
 
 ### `sugar mint`を使用した単一受信者ミント
 

+ 1 - 1
src/pages/ja/candy-machine/guides/create-an-nft-collection-on-solana-with-candy-machine.md

@@ -328,4 +328,4 @@ sugar guard show
 - Metaplex Candy Machine SDK - [https://developers.metaplex.com/candy-machine](https://developers.metaplex.com/candy-machine)
 
 ### さらなる読み物
-- [Sugar CLIドキュメント](/jp/candy-machine/sugar)
+- [Sugar CLIドキュメント](/ja/candy-machine/sugar)

+ 2 - 2
src/pages/ja/candy-machine/guides/index.md

@@ -5,6 +5,6 @@ description: SolanaでNFTコレクションを作成するためのMetaplex Cand
 ---
 
 {% quick-links %}
-{% quick-link title="エアドロップ例 - 別のウォレットへNFTをミント" icon="CodeBracketSquare" href="/jp/candy-machine/guides/airdrop-mint-to-another-wallet" description="Sugar CLIまたはTypescriptを使用してNFTをエアドロップする方法を学ぶ" /%}
-{% quick-link title="Candy Machineを使用してSolanaでNFTコレクションを作成" icon="CodeBracketSquare" href="/jp/candy-machine/guides/create-an-nft-collection-on-solana-with-candy-machine" description="Metaplex Candy MachineとSugar CLIを使用してSolanaでNFTコレクションをローンチする方法を学ぶ" /%}
+{% quick-link title="エアドロップ例 - 別のウォレットへNFTをミント" icon="CodeBracketSquare" href="/ja/candy-machine/guides/airdrop-mint-to-another-wallet" description="Sugar CLIまたはTypescriptを使用してNFTをエアドロップする方法を学ぶ" /%}
+{% quick-link title="Candy Machineを使用してSolanaでNFTコレクションを作成" icon="CodeBracketSquare" href="/ja/candy-machine/guides/create-an-nft-collection-on-solana-with-candy-machine" description="Metaplex Candy MachineとSugar CLIを使用してSolanaでNFTコレクションをローンチする方法を学ぶ" /%}
 {% /quick-links %}

+ 17 - 17
src/pages/ja/candy-machine/index.md

@@ -13,12 +13,12 @@ MetaplexプロトコルのキャンディマシンはSolanaでの公平なNFTコ
 {% quick-links %}
 
 
-{% quick-link title="はじめに" icon="InboxArrowDown" href="/jp/candy-machine/getting-started" description="お好みの言語またはライブラリを見つけて、キャンディマシンを始めましょう。" /%}
+{% quick-link title="はじめに" icon="InboxArrowDown" href="/ja/candy-machine/getting-started" description="お好みの言語またはライブラリを見つけて、キャンディマシンを始めましょう。" /%}
 {% quick-link title="APIリファレンス" icon="CodeBracketSquare" href="https://mpl-candy-machine.typedoc.metaplex.com/" target="_blank" description="何か特定のものをお探しですか?私たちがサポートします。" /%}
 {% /quick-links %}
 
 {% callout %}
-このドキュメントはキャンディマシンV3を参照しており、MetaplexトークンメタデータNFTをミントするために使用できます。代わりにコアアセットを作成したい場合は、[コアキャンディマシン](/jp/core-candy-machine)をご覧ください。
+このドキュメントはキャンディマシンV3を参照しており、MetaplexトークンメタデータNFTをミントするために使用できます。代わりにコアアセットを作成したい場合は、[コアキャンディマシン](/ja/core-candy-machine)をご覧ください。
 {% /callout %}
 
 ## はじめに
@@ -50,7 +50,7 @@ MetaplexプロトコルのキャンディマシンはSolanaでの公平なNFTコ
 {% edge from="action" to="candy-machine" path="straight" /%}
 {% /diagram %}
 
-作成されたキャンディマシンは独自の設定を追跡し、すべてのNFTがどのようにミントされるべきかを理解するのに役立ちます。例えば、このキャンディマシンからミントされたすべてのNFTに割り当てられる`creators`パラメーターがあります。次のページでキャンディマシンの作成と設定について、コード例を含めてさらに詳しく見ていきます:[キャンディマシン設定](/jp/candy-machine/settings)と[キャンディマシン管理](/jp/candy-machine/manage)。
+作成されたキャンディマシンは独自の設定を追跡し、すべてのNFTがどのようにミントされるべきかを理解するのに役立ちます。例えば、このキャンディマシンからミントされたすべてのNFTに割り当てられる`creators`パラメーターがあります。次のページでキャンディマシンの作成と設定について、コード例を含めてさらに詳しく見ていきます:[キャンディマシン設定](/ja/candy-machine/settings)と[キャンディマシン管理](/ja/candy-machine/manage)。
 
 しかし、どのNFTがそのキャンディマシンからミントされるべきかはまだ分かりません。言い換えると、キャンディマシンがまだ読み込まれていません。したがって、次のステップはキャンディマシンにアイテムを挿入することです。
 
@@ -77,7 +77,7 @@ MetaplexプロトコルのキャンディマシンはSolanaでの公平なNFTコ
 - `name`: NFTの名前。
 - `uri`: NFTの[JSONメタデータ](https://developers.metaplex.com/token-metadata/token-standard#the-non-fungible-standard)を指すURI。これは、JSONメタデータがオンチェーン(例:Arweave、IPFS)またはオフチェーン(例:AWS、独自サーバー)のストレージプロバイダーを通じて既にアップロードされていることを意味します。
 
-その他のすべてのパラメーターはすべてのNFT間で共有され、重複を避けるためにキャンディマシンの設定に直接保持されます。詳細は[アイテム挿入](/jp/candy-machine/insert-items)をご覧ください。
+その他のすべてのパラメーターはすべてのNFT間で共有され、重複を避けるためにキャンディマシンの設定に直接保持されます。詳細は[アイテム挿入](/ja/candy-machine/insert-items)をご覧ください。
 
 この時点では、まだ実際のNFTは作成されていないことに注目してください。私たちは単に、ミント時に**オンデマンドでNFTを作成**するために必要なすべてのデータでキャンディマシンを読み込んでいるだけです。これが次のステップにつながります。
 
@@ -118,9 +118,9 @@ MetaplexプロトコルのキャンディマシンはSolanaでの公平なNFTコ
 {% edge from="mint-3" to="nft-3" path="bezier" /%}
 {% /diagram %}
 
-キャンディマシンが読み込まれ、すべての事前設定された条件が満たされると、ユーザーはそこからNFTをミントし始めることができます。この時点でのみ、NFTがSolanaブロックチェーン上で作成されます。ミントする前に、一部のユーザーはCaptchaの実行やMerkle Proofの送信などの追加の検証ステップを実行する必要がある場合があることに注意してください。詳細は[ミント](/jp/candy-machine/mint)をご覧ください。
+キャンディマシンが読み込まれ、すべての事前設定された条件が満たされると、ユーザーはそこからNFTをミントし始めることができます。この時点でのみ、NFTがSolanaブロックチェーン上で作成されます。ミントする前に、一部のユーザーはCaptchaの実行やMerkle Proofの送信などの追加の検証ステップを実行する必要がある場合があることに注意してください。詳細は[ミント](/ja/candy-machine/mint)をご覧ください。
 
-すべてのNFTがキャンディマシンからミントされると、その目的を果たし、ブロックチェーン上の一部のストレージスペースを解放し、一部のレントを取り戻すために安全に削除することができます。詳細は[キャンディマシン管理](/jp/candy-machine/manage)をご覧ください。
+すべてのNFTがキャンディマシンからミントされると、その目的を果たし、ブロックチェーン上の一部のストレージスペースを解放し、一部のレントを取り戻すために安全に削除することができます。詳細は[キャンディマシン管理](/ja/candy-machine/manage)をご覧ください。
 
 {% diagram %}
 {% node #action-1 label="4. 削除" theme="pink" /%}
@@ -142,7 +142,7 @@ MetaplexプロトコルのキャンディマシンはSolanaでの公平なNFTコ
 
 キャンディマシンの仕組みを理解したところで、クリエイターがキャンディマシンのミントプロセスを保護しカスタマイズする様々な方法を掘り下げてみましょう。
 
-クリエイターは「ガード」と呼ばれるものを使用してキャンディマシンにさまざまな機能を追加できます。Metaplexキャンディマシンには、[合計21のデフォルトガード](/jp/candy-machine/guards)を含む**キャンディガード**と呼ばれる追加のSolanaプログラムが付属しています。追加プログラムを使用することで、高度な開発者は主要なキャンディマシンプログラムに依存しながら、独自のカスタムガードを作成するためにデフォルトのキャンディガードプログラムをフォークできます。
+クリエイターは「ガード」と呼ばれるものを使用してキャンディマシンにさまざまな機能を追加できます。Metaplexキャンディマシンには、[合計21のデフォルトガード](/ja/candy-machine/guards)を含む**キャンディガード**と呼ばれる追加のSolanaプログラムが付属しています。追加プログラムを使用することで、高度な開発者は主要なキャンディマシンプログラムに依存しながら、独自のカスタムガードを作成するためにデフォルトのキャンディガードプログラムをフォークできます。
 
 各ガードは自由に有効化および設定できるため、クリエイターは必要な機能を選択できます。すべてのガードを無効にすることは、誰でもいつでも無料でNFTをミントできるようにすることと同等であり、これはおそらく私たちが望むものではありません。したがって、より現実的な例を作成するためにいくつかのガードを見てみましょう。
 
@@ -202,18 +202,18 @@ SOLが不足 {% .text-xs %} \
 {% edge from="mint-4" to="fail-4" path="bezier" /%}
 {% /diagram %}
 
-ご覧のように、21を超えるデフォルトガードとカスタムガードを作成する機能により、クリエイターは自分にとって重要な機能を厳選し、完璧なキャンディマシンを構成できます。これは非常に強力な機能であるため、多くのページを割いています。ガードについて詳しく知るための最適な場所は[キャンディガード](/jp/candy-machine/guards)ページです。
+ご覧のように、21を超えるデフォルトガードとカスタムガードを作成する機能により、クリエイターは自分にとって重要な機能を厳選し、完璧なキャンディマシンを構成できます。これは非常に強力な機能であるため、多くのページを割いています。ガードについて詳しく知るための最適な場所は[キャンディガード](/ja/candy-machine/guards)ページです。
 
 ## 次のステップ
 
 これはキャンディマシンの良い概要を提供しますが、発見し学ぶことがまだたくさんあります。このキャンディマシンドキュメントの他のページで期待できる内容は以下の通りです。
 
-- [はじめに](/jp/candy-machine/getting-started)。キャンディマシンを管理するために使用できるさまざまなライブラリとSDKをリストします。
-- [キャンディマシン設定](/jp/candy-machine/settings)。キャンディマシン設定を非常に詳細に説明します。
-- [キャンディマシン管理](/jp/candy-machine/manage)。キャンディマシンの管理方法を説明します。
-- [アイテム挿入](/jp/candy-machine/insert-items)。キャンディマシンにアイテムを読み込む方法を説明します。
-- [キャンディガード](/jp/candy-machine/guards)。ガードの動作と有効化方法を説明します。
-- [ガードグループ](/jp/candy-machine/guard-groups)。複数のガードグループの設定方法を説明します。
-- [特別なガード命令](/jp/candy-machine/guard-route)。ガード固有の命令の実行方法を説明します。
-- [ミント](/jp/candy-machine/mint)。キャンディマシンからのミント方法とミント前要件の処理方法を説明します。
-- [リファレンス](/jp/candy-machine/references)。キャンディマシンに関連するAPIリファレンスをリストします。
+- [はじめに](/ja/candy-machine/getting-started)。キャンディマシンを管理するために使用できるさまざまなライブラリとSDKをリストします。
+- [キャンディマシン設定](/ja/candy-machine/settings)。キャンディマシン設定を非常に詳細に説明します。
+- [キャンディマシン管理](/ja/candy-machine/manage)。キャンディマシンの管理方法を説明します。
+- [アイテム挿入](/ja/candy-machine/insert-items)。キャンディマシンにアイテムを読み込む方法を説明します。
+- [キャンディガード](/ja/candy-machine/guards)。ガードの動作と有効化方法を説明します。
+- [ガードグループ](/ja/candy-machine/guard-groups)。複数のガードグループの設定方法を説明します。
+- [特別なガード命令](/ja/candy-machine/guard-route)。ガード固有の命令の実行方法を説明します。
+- [ミント](/ja/candy-machine/mint)。キャンディマシンからのミント方法とミント前要件の処理方法を説明します。
+- [リファレンス](/ja/candy-machine/references)。キャンディマシンに関連するAPIリファレンスをリストします。

+ 3 - 3
src/pages/ja/candy-machine/insert-items.md

@@ -6,7 +6,7 @@ description: キャンディマシンにアイテムを読み込む方法を説
 
 これまでキャンディマシンの作成と設定について学びましたが、その中にNFTにミントできるアイテムを挿入する方法はまだ見ていません。では、このページでそれに取り組みましょう。 {% .lead %}
 
-**アイテム挿入は[コンフィグライン設定](/jp/candy-machine/settings#config-line-settings)を使用するキャンディマシンにのみ適用される**ことを覚えておくことが重要です。これは、[隠し設定](/jp/candy-machine/settings#hidden-settings)を使用するキャンディマシンからミントされたNFTはすべて同じ「隠された」名前とURIを共有するためです。
+**アイテム挿入は[コンフィグライン設定](/ja/candy-machine/settings#config-line-settings)を使用するキャンディマシンにのみ適用される**ことを覚えておくことが重要です。これは、[隠し設定](/ja/candy-machine/settings#hidden-settings)を使用するキャンディマシンからミントされたNFTはすべて同じ「隠された」名前とURIを共有するためです。
 
 ## JSONメタデータのアップロード
 
@@ -21,7 +21,7 @@ description: キャンディマシンにアイテムを読み込む方法を説
 
 幸いなことに、SDKがこれを支援してくれます。JSONオブジェクトをアップロードし、そのURIを取得できます。
 
-さらに、[Sugar](/jp/candy-machine/sugar)などのツールは、並列アップロード、プロセスのキャッシュ、失敗したアップロードの再試行により、JSONメタデータのアップロードを簡単にします。
+さらに、[Sugar](/ja/candy-machine/sugar)などのツールは、並列アップロード、プロセスのキャッシュ、失敗したアップロードの再試行により、JSONメタデータのアップロードを簡単にします。
 
 {% dialect-switcher title="アイテムのアップロード" %}
 {% dialect title="JavaScript" id="js" %}
@@ -186,4 +186,4 @@ APIリファレンス: [addConfigLines](https://mpl-candy-machine.typedoc.metapl
 
 これで、NFTをミントする準備が整ったキャンディマシンができました!しかし、ミントプロセスの要件はまだ作成していません。ミントの価格を設定するにはどうすればよいでしょうか?購入者が特定のトークンまたは特定のコレクションのNFTの保有者であることを確保するにはどうすればよいでしょうか?ミントの開始日を設定するにはどうすればよいでしょうか?終了条件についてはどうでしょうか?
 
-[次のページ](/jp/candy-machine/guards)では、これらすべてを可能にするキャンディガードについて話します。
+[次のページ](/ja/candy-machine/guards)では、これらすべてを可能にするキャンディガードについて話します。

+ 8 - 8
src/pages/ja/candy-machine/manage.md

@@ -4,7 +4,7 @@ metaTitle: 作成、更新、取得、削除 | キャンディマシン
 description: キャンディマシンの管理方法を説明します。
 ---
 
-[前のページ](/jp/candy-machine/settings)では、キャンディマシンのさまざまな設定について説明しました。今度は、これらの設定を使用してキャンディマシンを作成・更新する方法を見てみましょう。また、既存のキャンディマシンを取得する方法と、その目的を果たした後に削除する方法についても話します。 {% .lead %}
+[前のページ](/ja/candy-machine/settings)では、キャンディマシンのさまざまな設定について説明しました。今度は、これらの設定を使用してキャンディマシンを作成・更新する方法を見てみましょう。また、既存のキャンディマシンを取得する方法と、その目的を果たした後に削除する方法についても話します。 {% .lead %}
 
 基本的に、キャンディマシンの作成、読み取り、更新、削除のステップを説明します。さあ始めましょう!
 
@@ -12,13 +12,13 @@ description: キャンディマシンの管理方法を説明します。
 
 前のページで説明した設定を使用して、真新しいキャンディマシンアカウントを作成できます。
 
-SDKはこれをさらに推し進め、すべての新しいキャンディマシンアカウントを、ミントプロセスに影響を与えるすべてのアクティブなガードを追跡する新しいキャンディガードアカウントと関連付けます。このページではキャンディマシンアカウントに焦点を当てますが、キャンディガードアカウントとそれで何ができるかについては[専用ページ](/jp/candy-machine/guards)で詳しく説明します。
+SDKはこれをさらに推し進め、すべての新しいキャンディマシンアカウントを、ミントプロセスに影響を与えるすべてのアクティブなガードを追跡する新しいキャンディガードアカウントと関連付けます。このページではキャンディマシンアカウントに焦点を当てますが、キャンディガードアカウントとそれで何ができるかについては[専用ページ](/ja/candy-machine/guards)で詳しく説明します。
 
-キャンディマシンは[コレクションNFTと関連付けられる必要があり](/jp/candy-machine/settings#metaplex-certified-collections)、その更新権限がこの操作を承認する必要があることを覚えておいてください。キャンディマシン用のコレクションNFTをまだ持っていない場合、SDKがそれも支援できます。
+キャンディマシンは[コレクションNFTと関連付けられる必要があり](/ja/candy-machine/settings#metaplex-certified-collections)、その更新権限がこの操作を承認する必要があることを覚えておいてください。キャンディマシン用のコレクションNFTをまだ持っていない場合、SDKがそれも支援できます。
 
 {% callout type="note" title="ランダム性" %}
 
-アセットの「ランダム」ミントプロセスは完全に予測不可能ではなく、十分なリソースと悪意のある意図によって影響を受ける可能性があるため、リビール機能には[隠し設定](/jp/candy-machine/settings#hidden-settings)を利用することが推奨される場合があります。
+アセットの「ランダム」ミントプロセスは完全に予測不可能ではなく、十分なリソースと悪意のある意図によって影響を受ける可能性があるため、リビール機能には[隠し設定](/ja/candy-machine/settings#hidden-settings)を利用することが推奨される場合があります。
 
 {% /callout %}
 
@@ -97,7 +97,7 @@ APIリファレンス: [create](https://mpl-candy-machine.typedoc.metaplex.com/f
 
 キャンディマシンアカウントを作成したので、その中にどのようなデータが格納されているかを見てみましょう。
 
-まず、アカウントが作成されたときに提供されたすべての設定を格納し、変更を追跡します。これらの設定の詳細については、[前のページ](/jp/candy-machine/settings)を参照してください。
+まず、アカウントが作成されたときに提供されたすべての設定を格納し、変更を追跡します。これらの設定の詳細については、[前のページ](/ja/candy-machine/settings)を参照してください。
 
 さらに、以下の属性を格納します:
 
@@ -105,7 +105,7 @@ APIリファレンス: [create](https://mpl-candy-machine.typedoc.metaplex.com/f
 - **アカウントバージョン**。この列挙型は、キャンディマシンのアカウントバージョンを追跡するために使用されます。利用可能な機能とアカウントの解釈方法を決定するために使用されます。これは、キャンディマシンプログラム(キャンディマシンコアとキャンディガードプログラムを含む)の第3回目で最新の反復を指す「キャンディマシンV3」と混同しないでください。
 - **機能フラグ**。これは、より多くの機能が導入される際の後方・前方互換性でプログラムを支援します。
 
-最後に、キャンディマシンに挿入されたすべてのアイテムと、それらがミントされたかどうかを格納します。これは[**隠し設定**](/jp/candy-machine/settings#hidden-settings)ではアイテムを挿入できないため、[**コンフィグライン設定**](/jp/candy-machine/settings#config-line-settings)を使用するキャンディマシンにのみ適用されます。このセクションには以下の情報が含まれます:
+最後に、キャンディマシンに挿入されたすべてのアイテムと、それらがミントされたかどうかを格納します。これは[**隠し設定**](/ja/candy-machine/settings#hidden-settings)ではアイテムを挿入できないため、[**コンフィグライン設定**](/ja/candy-machine/settings#config-line-settings)を使用するキャンディマシンにのみ適用されます。このセクションには以下の情報が含まれます:
 
 - 読み込まれたアイテムの数。
 - 挿入された、または挿入される予定のすべてのアイテムのリスト。アイテムがまだ挿入されていない場合、その位置のアイテムの名前とURIは空です。
@@ -226,7 +226,7 @@ APIリファレンス: [setCandyMachineAuthority](https://mpl-candy-machine.type
 
 ## 共有NFTデータの更新
 
-キャンディマシンのすべてのミントされたNFT間で共有される属性も更新できます。[前のページ](/jp/candy-machine/settings#settings-shared-by-all-nf-ts)で述べたように、これらは:売り手手数料基準点数、シンボル、最大エディション供給量、可変性、クリエイターです。
+キャンディマシンのすべてのミントされたNFT間で共有される属性も更新できます。[前のページ](/ja/candy-machine/settings#settings-shared-by-all-nf-ts)で述べたように、これらは:売り手手数料基準点数、シンボル、最大エディション供給量、可変性、クリエイターです。
 
 最初のNFTがミントされると、これらの属性は更新できなくなることに注意してください。
 
@@ -423,4 +423,4 @@ APIリファレンス: [deleteCandyMachine](https://mpl-candy-machine.typedoc.me
 
 ## まとめ
 
-キャンディマシンの作成、読み取り、更新、削除ができるようになりましたが、まだアイテムを読み込む方法を知りません。[次のページ](/jp/candy-machine/insert-items)でこれに取り組みましょう!
+キャンディマシンの作成、読み取り、更新、削除ができるようになりましたが、まだアイテムを読み込む方法を知りません。[次のページ](/ja/candy-machine/insert-items)でこれに取り組みましょう!

+ 8 - 8
src/pages/ja/candy-machine/mint.md

@@ -8,7 +8,7 @@ description: キャンディマシンからのミント方法とミント前要
 
 ## 基本的なミント
 
-[キャンディガードページ](/jp/candy-machine/guards#why-another-program)で述べたように、キャンディマシンからNFTをミントする責任を持つ2つのプログラムがあります:NFTのミントを担当するキャンディマシンコアプログラムと、その上に設定可能なアクセス制御レイヤーを追加し、カスタムガードを提供するためにフォークできるキャンディガードプログラムです。
+[キャンディガードページ](/ja/candy-machine/guards#why-another-program)で述べたように、キャンディマシンからNFTをミントする責任を持つ2つのプログラムがあります:NFTのミントを担当するキャンディマシンコアプログラムと、その上に設定可能なアクセス制御レイヤーを追加し、カスタムガードを提供するためにフォークできるキャンディガードプログラムです。
 
 そのため、キャンディマシンからミントする方法は2つあります:
 
@@ -238,7 +238,7 @@ APIリファレンス: [mintV2](https://mpl-candy-machine.typedoc.metaplex.com/f
 
 {% /diagram %}
 
-[利用可能な各ガード](/jp/candy-machine/guards)には独自のドキュメントページがあり、そのガードがミント時にミント設定の提供を期待するかどうかがわかります。
+[利用可能な各ガード](/ja/candy-machine/guards)には独自のドキュメントページがあり、そのガードがミント時にミント設定の提供を期待するかどうかがわかります。
 
 ミント設定を必要としないガードのみを使用する場合は、上記の「基本的なミント」セクションで説明したのと同じ方法でミントできます。それ以外の場合は、それらを必要とするすべてのガードのミント設定を含む追加のオブジェクト属性を提供する必要があります。SDKを使用した実際の例を見てみましょう。
 
@@ -457,9 +457,9 @@ APIリファレンス: [mintV2](https://mpl-candy-machine.typedoc.metaplex.com/f
 
 ### ルート命令の使用
 
-ガードが事前検証ステップを必要とする方法の1つは、「ルート」命令を介して[独自の特別な命令](/jp/candy-machine/guard-route)を使用することです。
+ガードが事前検証ステップを必要とする方法の1つは、「ルート」命令を介して[独自の特別な命令](/ja/candy-machine/guard-route)を使用することです。
 
-その良い例が**許可リスト**ガードです。このガードを使用する際、ルート命令を呼び出し、有効なMerkle Proofを提供することで、ウォレットが事前定義されたウォレットのリストに属することを検証する必要があります。このルート命令が成功すると、そのウォレット用の許可リストPDAが作成され、ミント命令がそれを読み取って許可リストガードを検証できます。[許可リストガードの専用ページで詳細を読むことができます](/jp/candy-machine/guards/allow-list)。
+その良い例が**許可リスト**ガードです。このガードを使用する際、ルート命令を呼び出し、有効なMerkle Proofを提供することで、ウォレットが事前定義されたウォレットのリストに属することを検証する必要があります。このルート命令が成功すると、そのウォレット用の許可リストPDAが作成され、ミント命令がそれを読み取って許可リストガードを検証できます。[許可リストガードの専用ページで詳細を読むことができます](/ja/candy-machine/guards/allow-list)。
 
 {% diagram %}
 
@@ -512,7 +512,7 @@ APIリファレンス: [mintV2](https://mpl-candy-machine.typedoc.metaplex.com/f
 
 ガードが事前検証ステップを実行するもう一つの方法は、外部ソリューションに依存することです。
 
-例えば、**ゲートキーパー**ガードを使用する際、設定されたゲートキーパーネットワークに依存するチャレンジ(Captchaの完了など)を実行してゲートウェイトークンを要求する必要があります。その後、ゲートキーパーガードはそのようなゲートウェイトークンの存在をチェックして、ミントを検証または拒否します。[ゲートキーパーガードの専用ページで詳細を学ぶことができます](/jp/candy-machine/guards/gatekeeper)。
+例えば、**ゲートキーパー**ガードを使用する際、設定されたゲートキーパーネットワークに依存するチャレンジ(Captchaの完了など)を実行してゲートウェイトークンを要求する必要があります。その後、ゲートキーパーガードはそのようなゲートウェイトークンの存在をチェックして、ミントを検証または拒否します。[ゲートキーパーガードの専用ページで詳細を学ぶことができます](/ja/candy-machine/guards/gatekeeper)。
 
 {% diagram %}
 
@@ -569,7 +569,7 @@ APIリファレンス: [mintV2](https://mpl-candy-machine.typedoc.metaplex.com/f
 
 キャンディマシンに含めたいガードの1つは、失敗したミントに設定可能なSOL量を請求することでキャンディマシンをボットから保護するボット税ガードです。この金額は通常、本物のユーザーからの純粋なミスに影響を与えることなくボットを傷つけるために小額に設定されます。すべてのボット税はキャンディマシンアカウントに転送されるため、ミントが終了した後、キャンディマシンアカウントを削除してこれらの資金にアクセスできます。
 
-このガードは少し特別で、他のすべてのガードのミント動作に影響を与えます。ボット税が有効化され、他のガードがミントの検証に失敗した場合、**トランザクションは成功したふりをします**。つまり、プログラムからエラーは返されませんが、NFTもミントされません。これは、資金がボットからキャンディマシンアカウントに転送されるためにトランザクションが成功する必要があるためです。[ボット税ガードの専用ページで詳細を学ぶことができます](/jp/candy-machine/guards/bot-tax)。
+このガードは少し特別で、他のすべてのガードのミント動作に影響を与えます。ボット税が有効化され、他のガードがミントの検証に失敗した場合、**トランザクションは成功したふりをします**。つまり、プログラムからエラーは返されませんが、NFTもミントされません。これは、資金がボットからキャンディマシンアカウントに転送されるためにトランザクションが成功する必要があるためです。[ボット税ガードの専用ページで詳細を学ぶことができます](/ja/candy-machine/guards/bot-tax)。
 
 ## まとめ
 
@@ -577,5 +577,5 @@ APIリファレンス: [mintV2](https://mpl-candy-machine.typedoc.metaplex.com/f
 
 興味を持たれるかもしれない追加の読み物リソースは次のとおりです:
 
-- [利用可能なすべてのガード](/jp/candy-machine/guards):利用可能なすべてのガードを見て、必要なものを厳選できます。
-- [初めてのキャンディマシンを作成](/jp/candy-machine/guides/create-an-nft-collection-on-solana-with-candy-machine):このハウツーガイドは、「[Sugar](/jp/candy-machine/sugar)」というCLIツールを使用してアセットをアップロードし、ゼロから新しいキャンディマシンを作成するのに役立ちます。
+- [利用可能なすべてのガード](/ja/candy-machine/guards):利用可能なすべてのガードを見て、必要なものを厳選できます。
+- [初めてのキャンディマシンを作成](/ja/candy-machine/guides/create-an-nft-collection-on-solana-with-candy-machine):このハウツーガイドは、「[Sugar](/ja/candy-machine/sugar)」というCLIツールを使用してアセットをアップロードし、ゼロから新しいキャンディマシンを作成するのに役立ちます。

+ 6 - 6
src/pages/ja/candy-machine/pnfts.md

@@ -4,7 +4,7 @@ metaTitle: プログラマブルNFT | Candy Machine
 description: Candy MachineからプログラマブルNFTをミントする方法を説明します。
 ---
 
-Token Metadataのバージョン`1.7`では、特にクリエイターがセカンダリセールでロイヤルティを執行できる[プログラマブルNFTと呼ばれる新しいアセットクラス](/jp/token-metadata/pnfts)が導入されました。
+Token Metadataのバージョン`1.7`では、特にクリエイターがセカンダリセールでロイヤルティを執行できる[プログラマブルNFTと呼ばれる新しいアセットクラス](/ja/token-metadata/pnfts)が導入されました。
 
 Candy Machine Coreのバージョン`1.0`とCandy Guardのバージョン`1.0`以降、**Candy MachineからプログラマブルNFTをミント**することが可能になり、既存のCandy Machineのトークン標準を更新することもできます。
 
@@ -18,7 +18,7 @@ Candy Machine Coreのバージョン`1.0`とCandy Guardのバージョン`1.0`
 
 さらに、`collectionDelegateRecord`アカウントは、Token Metadataの新しい[メタデータ委譲記録](https://docs.rs/mpl-token-metadata/latest/mpl_token_metadata/accounts/struct.MetadataDelegateRecord.html)を参照するようになります。
 
-詳細については、このドキュメントの「[Candy Machineの作成](/jp/candy-machine/manage#create-candy-machines)」セクションを読むことをお勧めしますが、プログラマブルNFTをミントする新しいCandy Machineを作成するためにSDKを使用する方法の例を以下に示します。
+詳細については、このドキュメントの「[Candy Machineの作成](/ja/candy-machine/manage#create-candy-machines)」セクションを読むことをお勧めしますが、プログラマブルNFTをミントする新しいCandy Machineを作成するためにSDKを使用する方法の例を以下に示します。
 
 {% dialect-switcher title="新しいPNFT Candy Machineの作成" %}
 {% dialect title="JavaScript" id="js" %}
@@ -43,7 +43,7 @@ APIリファレンス: [create](https://mpl-candy-machine.typedoc.metaplex.com/f
 
 新しい`setTokenStandard`命令を使用して、既存のCandy Machineのトークン標準を更新することが可能です。Candy Machine `V1`でこの命令を呼び出すと、Candy Machineも`V2`にアップグレードし、トークン標準をアカウントデータに保存します。
 
-詳細については、このドキュメントの「[トークン標準の更新](/jp/candy-machine/manage#update-token-standard)」セクションを読むことをお勧めしますが、既存のCandy Machineのトークン標準をプログラマブルNFTに更新するためにSDKを使用する方法の例を以下に示します。
+詳細については、このドキュメントの「[トークン標準の更新](/ja/candy-machine/manage#update-token-standard)」セクションを読むことをお勧めしますが、既存のCandy Machineのトークン標準をプログラマブルNFTに更新するためにSDKを使用する方法の例を以下に示します。
 
 {% dialect-switcher title="Candy Machineのトークン標準の変更" %}
 {% dialect title="JavaScript" id="js" %}
@@ -67,7 +67,7 @@ APIリファレンス: [setTokenStandard](https://mpl-candy-machine.typedoc.meta
 
 さらに、プログラマブルNFTと互換性のあるコレクションの設定をサポートするために、新しい`setCollectionV2`命令が追加されました。この命令は通常のNFTでも動作し、`setCollection`命令を非推奨にします。
 
-ここでも、詳細についてはこのドキュメントの「[コレクションの更新](/jp/candy-machine/manage#update-collection)」セクションで読むことができます。
+ここでも、詳細についてはこのドキュメントの「[コレクションの更新](/ja/candy-machine/manage#update-collection)」セクションで読むことができます。
 
 {% dialect-switcher title="Candy Machineのコレクションの更新" %}
 {% dialect title="JavaScript" id="js" %}
@@ -93,7 +93,7 @@ APIリファレンス: [setCollectionV2](https://mpl-candy-machine.typedoc.metap
 
 Candy Machine CoreとCandy Guardプログラムの両方の`mint`命令は、プログラマブルNFTのミントをサポートするように更新されました。この新しい命令は`mintV2`と呼ばれ、`mint`命令に似ていますが、追加のアカウントが渡される必要があります。ここでも、新しい`mintV2`命令は通常のNFTをミントするために使用でき、したがって既存の`mint`命令を非推奨にします。
 
-「[ミント](/jp/candy-machine/mint)」ページ全体が新しい`mintV2`命令を使用するように更新されましたが、プログラマブルNFTでの使用方法の簡単な例を以下に示します。
+「[ミント](/ja/candy-machine/mint)」ページ全体が新しい`mintV2`命令を使用するように更新されましたが、プログラマブルNFTでの使用方法の簡単な例を以下に示します。
 
 {% dialect-switcher title="Candy Machineからのミント" %}
 {% dialect title="JavaScript" id="js" %}
@@ -133,6 +133,6 @@ Candy Guardプログラムが提供するガードのいくつかは、プログ
 
 プログラマブルNFTとCandy Machineに関する以下のリソースが役立つ場合があります:
 
-- [プログラマブルNFTガイド](/jp/token-metadata/pnfts)
+- [プログラマブルNFTガイド](/ja/token-metadata/pnfts)
 - [Candy Machine Coreプログラム](https://github.com/metaplex-foundation/mpl-candy-machine/tree/main/programs/candy-machine-core)
 - [Candy Guardプログラム](https://github.com/metaplex-foundation/mpl-candy-machine/tree/main/programs/candy-guard)

+ 5 - 5
src/pages/ja/candy-machine/settings.md

@@ -35,7 +35,7 @@ const candyMachineSettings = {
 
 キャンディマシン設定の大部分は、そこからミントされるNFTを定義するために使用されます。これは、NFT属性の多くがすべてのミントされたNFTで同じになるためです。したがって、キャンディマシンにアイテムを読み込むたびにこれらの属性を繰り返す必要がなく、キャンディマシン設定で一度設定します。
 
-ミントされたNFT同士を区別できる唯一の属性は、NFTの**名前**とそのJSONメタデータを指す**URI**であることに注意してください。詳細は[アイテム挿入](/jp/candy-machine/insert-items)をご覧ください。
+ミントされたNFT同士を区別できる唯一の属性は、NFTの**名前**とそのJSONメタデータを指す**URI**であることに注意してください。詳細は[アイテム挿入](/ja/candy-machine/insert-items)をご覧ください。
 
 以下は、すべてのミントされたNFT間で共有される属性のリストです。
 
@@ -44,7 +44,7 @@ const candyMachineSettings = {
 - **最大エディション供給量**: ミントされたNFTから印刷できるエディションの最大数。ほとんどのユースケースでは、ミントされたNFTが複数回印刷されることを防ぐために、これを`0`に設定したいでしょう。これを`null`に設定することはできず、キャンディマシンでは無制限エディションはサポートされていません。
 - **可変性**: ミントされたNFTが可変であるべきかどうか。特別な理由がない限り、これを`true`に設定することをお勧めします。将来NFTを不可変にすることはできますが、不可変なNFTを再び可変にすることは絶対にできません。
 - **クリエイター**: ミントされたNFTに設定されるクリエイターのリスト。アドレスとロイヤリティのパーセント単位での取り分が含まれます — つまり`5`は`5%`です。キャンディマシンアドレスは常にすべてのミントされたNFTの最初のクリエイターとして設定され、自動的に検証されることに注意してください。これにより、NFTが信頼できるキャンディマシンからミントされたことを誰でも検証できます。提供された他のすべてのクリエイターはその後に設定され、これらのクリエイターによって手動で検証される必要があります。
-- **トークン標準**: ミントされたNFTで使用する[トークン標準](/jp/token-metadata/token-standard)。現在のところ、2つのトークン標準のみがサポートされています:"[NonFungible](/jp/token-metadata/token-standard#the-non-fungible-standard)"と"[ProgrammableNonFungible](/jp/token-metadata/token-standard#the-programmable-non-fungible-standard)"。これは_アカウントバージョン_が2以上のキャンディマシンでのみ利用可能です。
+- **トークン標準**: ミントされたNFTで使用する[トークン標準](/ja/token-metadata/token-standard)。現在のところ、2つのトークン標準のみがサポートされています:"[NonFungible](/ja/token-metadata/token-standard#the-non-fungible-standard)"と"[ProgrammableNonFungible](/ja/token-metadata/token-standard#the-programmable-non-fungible-standard)"。これは_アカウントバージョン_が2以上のキャンディマシンでのみ利用可能です。
 - **ルールセット**: キャンディマシンが"ProgrammableNonFungible"トークン標準を使用する場合、すべてのミントされたプログラム可能NFTに割り当てられる明示的なルールセットを提供できます。ルールセットが提供されない場合、コレクションNFTのルールセット(ある場合)を使用することがデフォルトになります。それ以外の場合、プログラム可能NFTはルールセットなしでミントされます。これは_アカウントバージョン_が2以上のキャンディマシンでのみ利用可能です。
 
 {% dialect-switcher title="共有NFT設定の設定" %}
@@ -82,7 +82,7 @@ const candyMachineSettings = {
 
 ## Metaplex認定コレクション
 
-各キャンディマシンは[Metaplex認定コレクション(MCC)](/jp/token-metadata/collections)として知られる特別なNFTと関連付けられる必要があります。この**コレクションNFT**により、ミントされたNFTをグループ化し、その情報をオンチェーンで検証できます。
+各キャンディマシンは[Metaplex認定コレクション(MCC)](/ja/token-metadata/collections)として知られる特別なNFTと関連付けられる必要があります。この**コレクションNFT**により、ミントされたNFTをグループ化し、その情報をオンチェーンで検証できます。
 
 他の誰もがあなたのコレクションNFTを自分のキャンディマシンで使用できないようにするため、キャンディマシンでコレクションを変更するトランザクションには**コレクションの更新権限**の署名が必要です。その結果、キャンディマシンはすべてのミントされたNFTのコレクションを自動的に安全に検証できます。
 
@@ -296,8 +296,8 @@ const candyMachineSettings = {
 
 はじめにで述べたように、このページは主要なキャンディマシン設定に焦点を当てていますが、ガードを使用してキャンディマシンでさらに多くの設定ができます。
 
-これは説明すべき多くの利用可能なデフォルトガードがある広範な主題であるため、このドキュメントの全セクションを割いています。最適な開始場所は[キャンディガード](/jp/candy-machine/guards)ページです。
+これは説明すべき多くの利用可能なデフォルトガードがある広範な主題であるため、このドキュメントの全セクションを割いています。最適な開始場所は[キャンディガード](/ja/candy-machine/guards)ページです。
 
 ## まとめ
 
-主要なキャンディマシン設定について理解したので、[次のページ](/jp/candy-machine/manage)では、それらを使用して独自のキャンディマシンを作成・更新する方法を見ていきます。
+主要なキャンディマシン設定について理解したので、[次のページ](/ja/candy-machine/manage)では、それらを使用して独自のキャンディマシンを作成・更新する方法を見ていきます。

+ 2 - 2
src/pages/ja/cli/config/rpcs.md

@@ -137,5 +137,5 @@ RPCは`~/.mplx/config.json`の設定ファイルに保存されます:
 
 ## 関連コマンド
 
-- [ウォレット](/jp/cli/config/wallets) - ウォレット設定の管理
-- [エクスプローラー](/jp/cli/config/explorer) - 推奨ブロックチェーンエクスプローラーの設定
+- [ウォレット](/ja/cli/config/wallets) - ウォレット設定の管理
+- [エクスプローラー](/ja/cli/config/explorer) - 推奨ブロックチェーンエクスプローラーの設定

+ 2 - 2
src/pages/ja/cli/config/wallets.md

@@ -163,5 +163,5 @@ mplx config wallets set dev1
 
 ## 関連コマンド
 
-- [RPCs](/jp/cli/config/rpcs) - RPCエンドポイントの管理
-- [エクスプローラー](/jp/cli/config/explorer) - 推奨ブロックチェーンエクスプローラーの設定
+- [RPCs](/ja/cli/config/rpcs) - RPCエンドポイントの管理
+- [エクスプローラー](/ja/cli/config/explorer) - 推奨ブロックチェーンエクスプローラーの設定

+ 9 - 9
src/pages/ja/cli/index.md

@@ -37,16 +37,16 @@ Metaplex CLIは、SolanaにおけるMetaplexプロトコルとやり取りする
 
 ## 始める前に
 
-1. [CLIをインストール](/jp/cli/installation)
+1. [CLIをインストール](/ja/cli/installation)
 2. 環境を設定する:
-   - [ウォレットを設定](/jp/cli/config/wallets)
-   - [RPCエンドポイントを設定](/jp/cli/config/rpcs)
-   - [推奨エクスプローラーを選択](/jp/cli/config/explorer)
+   - [ウォレットを設定](/ja/cli/config/wallets)
+   - [RPCエンドポイントを設定](/ja/cli/config/rpcs)
+   - [推奨エクスプローラーを選択](/ja/cli/config/explorer)
 3. コアコマンドの使用を開始:
-   - [アセットを作成](/jp/cli/core/create-asset)
-   - [コレクションを作成](/jp/cli/core/create-collection)
-   - [アセットを更新](/jp/cli/core/update-asset)
-   - [アセットを取得](/jp/cli/core/fetch)
+   - [アセットを作成](/ja/cli/core/create-asset)
+   - [コレクションを作成](/ja/cli/core/create-collection)
+   - [アセットを更新](/ja/cli/core/update-asset)
+   - [アセットを取得](/ja/cli/core/fetch)
 
 ## コマンド構造
 
@@ -77,4 +77,4 @@ mplx <カテゴリ> <コマンド> [オプション]
 
 ## 次のステップ
 
-始める準備はできましたか?システムにCLIを設定するために[インストールガイド](/jp/cli/installation)に向かいましょう。
+始める準備はできましたか?システムにCLIを設定するために[インストールガイド](/ja/cli/installation)に向かいましょう。

+ 3 - 3
src/pages/ja/cli/installation.md

@@ -136,9 +136,9 @@ npm link
 
 CLIがインストールされたので、以下のことができます:
 
-1. [コアコマンドについて学ぶ](/jp/cli/core/create-asset)
-2. [ツールボックスユーティリティを探索](/jp/cli/toolbox/token-create)
-3. [環境を設定する](/jp/cli/config/wallets)
+1. [コアコマンドについて学ぶ](/ja/cli/core/create-asset)
+2. [ツールボックスユーティリティを探索](/ja/cli/toolbox/token-create)
+3. [環境を設定する](/ja/cli/config/wallets)
 
 ## 更新
 

+ 3 - 3
src/pages/ja/cli/toolbox/sol-balance.md

@@ -54,6 +54,6 @@ Balance: 1.5 SOL
 
 ## 関連コマンド
 
-- [SOL転送](/jp/cli/toolbox/sol-transfer) - アドレス間でSOLを転送
-- [トークン転送](/jp/cli/toolbox/token-transfer) - トークンを転送
-- [エアドロップ](/jp/cli/toolbox/sol-airdrop) - SOLエアドロップをリクエスト(devnetのみ)
+- [SOL転送](/ja/cli/toolbox/sol-transfer) - アドレス間でSOLを転送
+- [トークン転送](/ja/cli/toolbox/token-transfer) - トークンを転送
+- [エアドロップ](/ja/cli/toolbox/sol-airdrop) - SOLエアドロップをリクエスト(devnetのみ)

+ 3 - 3
src/pages/ja/cli/toolbox/token-transfer.md

@@ -61,6 +61,6 @@ Signature: 2xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
 
 ## 関連コマンド
 
-- [トークン作成](/jp/cli/toolbox/token-create) - 新しいトークンを作成
-- [残高確認](/jp/cli/toolbox/sol-balance) - トークン残高を確認
-- [SOL転送](/jp/cli/toolbox/sol-transfer) - アドレス間でSOLを転送
+- [トークン作成](/ja/cli/toolbox/token-create) - 新しいトークンを作成
+- [残高確認](/ja/cli/toolbox/sol-balance) - トークン残高を確認
+- [SOL転送](/ja/cli/toolbox/sol-transfer) - アドレス間でSOLを転送

+ 1 - 1
src/pages/ja/contact.md

@@ -12,7 +12,7 @@ description: Metaplexチームへの連絡方法。
 
 ## セキュリティの問題
 
-セキュリティの問題を報告するには、[セキュリティ](/jp/security)ページのガイダンスに従ってください。
+セキュリティの問題を報告するには、[セキュリティ](/ja/security)ページのガイダンスに従ってください。
 
 [discord]: https://discord.com/invite/metaplex
 [twitter]: https://twitter.com/metaplex

+ 2 - 2
src/pages/ja/core-candy-machine/anti-bot-protection-best-practices.md

@@ -95,7 +95,7 @@ await securelyStoreUris(uploadedUris);
 - **カスタムソリューション**:ランダムID生成で独自のアップロードサービスを構築
 
 {% callout %}
-**UMIアップローダー機能についてのより詳細な情報については、[UMI Storage Documentation](/jp/umi/storage)を参照してください。**
+**UMIアップローダー機能についてのより詳細な情報については、[UMI Storage Documentation](/ja/umi/storage)を参照してください。**
 {% /callout %}
 
 #### プレースホルダーメタデータの作成
@@ -599,7 +599,7 @@ app.post('/api/mint', async (req, res) => {
 
 ##### 実装リファレンス
 
-実際のアセット更新実装については、UMIを使用してアセットメタデータ、名前、URIを更新する方法を説明する[Core Asset Update documentation](/jp/core/update)を参照してください。
+実際のアセット更新実装については、UMIを使用してアセットメタデータ、名前、URIを更新する方法を説明する[Core Asset Update documentation](/ja/core/update)を参照してください。
 
 リビールプロセスは、セキュアマッピングを使用してどの最終メタデータURIが各ミントされたアセットに対応するかを決定し、その後Coreのアップデートファンクションaリティーキヘナアセットを更新します。
 

+ 2 - 2
src/pages/ja/core-candy-machine/create.md

@@ -6,8 +6,8 @@ description: JavaScriptとRustの両方でCore Candy Machineとその様々な
 
 ## 前提条件
 
-- [アセットの準備](/jp/core-candy-machine/preparing-assets)
-- [Coreコレクションの作成](/jp/core/collections#コレクションの作成)
+- [アセットの準備](/ja/core-candy-machine/preparing-assets)
+- [Coreコレクションの作成](/ja/core/collections#コレクションの作成)
 
 Core Candy Machineアセットをコレクション(新規または既存)に作成したい場合は、Core Candy Machineの作成時にCoreコレクションを提供する必要があります。
 

+ 4 - 4
src/pages/ja/core-candy-machine/guard-groups.md

@@ -4,13 +4,13 @@ metaTitle: ガードグループ | Core Candy Machine
 description: Core Candy Machineで複数のガードのグループを設定および使用する方法を説明します。
 ---
 
-[以前のページ](/jp/core-candy-machine/guards)の一つで、ガードを紹介し、Candy Machineのアクセス制御を定義するためにそれらを使用しました。ガードを使用することで、例えばミント毎に1 SOLの支払いを追加し、特定の日付後にミントが開始されることを確保できることを見ました。しかし、第2の日付の後に2 SOLを請求することもしたい場合はどうでしょうか?特定のトークンホルダーに無料または割引価格でミントを許可したい場合はどうでしょうか?{% .lead %}
+[以前のページ](/ja/core-candy-machine/guards)の一つで、ガードを紹介し、Candy Machineのアクセス制御を定義するためにそれらを使用しました。ガードを使用することで、例えばミント毎に1 SOLの支払いを追加し、特定の日付後にミントが開始されることを確保できることを見ました。しかし、第2の日付の後に2 SOLを請求することもしたい場合はどうでしょうか?特定のトークンホルダーに無料または割引価格でミントを許可したい場合はどうでしょうか?{% .lead %}
 
 それぞれが独自の要件を持つ複数のガードセットを定義できればどうでしょうか?その理由のために、私たちは**ガードグループ**を作成しました!
 
 ## グループはどのように機能しますか?
 
-[有効にしたいガードの設定を提供するだけで、どんなCore Candy Machineでもガードを設定できる](/jp/core-candy-machine/guards#ガード付きcandy-machineの作成)方法を覚えていますか?ガードグループも同じ方法で機能しますが、それらを識別するために固有の**ラベル**も提供する必要があります。
+[有効にしたいガードの設定を提供するだけで、どんなCore Candy Machineでもガードを設定できる](/ja/core-candy-machine/guards#ガード付きcandy-machineの作成)方法を覚えていますか?ガードグループも同じ方法で機能しますが、それらを識別するために固有の**ラベル**も提供する必要があります。
 
 したがって、各ガードグループには以下の属性があります:
 
@@ -171,7 +171,7 @@ APIリファレンス: [create](https://mpl-core-candy-machine.typedoc.metaplex.
 
 上記の例で、両方のグループに同じ**Bot Tax**ガードを提供する必要があったことに注目してください。これは、Candy Machineに設定されたグローバル**ガード**を活用することで簡素化できます。
 
-ガードグループを使用する場合、Core Candy Machineのグローバルガード — [以前のページ](/jp/core-candy-machine/guards)で説明したとおり — は**デフォルトガードとして機能します**!これは、グループで明示的に有効化してそれらを上書きしない限り、グループがグローバルガードと同じガード設定を使用することをデフォルトとすることを意味します。
+ガードグループを使用する場合、Core Candy Machineのグローバルガード — [以前のページ](/ja/core-candy-machine/guards)で説明したとおり — は**デフォルトガードとして機能します**!これは、グループで明示的に有効化してそれらを上書きしない限り、グループがグローバルガードと同じガード設定を使用することをデフォルトとすることを意味します。
 
 簡単な要約:
 
@@ -348,4 +348,4 @@ APIリファレンス: [create](https://mpl-core-candy-machine.typedoc.metaplex.
 
 ガードグループは、ニーズに合わせた順次および/または並行ミントワークフローを定義できるようにすることで、Core Candy Machineに全く新しい次元をもたらします。
 
-[次のページ](/jp/core-candy-machine/guard-route)では、ガードに関するさらにもう一つのエキサイティングな機能:ガード命令を見ていきます!
+[次のページ](/ja/core-candy-machine/guard-route)では、ガードに関するさらにもう一つのエキサイティングな機能:ガード命令を見ていきます!

+ 4 - 4
src/pages/ja/core-candy-machine/guard-route.md

@@ -23,9 +23,9 @@ Candy Guardプログラムで登録されたガードごとに一つの「Route
 
 例えば、ミントが終了した後にのみ解除できるFrozen NFTのサポートを追加するガードは、Route命令を使用してトレジャリーエスクローアカウントを初期化し、適切な条件の下で誰でもミントされたNFTを解除できるようにすることができます。前者には「init」、後者には「thaw」と等しい**Path**属性を使用してこれら2つの機能を区別できます。
 
-Route命令をサポートする各ガードのRoute命令とその基盤となるパスの詳細な説明は、[それぞれのページ](/jp/core-candy-machine/guards)で見つけることができます。
+Route命令をサポートする各ガードのRoute命令とその基盤となるパスの詳細な説明は、[それぞれのページ](/ja/core-candy-machine/guards)で見つけることができます。
 
-例を提供してRoute命令がどのように機能するかを説明してみましょう。[**Allow List**](/jp/core-candy-machine/guards/allow-list)ガードは、ミントするウォレットが事前設定されたウォレットリストの一部であることを検証するためにRoute命令をサポートしています。
+例を提供してRoute命令がどのように機能するかを説明してみましょう。[**Allow List**](/ja/core-candy-machine/guards/allow-list)ガードは、ミントするウォレットが事前設定されたウォレットリストの一部であることを検証するためにRoute命令をサポートしています。
 
 [Merkle Tree](https://en.m.wikipedia.org/wiki/Merkle_tree)を使用してこれを行います。つまり、許可されたウォレットの全リストのハッシュを作成し、そのハッシュ(**Merkle Root**として知られる)をガード設定に保存する必要があります。ウォレットが許可リストに載っていることを証明するには、プログラムがMerkle Rootを計算してガードの設定と一致することを確認できるハッシュのリスト(**Merkle Proof**として知られる)を提供する必要があります。
 
@@ -203,6 +203,6 @@ APIリファレンス: [route](https://mpl-core-candy-machine.typedoc.metaplex.c
 
 ## まとめ
 
-Route命令により、ガードは独自のカスタムプログラムロジックを含むことができるため、さらに強力になります。各ガードの完全な機能セットを確認するために、[利用可能なすべてのガード](/jp/core-candy-machine/guards)の専用ページをチェックしてください。
+Route命令により、ガードは独自のカスタムプログラムロジックを含むことができるため、さらに強力になります。各ガードの完全な機能セットを確認するために、[利用可能なすべてのガード](/ja/core-candy-machine/guards)の専用ページをチェックしてください。
 
-Core Candy Machineとそのガードの設定について知るべきことをすべて知ったところで、ミントについて話す時が来ました。[次のページ](/jp/core-candy-machine/mint)でお会いしましょう![取得](/jp/core-candy-machine/fetching-a-candy-machine)についても読みたいかもしれません。
+Core Candy Machineとそのガードの設定について知るべきことをすべて知ったところで、ミントについて話す時が来ました。[次のページ](/ja/core-candy-machine/mint)でお会いしましょう![取得](/ja/core-candy-machine/fetching-a-candy-machine)についても読みたいかもしれません。

+ 31 - 31
src/pages/ja/core-candy-machine/guards.md

@@ -10,7 +10,7 @@ description: Core Candy Machineで利用可能な異なるタイプのガード
 
 選択できるガードの大きなセットがあり、それぞれを任意に有効化・設定できます。
 
-後にこのドキュメントで[利用可能なすべてのガード](/jp/core-candy-machine/guards)について触れますが、ここではそれを説明するためのいくつかの例を見てみましょう。
+後にこのドキュメントで[利用可能なすべてのガード](/ja/core-candy-machine/guards)について触れますが、ここではそれを説明するためのいくつかの例を見てみましょう。
 
 - **Start Date**ガードが有効化されると、事前設定された日付より前はミントが禁止されます。指定された日付後のミントを禁止する**End Date**ガードもあります。
 - **Sol Payment**ガードが有効化されると、ミントするウォレットは設定された宛先ウォレットに設定された金額を支払う必要があります。特定のコレクションのトークンやNFTで支払うための類似のガードが存在します。
@@ -178,36 +178,36 @@ SDKは独自のCore Candy Guardプログラムとそのカスタムガードを
 
 以下のリストでは、各ガードの短い説明と、より高度な読み物のための専用ページへのリンクを提供します。
 
-- [**Address Gate**](/jp/core-candy-machine/guards/address-gate): ミントを単一のアドレスに制限します。
-- [**Allocation**](/jp/core-candy-machine/guards/allocation): 各ガードグループがミントできるNFTの数に制限を指定できます。
-- [**Allow List**](/jp/core-candy-machine/guards/allow-list): ウォレットアドレスリストを使用して、誰がミントを許可されるかを決定します。
-- [**Asset Burn Multi**](/jp/core-candy-machine/guards/asset-burn-multi): 指定されたコレクションのホルダーにミントを制限し、1つ以上のcoreアセットのバーンを要求します。
-- [**Asset Burn**](/jp/core-candy-machine/guards/asset-burn): 指定されたコレクションのホルダーにミントを制限し、単一のcoreアセットのバーンを要求します。
-- [**Asset Gate**](/jp/core-candy-machine/guards/asset-gate): 指定されたコレクションのホルダーにミントを制限します。
-- [**Asset Mint Limit**](/jp/core-candy-machine/guards/asset-mint-limit): 指定されたコレクションのホルダーにミントを制限し、提供されたCore Assetに対して実行できるミント数を制限します。
-- [**Asset Payment Multi**](/jp/core-candy-machine/guards/asset-payment-multi): 指定されたコレクションの複数のCore Assetをミントの価格として設定します。
-- [**Asset Payment**](/jp/core-candy-machine/guards/asset-payment): 指定されたコレクションのCore Assetをミントの価格として設定します。
-- [**Bot Tax**](/jp/core-candy-machine/guards/bot-tax): 無効なトランザクションに課金する設定可能な税金。
-- [**Edition**](/jp/core-candy-machine/guards/edition): ミントされたCore AssetにEdition Pluginを追加します。詳細については[Print Editions](/jp/core/guides/print-editions)ガイドを参照してください。
-- [**End Date**](/jp/core-candy-machine/guards/end-date): ミントを終了する日付を決定します。
-- [**Freeze Sol Payment**](/jp/core-candy-machine/guards/freeze-sol-payment): 凍結期間付きでSOLでミントの価格を設定します。
-- [**Freeze Token Payment**](/jp/core-candy-machine/guards/freeze-token-payment): 凍結期間付きでトークン量でミントの価格を設定します。
-- [**Gatekeeper**](/jp/core-candy-machine/guards/gatekeeper): Gatekeeper Networkを通じてミントを制限します(例:Captcha統合)。
-- [**Mint Limit**](/jp/core-candy-machine/guards/mint-limit): ウォレット毎のミント数の制限を指定します。
-- [**Nft Burn**](/jp/core-candy-machine/guards/nft-burn): 指定されたコレクションのホルダーにミントを制限し、NFTのバーンを要求します。
-- [**Nft Gate**](/jp/core-candy-machine/guards/nft-gate): 指定されたコレクションのホルダーにミントを制限します。
-- [**Nft Payment**](/jp/core-candy-machine/guards/nft-payment): 指定されたコレクションのNFTをミントの価格として設定します。
-- [**Program Gate**](/jp/core-candy-machine/guards/program-gate): ミントトランザクションに含めることができるプログラムを制限します。
-- [**Redeemed Amount**](/jp/core-candy-machine/guards/redeemed-amount): ミントされた総量に基づいてミントの終了を決定します。
-- [**Sol Fixed fee**](/jp/core-candy-machine/guards/sol-fixed-fee): 固定価格でSOLでミントの価格を設定します。[Sol Payment](/jp/core-candy-machine/guards/sol-payment)ガードと類似。
-- [**Sol Payment**](/jp/core-candy-machine/guards/sol-payment): SOLでミントの価格を設定します。
-- [**Start Date**](/jp/core-candy-machine/guards/start-date): ミントの開始日を決定します。
-- [**Third Party Signer**](/jp/core-candy-machine/guards/third-party-signer): トランザクションに追加の署名者を要求します。
-- [**Token Burn**](/jp/core-candy-machine/guards/token-burn): 指定されたトークンのホルダーにミントを制限し、トークンのバーンを要求します。
-- [**Token Gate**](/jp/core-candy-machine/guards/token-gate): 指定されたトークンのホルダーにミントを制限します。
-- [**Token Payment**](/jp/core-candy-machine/guards/token-payment): トークン量でミントの価格を設定します。
-- [**Token22 Payment**](/jp/core-candy-machine/guards/token2022-payment): token22(トークン拡張)量でミントの価格を設定します。
-- [**Vanity Mint**](/jp/core-candy-machine/guards/vanity-mint): 新しいミントアドレスが特定のパターンに一致することを期待してミントを制限します。
+- [**Address Gate**](/ja/core-candy-machine/guards/address-gate): ミントを単一のアドレスに制限します。
+- [**Allocation**](/ja/core-candy-machine/guards/allocation): 各ガードグループがミントできるNFTの数に制限を指定できます。
+- [**Allow List**](/ja/core-candy-machine/guards/allow-list): ウォレットアドレスリストを使用して、誰がミントを許可されるかを決定します。
+- [**Asset Burn Multi**](/ja/core-candy-machine/guards/asset-burn-multi): 指定されたコレクションのホルダーにミントを制限し、1つ以上のcoreアセットのバーンを要求します。
+- [**Asset Burn**](/ja/core-candy-machine/guards/asset-burn): 指定されたコレクションのホルダーにミントを制限し、単一のcoreアセットのバーンを要求します。
+- [**Asset Gate**](/ja/core-candy-machine/guards/asset-gate): 指定されたコレクションのホルダーにミントを制限します。
+- [**Asset Mint Limit**](/ja/core-candy-machine/guards/asset-mint-limit): 指定されたコレクションのホルダーにミントを制限し、提供されたCore Assetに対して実行できるミント数を制限します。
+- [**Asset Payment Multi**](/ja/core-candy-machine/guards/asset-payment-multi): 指定されたコレクションの複数のCore Assetをミントの価格として設定します。
+- [**Asset Payment**](/ja/core-candy-machine/guards/asset-payment): 指定されたコレクションのCore Assetをミントの価格として設定します。
+- [**Bot Tax**](/ja/core-candy-machine/guards/bot-tax): 無効なトランザクションに課金する設定可能な税金。
+- [**Edition**](/ja/core-candy-machine/guards/edition): ミントされたCore AssetにEdition Pluginを追加します。詳細については[Print Editions](/ja/core/guides/print-editions)ガイドを参照してください。
+- [**End Date**](/ja/core-candy-machine/guards/end-date): ミントを終了する日付を決定します。
+- [**Freeze Sol Payment**](/ja/core-candy-machine/guards/freeze-sol-payment): 凍結期間付きでSOLでミントの価格を設定します。
+- [**Freeze Token Payment**](/ja/core-candy-machine/guards/freeze-token-payment): 凍結期間付きでトークン量でミントの価格を設定します。
+- [**Gatekeeper**](/ja/core-candy-machine/guards/gatekeeper): Gatekeeper Networkを通じてミントを制限します(例:Captcha統合)。
+- [**Mint Limit**](/ja/core-candy-machine/guards/mint-limit): ウォレット毎のミント数の制限を指定します。
+- [**Nft Burn**](/ja/core-candy-machine/guards/nft-burn): 指定されたコレクションのホルダーにミントを制限し、NFTのバーンを要求します。
+- [**Nft Gate**](/ja/core-candy-machine/guards/nft-gate): 指定されたコレクションのホルダーにミントを制限します。
+- [**Nft Payment**](/ja/core-candy-machine/guards/nft-payment): 指定されたコレクションのNFTをミントの価格として設定します。
+- [**Program Gate**](/ja/core-candy-machine/guards/program-gate): ミントトランザクションに含めることができるプログラムを制限します。
+- [**Redeemed Amount**](/ja/core-candy-machine/guards/redeemed-amount): ミントされた総量に基づいてミントの終了を決定します。
+- [**Sol Fixed fee**](/ja/core-candy-machine/guards/sol-fixed-fee): 固定価格でSOLでミントの価格を設定します。[Sol Payment](/ja/core-candy-machine/guards/sol-payment)ガードと類似。
+- [**Sol Payment**](/ja/core-candy-machine/guards/sol-payment): SOLでミントの価格を設定します。
+- [**Start Date**](/ja/core-candy-machine/guards/start-date): ミントの開始日を決定します。
+- [**Third Party Signer**](/ja/core-candy-machine/guards/third-party-signer): トランザクションに追加の署名者を要求します。
+- [**Token Burn**](/ja/core-candy-machine/guards/token-burn): 指定されたトークンのホルダーにミントを制限し、トークンのバーンを要求します。
+- [**Token Gate**](/ja/core-candy-machine/guards/token-gate): 指定されたトークンのホルダーにミントを制限します。
+- [**Token Payment**](/ja/core-candy-machine/guards/token-payment): トークン量でミントの価格を設定します。
+- [**Token22 Payment**](/ja/core-candy-machine/guards/token2022-payment): token22(トークン拡張)量でミントの価格を設定します。
+- [**Vanity Mint**](/ja/core-candy-machine/guards/vanity-mint): 新しいミントアドレスが特定のパターンに一致することを期待してミントを制限します。
 
 ## まとめ
 

+ 2 - 2
src/pages/ja/core-candy-machine/guides/index.md

@@ -4,6 +4,6 @@ metaTitle: Metaplex Core Candy Machineのガイド | Core Candy Machine
 description: Solana上でCoreベースのNFTコレクションを作成するためのMetaplex Core Candy Machineのガイドリスト。
 ---
 
-{% quick-link title="Core Candy MachineからアセットをミントするウェブサイトのONATION" icon="CodeBracketSquare" href="/jp/core-candy-machine/guides/create-a-core-candy-machine-ui" description="独自のCore Candy Machine UIを構築する方法を学ぶ" /%}
+{% quick-link title="Core Candy MachineからアセットをミントするウェブサイトのONATION" icon="CodeBracketSquare" href="/ja/core-candy-machine/guides/create-a-core-candy-machine-ui" description="独自のCore Candy Machine UIを構築する方法を学ぶ" /%}
 
-{% quick-link title="Hidden Settings付きCore Candy Machineの作成" icon="CodeBracketSquare" href="/jp/core-candy-machine/guides/create-a-core-candy-machine-with-hidden-settings" description="Hidden Settings付き独自のCore Candy Machineを構築する方法を学ぶ" /%}
+{% quick-link title="Hidden Settings付きCore Candy Machineの作成" icon="CodeBracketSquare" href="/ja/core-candy-machine/guides/create-a-core-candy-machine-with-hidden-settings" description="Hidden Settings付き独自のCore Candy Machineを構築する方法を学ぶ" /%}

+ 2 - 2
src/pages/ja/core-candy-machine/index.md

@@ -9,7 +9,7 @@ Metaplexプロトコルの**Candy Machine**は、Solanaにおける公平なNFT
 この名前は、機械式クランクを使ってコインと引き換えにキャンディを配布する自動販売機に由来しています。この場合、キャンディはNFTであり、支払いはSOLまたはSPLトークンです。
 
 {% quick-links %}
-{% quick-link title="はじめに" icon="InboxArrowDown" href="/jp/core-candy-machine/getting-started" description="お好みの言語やライブラリを選択して、Candy Machinesを始めましょう。" /%}
+{% quick-link title="はじめに" icon="InboxArrowDown" href="/ja/core-candy-machine/getting-started" description="お好みの言語やライブラリを選択して、Candy Machinesを始めましょう。" /%}
 
 
 {% quick-link title="APIリファレンス" icon="JavaScript" href="https://mpl-core-candy-machine.typedoc.metaplex.com/" target="_blank" description="JavaScript API ドキュメントを確認してください。" /%}
@@ -19,6 +19,6 @@ Metaplexプロトコルの**Candy Machine**は、Solanaにおける公平なNFT
 {% /quick-links %}
 
 {% callout %}
-このドキュメントは、Core Candy Machineとして知られるCandy Machineの最新バージョンについて説明しています。これは[Core](/jp/core)アセットのミントを可能にします。Metaplex Token MetadataのNFTをミントしたい場合は、[代わりにCandy Machine V3を参照してください](https://developers.metaplex.com/candy-machine/)。
+このドキュメントは、Core Candy Machineとして知られるCandy Machineの最新バージョンについて説明しています。これは[Core](/ja/core)アセットのミントを可能にします。Metaplex Token MetadataのNFTをミントしたい場合は、[代わりにCandy Machine V3を参照してください](https://developers.metaplex.com/candy-machine/)。
 {% /callout %}
 

+ 7 - 7
src/pages/ja/core-candy-machine/mint.md

@@ -8,7 +8,7 @@ description: Core Candy Machineからミントして、ユーザーがCore NFT
 
 ## 基本的なミント
 
-[Candy Guardsページ](/jp/core-candy-machine/guards#なぜ別のプログラムなのか)で言及したように、Candy MachineからNFTをミントする責任を持つ2つのプログラムがあります:NFTのミントを担当するCandy Machine Coreプログラムと、その上に設定可能なアクセス制御層を追加し、カスタムガードを提供するためにフォークできるCandy Guardプログラムです。
+[Candy Guardsページ](/ja/core-candy-machine/guards#なぜ別のプログラムなのか)で言及したように、Candy MachineからNFTをミントする責任を持つ2つのプログラムがあります:NFTのミントを担当するCandy Machine Coreプログラムと、その上に設定可能なアクセス制御層を追加し、カスタムガードを提供するためにフォークできるCandy Guardプログラムです。
 
 そのため、Candy Machineからミントする方法は2つあります:
 
@@ -199,7 +199,7 @@ Mint Settingsを必要とするガードの良い例は**NFT Payment**ガード
 
 {% /diagram %}
 
-[利用可能な各ガード](/jp/core-candy-machine/guards)には独自のドキュメントページがあり、そのガードがミント時にMint Settingsの提供を期待するかどうかを教えてくれます。
+[利用可能な各ガード](/ja/core-candy-machine/guards)には独自のドキュメントページがあり、そのガードがミント時にMint Settingsの提供を期待するかどうかを教えてくれます。
 
 Mint Settingsを必要としないガードのみを使用する場合、上記の「基本的なミント」セクションで説明したのと同じ方法でミントできます。そうでなければ、それらを必要とするすべてのガードのMint Settingsを含む追加のオブジェクト属性を提供する必要があります。SDKを使用して実際にどのように見えるかを見てみましょう。
 
@@ -424,9 +424,9 @@ APIリファレンス: [mintV1](https://mpl-core-candy-machine.typedoc.metaplex.
 
 ### Route命令の使用
 
-ガードが事前検証ステップを要求できる一つの方法は、「route」命令を通じて[独自の特別な命令](/jp/core-candy-machine/guard-route)を使用することです。
+ガードが事前検証ステップを要求できる一つの方法は、「route」命令を通じて[独自の特別な命令](/ja/core-candy-machine/guard-route)を使用することです。
 
-その良い例は**Allow List**ガードです。このガードを使用する場合、route命令を呼び出し、有効なMerkle Proofを提供することで、ウォレットが事前定義されたウォレットリストに属することを確認する必要があります。このroute命令が成功すると、そのウォレット用のAllow List PDAが作成され、mint命令がAllow Listガードを検証するために読み取ることができます。[Allow Listガードについて専用ページで詳しく読むことができます](/jp/core-candy-machine/guards/allow-list)。
+その良い例は**Allow List**ガードです。このガードを使用する場合、route命令を呼び出し、有効なMerkle Proofを提供することで、ウォレットが事前定義されたウォレットリストに属することを確認する必要があります。このroute命令が成功すると、そのウォレット用のAllow List PDAが作成され、mint命令がAllow Listガードを検証するために読み取ることができます。[Allow Listガードについて専用ページで詳しく読むことができます](/ja/core-candy-machine/guards/allow-list)。
 
 {% diagram %}
 
@@ -479,7 +479,7 @@ APIリファレンス: [mintV1](https://mpl-core-candy-machine.typedoc.metaplex.
 
 ガードがその事前検証ステップを実行するもう一つの方法は、外部ソリューションに依存することです。
 
-例えば、**Gatekeeper**ガードを使用する場合、設定されたGatekeeper Networkに応じてチャレンジ(Captchaの完了など)を実行することでGateway Tokenをリクエストする必要があります。Gatekeeperガードは、ミントを検証または拒否するために、そのようなGateway Tokenの存在をチェックします。[Gatekeeperガードについて専用ページで詳しく学ぶことができます](/jp/core-candy-machine/guards/gatekeeper)。
+例えば、**Gatekeeper**ガードを使用する場合、設定されたGatekeeper Networkに応じてチャレンジ(Captchaの完了など)を実行することでGateway Tokenをリクエストする必要があります。Gatekeeperガードは、ミントを検証または拒否するために、そのようなGateway Tokenの存在をチェックします。[Gatekeeperガードについて専用ページで詳しく学ぶことができます](/ja/core-candy-machine/guards/gatekeeper)。
 
 {% diagram %}
 
@@ -535,7 +535,7 @@ Gateway Tokenをリクエスト \
 
 Core Candy Machineに含めたいであろう一つのガードは、失敗したミントに設定可能なSOL量を課金することでCore Candy Machineをボットから守るBot Taxガードです。この金額は通常、実際のユーザーからの本物の間違いに影響を与えることなくボットを傷つけるために小さく設定されます。すべてのボット税はCore Candy Machineアカウントに転送されるため、ミント完了後にCore Candy Machineアカウントを削除してこれらの資金にアクセスできます。
 
-このガードは少し特別で、他のすべてのガードのミント動作に影響を与えます。Bot Taxが有効化され、他のガードのミント検証が失敗した場合、**トランザクションは成功したふりをします**。これは、プログラムからエラーが返されませんが、NFTもミントされないことを意味します。これは、ボットからCore Candy Machineアカウントに資金を転送するためにトランザクションが成功する必要があるためです。[Bot Taxガードについて専用ページで詳しく学ぶことができます](/jp/core-candy-machine/guards/bot-tax)。
+このガードは少し特別で、他のすべてのガードのミント動作に影響を与えます。Bot Taxが有効化され、他のガードのミント検証が失敗した場合、**トランザクションは成功したふりをします**。これは、プログラムからエラーが返されませんが、NFTもミントされないことを意味します。これは、ボットからCore Candy Machineアカウントに資金を転送するためにトランザクションが成功する必要があるためです。[Bot Taxガードについて専用ページで詳しく学ぶことができます](/ja/core-candy-machine/guards/bot-tax)。
 
 ## まとめ
 
@@ -543,4 +543,4 @@ Core Candy Machineに含めたいであろう一つのガードは、失敗し
 
 興味があるかもしれない追加の読み物リソースは次のとおりです:
 
-- [利用可能なすべてのガード](/jp/core-candy-machine/guards):必要なガードを厳選できるよう、利用可能なすべてのガードを確認してください。
+- [利用可能なすべてのガード](/ja/core-candy-machine/guards):必要なガードを厳選できるよう、利用可能なすべてのガードを確認してください。

+ 5 - 5
src/pages/ja/core-candy-machine/overview.md

@@ -60,7 +60,7 @@ description: Core Candy Machineプログラムとその機能セットの概要
 - `name`: アセットの名前。
 - `uri`: アセットの[JSONメタデータ](https://developers.metaplex.com/token-metadata/token-standard#the-non-fungible-standard)を指すURI。これは、JSONメタデータが既にオンチェーン(例:Arweave、IPFS)またはオフチェーン(例:AWS、独自サーバー)ストレージプロバイダーを介してアップロードされていることを意味します。SugarやJS SDKなどのCandy Machine作成ツールは、これを支援するヘルパーを提供します。
 
-その他のパラメータはアセット間で共有されるため、繰り返しを避けるためにCandy Machineの設定に直接保持されます。詳細は[アイテムの挿入](/jp/core-candy-machine/insert-items)を参照してください。
+その他のパラメータはアセット間で共有されるため、繰り返しを避けるためにCandy Machineの設定に直接保持されます。詳細は[アイテムの挿入](/ja/core-candy-machine/insert-items)を参照してください。
 
 この時点では、実際のアセットはまだ作成されていないことに注意してください。我々は単に、ミント時に**オンデマンドでアセットを作成する**ために必要なすべてのデータをCandy Machineに読み込んでいるだけです。これが次のステップにつながります。
 
@@ -101,9 +101,9 @@ description: Core Candy Machineプログラムとその機能セットの概要
 {% edge from="mint-3" to="nft-3" path="bezier" /%}
 {% /diagram %}
 
-Candy Machineがロードされ、事前設定されたすべての条件が満たされると、ユーザーはそこからアセットをミントできるようになります。アセットがSolanaブロックチェーン上に作成されるのはこの時点のみです。なお、ミント前に一部のユーザーはCaptchaの実行やMerkle Proofの送信など、追加の検証手順を実行する必要がある場合があります。詳細は[ミント](/jp/core-candy-machine/mint)を参照してください。
+Candy Machineがロードされ、事前設定されたすべての条件が満たされると、ユーザーはそこからアセットをミントできるようになります。アセットがSolanaブロックチェーン上に作成されるのはこの時点のみです。なお、ミント前に一部のユーザーはCaptchaの実行やMerkle Proofの送信など、追加の検証手順を実行する必要がある場合があります。詳細は[ミント](/ja/core-candy-machine/mint)を参照してください。
 
-Candy Machineからすべてのアセットがミントされると、その目的を果たし、安全に削除してブロックチェーン上のストレージスペースを解放し、レントを回収できます。詳細は[Candy Machineの引き出し](/jp/core-candy-machine/withdrawing-a-candy-machine)を参照してください。
+Candy Machineからすべてのアセットがミントされると、その目的を果たし、安全に削除してブロックチェーン上のストレージスペースを解放し、レントを回収できます。詳細は[Candy Machineの引き出し](/ja/core-candy-machine/withdrawing-a-candy-machine)を参照してください。
 
 {% diagram %}
 {% node #action-1 label="4. 削除" theme="pink" /%}
@@ -146,7 +146,7 @@ MPL Core Assetのオンチェーンアカウント構造。[リンク](https://g
 
 Core Candy Machineがどのように機能するかを理解したところで、クリエイターがCore Candy Machineのミントプロセスを保護・カスタマイズするさまざまな方法について掘り下げてみましょう。
 
-クリエイターは「**ガード**」と呼ばれるものを使用して、Core Candy Machineにさまざまな機能を追加できます。Metaplex Core Candy Machineには、**Candy Guard**と呼ばれる追加のSolanaプログラムが付属しており、[**合計23のデフォルトガード**](/jp/core-candy-machine/guards)が含まれています。追加プログラムを使用することで、高度な開発者はデフォルトのCandy Guardプログラムをフォークして独自のカスタムガードを作成しながら、メインのCandy Machineプログラムに依存し続けることができます。
+クリエイターは「**ガード**」と呼ばれるものを使用して、Core Candy Machineにさまざまな機能を追加できます。Metaplex Core Candy Machineには、**Candy Guard**と呼ばれる追加のSolanaプログラムが付属しており、[**合計23のデフォルトガード**](/ja/core-candy-machine/guards)が含まれています。追加プログラムを使用することで、高度な開発者はデフォルトのCandy Guardプログラムをフォークして独自のカスタムガードを作成しながら、メインのCandy Machineプログラムに依存し続けることができます。
 
 各ガードは自由に有効化・設定できるため、クリエイターは必要な機能を選択できます。すべてのガードを無効にすることは、誰でもいつでも無料でNFTをミントできるようにすることに相当しますが、これはおそらく望ましいことではありません。より現実的な例を作成するために、いくつかのガードを見てみましょう。
 
@@ -206,5 +206,5 @@ SOLが不足 {% .text-xs %} \
 {% edge from="mint-4" to="fail-4" path="bezier" /%}
 {% /diagram %}
 
-ご覧のように、23以上のデフォルトガードとカスタムガードを作成する能力により、クリエイターは重要な機能を厳選し、完璧なCandy Machineを構成できます。これは非常に強力な機能であり、多くのページを割いて説明しています。ガードについて詳しく知るための最適な出発点は、[Candy Guards](/jp/core-candy-machine/guards)ページです。
+ご覧のように、23以上のデフォルトガードとカスタムガードを作成する能力により、クリエイターは重要な機能を厳選し、完璧なCandy Machineを構成できます。これは非常に強力な機能であり、多くのページを割いて説明しています。ガードについて詳しく知るための最適な出発点は、[Candy Guards](/ja/core-candy-machine/guards)ページです。
 最新の変更を文書化します。

+ 2 - 2
src/pages/ja/core-candy-machine/preparing-assets.md

@@ -92,7 +92,7 @@ Umiには、プラグインを通じてアップロードプロセスを支援
 
 #### UMIでIrys経由でArweaveにアップロード
 
-UMIでファイルをアップロードすることについてより詳しく見るには、[Umi Storage](/jp/umi/storage)を参照してください。
+UMIでファイルをアップロードすることについてより詳しく見るには、[Umi Storage](/ja/umi/storage)を参照してください。
 
 {% dialect-switcher title="UMIでIrys経由でArweaveにファイルをアップロード" %}
 {% dialect title="JavaScript" id="js" %}
@@ -197,7 +197,7 @@ Core Candy Machine作成の準備の最後のステップは、Core Candy Machin
 Coreコレクションを作成するために必要なデータを持つために、前のステップのように画像をアップロードし、JSONメタデータを準備・アップロードする必要があります。
 {% /callout %}
 
-以下の例では、プラグインのない基本的なCoreコレクションを作成します。利用可能なプラグインのリストとより高度なCoreコレクション作成を表示するには、Coreの[Collection Management](/jp/core/collections)でドキュメントを参照してください。
+以下の例では、プラグインのない基本的なCoreコレクションを作成します。利用可能なプラグインのリストとより高度なCoreコレクション作成を表示するには、Coreの[Collection Management](/ja/core/collections)でドキュメントを参照してください。
 
 {% dialect-switcher title="MPL Coreコレクションを作成" %}
 {% dialect title="JavaScript" id="js" %}

+ 2 - 2
src/pages/ja/core-candy-machine/sdk/index.md

@@ -8,8 +8,8 @@ description: MPL Core Candy Machineプログラムで利用可能なSDKについ
 
 {% quick-links %}
 
-{% quick-link title="JavaScript" icon="JavaScript" href="/jp/core-candy-machine/sdk/javascript" description="Umiフレームワークに基づくMPL-Core Candy Machine用JavaScriptライブラリを始めましょう。" /%}
+{% quick-link title="JavaScript" icon="JavaScript" href="/ja/core-candy-machine/sdk/javascript" description="Umiフレームワークに基づくMPL-Core Candy Machine用JavaScriptライブラリを始めましょう。" /%}
 
-{% quick-link title="Rust" icon="Rust" href="/jp/core-candy-machine/sdk/rust" description="MPL Core Candy Machine Rust SDKクレートを使い始めましょう。" /%}
+{% quick-link title="Rust" icon="Rust" href="/ja/core-candy-machine/sdk/rust" description="MPL Core Candy Machine Rust SDKクレートを使い始めましょう。" /%}
 
 {% /quick-links %}

+ 2 - 2
src/pages/ja/core-candy-machine/update.md

@@ -59,8 +59,8 @@ data =  {
 }
 ```
 
-- [ConfigLineSettingsArgs](/jp/core-candy-machine/create#config-line-settings)
-- [HiddenSettingsArgs](/jp/core-candy-machine/create#hidden-settings)
+- [ConfigLineSettingsArgs](/ja/core-candy-machine/create#config-line-settings)
+- [HiddenSettingsArgs](/ja/core-candy-machine/create#hidden-settings)
 
 {% /dialect %}
 {% /dialect-switcher %}

+ 1 - 1
src/pages/ja/core/collections.md

@@ -116,7 +116,7 @@ pub async fn create_collection() {
 
 ### プラグイン付きコレクションの作成
 
-次のスニペットは、[ロイヤリティプラグイン](/jp/core/plugins/royalties)が付加されたコレクションを作成します。[こちら](/jp/core/plugins)で説明されているように、追加のプラグインをアタッチできます。
+次のスニペットは、[ロイヤリティプラグイン](/ja/core/plugins/royalties)が付加されたコレクションを作成します。[こちら](/ja/core/plugins)で説明されているように、追加のプラグインをアタッチできます。
 
 {% dialect-switcher title="プラグイン付きMPL Coreコレクションの作成" %}
 {% dialect title="JavaScript" id="js" %}

+ 7 - 7
src/pages/ja/core/create-asset.md

@@ -4,7 +4,7 @@ metaTitle: アセットの作成 | Core
 description: Metaplex Coreパッケージを使用してCore NFTアセットを作成する方法を学びます。
 ---
 
-[Core概要](/jp/core)で説明されているように、Core上のデジタルアセットは、正確に1つのオンチェーンアカウントとトークンを説明するオフチェーンデータで構成されています。このページでは、これらのアセットをミントするプロセスを説明します。 {% .lead %}
+[Core概要](/ja/core)で説明されているように、Core上のデジタルアセットは、正確に1つのオンチェーンアカウントとトークンを説明するオフチェーンデータで構成されています。このページでは、これらのアセットをミントするプロセスを説明します。 {% .lead %}
 
 ## 作成プロセス
 
@@ -171,7 +171,7 @@ let create_ix = CreateV1CpiBuilder::new()
 
 ## コレクション内でのアセット作成
 
-MPL Core Assetは、MPL Core Collectionが既に存在する場合、コレクションに直接作成できます。Collection Assetを作成するには[こちら](/jp/core/collections)をご覧ください。
+MPL Core Assetは、MPL Core Collectionが既に存在する場合、コレクションに直接作成できます。Collection Assetを作成するには[こちら](/ja/core/collections)をご覧ください。
 
 {% dialect-switcher title="コレクション内でのアセット作成" %}
 {% dialect title="JavaScript" id="js" %}
@@ -411,8 +411,8 @@ pub async fn create_asset_with_plugin() {
 
 プラグインのリストには以下が含まれますが、これらに限定されません:
 
-- [Burn Delegate](/jp/core/plugins/burn-delegate)
-- [Freeze Delegate](/jp/core/plugins/freeze-delegate)  
-- [Royalties](/jp/core/plugins/royalties)
-- [Transfer Delegate](/jp/core/plugins/transfer-delegate)
-- [Update Delegate](/jp/core/plugins/update-delegate)
+- [Burn Delegate](/ja/core/plugins/burn-delegate)
+- [Freeze Delegate](/ja/core/plugins/freeze-delegate)  
+- [Royalties](/ja/core/plugins/royalties)
+- [Transfer Delegate](/ja/core/plugins/transfer-delegate)
+- [Update Delegate](/ja/core/plugins/update-delegate)

+ 7 - 7
src/pages/ja/core/faq.md

@@ -11,25 +11,25 @@ Core AssetとCollectionアカウントの両方にはオンチェーンデータ
 - オンチェーンでのデータ保存にはレント支払いが必要です。AssetまたはCollectionアカウント内にすべてを保存しなければならない場合、アセットの説明などの長いテキストが含まれる可能性があり、より多くのバイト数が必要となり、アセットの作成が突然高価になります。より多くのバイトを保存することは、より多くのレントを支払わなければならないことを意味するからです
 - オンチェーンデータは柔軟性に欠けます。特定のバイト構造を使用してアカウント状態が作成されると、逆シリアル化の問題を引き起こす可能性なしに簡単に変更することはできません。したがって、すべてをオンチェーンに保存しなければならない場合、標準はエコシステムの需要に合わせて進化させることがはるかに困難になります。
 
-したがって、データをオンチェーンとオフチェーンのデータに分割することで、ユーザーは両方の世界の最良の部分を得ることができます。オンチェーンデータはプログラムによって**ユーザーに対する保証と期待を作成する**ために使用でき、オフチェーンデータは**標準化された柔軟な情報を提供する**ために使用できます。しかし、心配する必要はありません。データを完全にオンチェーンに置きたい場合、Metaplexはこの目的のために[Inscriptions](/jp/inscription)も提供しています。
+したがって、データをオンチェーンとオフチェーンのデータに分割することで、ユーザーは両方の世界の最良の部分を得ることができます。オンチェーンデータはプログラムによって**ユーザーに対する保証と期待を作成する**ために使用でき、オフチェーンデータは**標準化された柔軟な情報を提供する**ために使用できます。しかし、心配する必要はありません。データを完全にオンチェーンに置きたい場合、Metaplexはこの目的のために[Inscriptions](/ja/inscription)も提供しています。
 
 ## Coreの使用にコストはかかりますか?
 
-Coreは現在、アセットミントあたり呼び出し者に0.0015 SOLの非常に小さな手数料を請求しています。詳細については、[プロトコル手数料](/jp/protocol-fees)ページで確認できます。
+Coreは現在、アセットミントあたり呼び出し者に0.0015 SOLの非常に小さな手数料を請求しています。詳細については、[プロトコル手数料](/ja/protocol-fees)ページで確認できます。
 
 ## ソウルバウンドアセットを作成するには?
 
-Core標準では、ソウルバウンドアセットを作成できます。これを実現するには、[Permanent Freeze Delegate](/jp/core/plugins/permanent-freeze-delegate)プラグインまたは[Oracle Plugin](/jp/core/external-plugins/oracle)のいずれかを使用できます。
+Core標準では、ソウルバウンドアセットを作成できます。これを実現するには、[Permanent Freeze Delegate](/ja/core/plugins/permanent-freeze-delegate)プラグインまたは[Oracle Plugin](/ja/core/external-plugins/oracle)のいずれかを使用できます。
 
-詳しくは[ソウルバウンドアセットガイド](/jp/core/guides/create-soulbound-nft-asset)をご覧ください!
+詳しくは[ソウルバウンドアセットガイド](/ja/core/guides/create-soulbound-nft-asset)をご覧ください!
 
 ## アセットを不変に設定するには?
 
-Coreには複数レベルの「不変性」があります。詳細情報と実装方法については、[このガイド](/jp/core/guides/immutability)で確認できます。
+Coreには複数レベルの「不変性」があります。詳細情報と実装方法については、[このガイド](/ja/core/guides/immutability)で確認できます。
 
 ## Metaplex Token MetadataとCoreの違いは何ですか?
 
-CoreはNFT専用に設計された完全に新しい標準であるため、いくつかの注目すべき違いがあります。例えば、Coreはより安価で、より少ないコンピュートユニットが必要で、開発者の視点からより扱いやすいはずです。詳細については[違い](/jp/core/tm-differences)ページをご覧ください。
+CoreはNFT専用に設計された完全に新しい標準であるため、いくつかの注目すべき違いがあります。例えば、Coreはより安価で、より少ないコンピュートユニットが必要で、開発者の視点からより扱いやすいはずです。詳細については[違い](/ja/core/tm-differences)ページをご覧ください。
 
 ## Coreはエディションをサポートしていますか?
-はい![Edition](/jp/core/plugins/edition)と[Master Edition](/jp/core/plugins/master-edition)プラグインを使用します。詳細については、[「エディションの印刷方法」ガイド](/jp/core/guides/print-editions)で確認できます。
+はい![Edition](/ja/core/plugins/edition)と[Master Edition](/ja/core/plugins/master-edition)プラグインを使用します。詳細については、[「エディションの印刷方法」ガイド](/ja/core/guides/print-editions)で確認できます。

+ 2 - 2
src/pages/ja/core/fetch.md

@@ -90,7 +90,7 @@ pub async fn fetch_asset() {
 
 ## 複数アセットの取得
 
-複数のアセットは、`getProgramAccounts`(GPA)コールを使用して取得できますが、これはRPCの観点から非常に高価で遅い場合があります。または、`Digital Asset Standard` APIを使用することもでき、これはより高速ですが[特定のRPCプロバイダー](/jp/rpc-providers)が必要です。
+複数のアセットは、`getProgramAccounts`(GPA)コールを使用して取得できますが、これはRPCの観点から非常に高価で遅い場合があります。または、`Digital Asset Standard` APIを使用することもでき、これはより高速ですが[特定のRPCプロバイダー](/ja/rpc-providers)が必要です。
 
 ### 所有者でアセットを取得
 
@@ -339,7 +339,7 @@ pub async fn fetch_assets_by_update_authority() {
 
 DASが有効なRPCを使用する場合、インデックス化されたアセットを活用して超高速の取得とデータ検索が可能になります。
 
-DASは、メタデータ、オフチェーンメタデータ、コレクションデータ、プラグイン(属性を含む)など、すべてをインデックス化します。Metaplex DAS APIについて詳しく知りたい場合は、[こちらをクリック](/jp/das-api)してください。一般的なDAS SDKに加えて、MPL Coreに直接正しいタイプを返してMPL Core SDKでさらに使用できるようにするために、[MPL Core用拡張機能](/jp/das-api/core-extension)が作成されました。また、コレクションから継承されたアセットのプラグインを自動的に派生させ、DAS-to-Coreタイプ変換のための関数を提供します。
+DASは、メタデータ、オフチェーンメタデータ、コレクションデータ、プラグイン(属性を含む)など、すべてをインデックス化します。Metaplex DAS APIについて詳しく知りたい場合は、[こちらをクリック](/ja/das-api)してください。一般的なDAS SDKに加えて、MPL Coreに直接正しいタイプを返してMPL Core SDKでさらに使用できるようにするために、[MPL Core用拡張機能](/ja/das-api/core-extension)が作成されました。また、コレクションから継承されたアセットのプラグインを自動的に派生させ、DAS-to-Coreタイプ変換のための関数を提供します。
 
 以下は、DASでMPL Core Assetを取得した際の返されるデータの例です。
 

+ 8 - 8
src/pages/ja/core/guides/index.md

@@ -8,20 +8,20 @@ MPL Coreの以下のガイドが現在利用可能です:
 
 {% quick-links %}
 
-{% quick-link title="ソウルバウンドNFT" icon="CodeBracketSquare" href="/jp/core/guides/create-soulbound-nft-asset" description="コード例を含むソウルバウンドNFTの異なるオプション" /%}
+{% quick-link title="ソウルバウンドNFT" icon="CodeBracketSquare" href="/ja/core/guides/create-soulbound-nft-asset" description="コード例を含むソウルバウンドNFTの異なるオプション" /%}
 
-{% quick-link title="プリントエディション" icon="CodeBracketSquare" href="/jp/core/guides/print-editions" description="MPL Coreでプラグインを組み合わせてエディションを作成する方法を学びます" /%}
+{% quick-link title="プリントエディション" icon="CodeBracketSquare" href="/ja/core/guides/print-editions" description="MPL Coreでプラグインを組み合わせてエディションを作成する方法を学びます" /%}
 
-{% quick-link title="不変性" icon="BookOpen" href="/jp/core/guides/immutability" description="MPL Coreで不変性がどのように機能するかを学びます" /%}
+{% quick-link title="不変性" icon="BookOpen" href="/ja/core/guides/immutability" description="MPL Coreで不変性がどのように機能するかを学びます" /%}
 
-{% quick-link title="オラクルプラグインの例" icon="CodeBracketSquare" href="/jp/core/guides/oracle-plugin-example" description="米国の市場時間中のみ取引できるコレクションを作成する方法を学びます" /%}
+{% quick-link title="オラクルプラグインの例" icon="CodeBracketSquare" href="/ja/core/guides/oracle-plugin-example" description="米国の市場時間中のみ取引できるコレクションを作成する方法を学びます" /%}
 
-{% quick-link title="アプリデータプラグインの例" icon="CodeBracketSquare" href="/jp/core/guides/onchain-ticketing-with-appdata" description="アプリデータプラグインを活用したチケットプラットフォームの作成方法を学びます" /%}
+{% quick-link title="アプリデータプラグインの例" icon="CodeBracketSquare" href="/ja/core/guides/onchain-ticketing-with-appdata" description="アプリデータプラグインを活用したチケットプラットフォームの作成方法を学びます" /%}
 
-{% quick-link title="TypeScriptステーキングの例" icon="CodeBracketSquare" href="/jp/core/guides/javascript/web2-typescript-staking-example" description="TypeScriptのみを使用してコレクションのステーキングプログラムを作成する方法を学びます" /%}
+{% quick-link title="TypeScriptステーキングの例" icon="CodeBracketSquare" href="/ja/core/guides/javascript/web2-typescript-staking-example" description="TypeScriptのみを使用してコレクションのステーキングプログラムを作成する方法を学びます" /%}
 
-{% quick-link title="Anchorステーキングの例" icon="CodeBracketSquare" href="/jp/core/guides/anchor/anchor-staking-example" description="コレクションのステーキングスマートコントラクトを作成する方法を学びます" /%}
+{% quick-link title="Anchorステーキングの例" icon="CodeBracketSquare" href="/ja/core/guides/anchor/anchor-staking-example" description="コレクションのステーキングスマートコントラクトを作成する方法を学びます" /%}
 
-{% quick-link title="Gumdropを使用したクレーム型エアドロップの作成" icon="CodeBracketSquare" href="/jp/guides/general/spl-token-claim-airdrop-using-gumdrop" description="Gumdropを使用してクレーム型エアドロップを作成する方法を学びます" /%}
+{% quick-link title="Gumdropを使用したクレーム型エアドロップの作成" icon="CodeBracketSquare" href="/ja/guides/general/spl-token-claim-airdrop-using-gumdrop" description="Gumdropを使用してクレーム型エアドロップを作成する方法を学びます" /%}
 
 {% /quick-links %}

+ 6 - 6
src/pages/ja/core/index.md

@@ -10,11 +10,11 @@ Metaplex Core(「Core」)は、従来の標準の複雑さと技術的負債
 
 {% quick-links %}
 
-{% quick-link title="はじめに" icon="InboxArrowDown" href="/jp/core/getting-started" description="お好みの言語またはライブラリを選択し、Solanaでデジタルアセットをはじめましょう。" /%}
+{% quick-link title="はじめに" icon="InboxArrowDown" href="/ja/core/getting-started" description="お好みの言語またはライブラリを選択し、Solanaでデジタルアセットをはじめましょう。" /%}
 
 {% quick-link title="APIリファレンス" icon="CodeBracketSquare" href="https://mpl-core.typedoc.metaplex.com/" target="_blank" description="何か特定のものをお探しですか?APIリファレンスをご覧いただき、答えを見つけてください。" /%}
 
-{% quick-link title="MPL Token Metadataとの違いの概要" icon="AcademicCap" href="/jp/core/tm-differences" description="Token Metadataに慣れていて、新機能や動作の変更の概要を見たいですか?" /%}
+{% quick-link title="MPL Token Metadataとの違いの概要" icon="AcademicCap" href="/ja/core/tm-differences" description="Token Metadataに慣れていて、新機能や動作の変更の概要を見たいですか?" /%}
 
 {% quick-link title="UIで自分で試してみよう!" icon="Beaker" href="https://core.metaplex.com/" target="_blank" description="使いやすいWebサイトを使ってCore自分で試してみてください!" /%}
 
@@ -27,12 +27,12 @@ Metaplex CoreはMetaplexプロトコルの新しいNFT標準です。Metaplex To
 - **前例のないコスト効率**: Metaplex Coreは利用可能な代替品と比較して最低のミントコストを提供します。例えば、Token Metadataで.022 SOL、Token Extensionsで.0046 SOLかかるNFTが、Coreでは.0029 SOLでミントできます。
 - **低コンピュート**: Core操作は小さなコンピュートユニット(CU)フットプリントを持ちます。これにより、1つのブロックにより多くのトランザクションを含めることができます。Token Metadataのミントが205000 CUを必要とするのに対し、Coreはわずか17000 CUで済みます。
 - **単一アカウント設計**: SPL TokenやToken extensions(Token22とも呼ばれる)のようなファンジブルトークン標準に依存する代わりに、CoreはNFT標準のニーズに焦点を当てています。これによりCoreは所有者も追跡する単一アカウントを使用できます。
-- **強制ロイヤリティ**: Coreはデフォルトで[ロイヤリティの強制](/jp/core/plugins/royalties)を可能にします。
-- **ファーストクラスコレクションサポート**: アセットは[コレクション](/jp/core/collections)にグループ化できます。これはToken Metadataでも可能ですが、Coreではコレクションは独自のアセットクラスであり、以下のような追加機能が利用できます:
+- **強制ロイヤリティ**: Coreはデフォルトで[ロイヤリティの強制](/ja/core/plugins/royalties)を可能にします。
+- **ファーストクラスコレクションサポート**: アセットは[コレクション](/ja/core/collections)にグループ化できます。これはToken Metadataでも可能ですが、Coreではコレクションは独自のアセットクラスであり、以下のような追加機能が利用できます:
 - **コレクションレベル操作**: Coreはユーザーがコレクションレベルですべてのアセットに変更を加えることを可能にします。例えば、すべてのコレクションアセットを凍結したり、ロイヤリティの詳細を単一のトランザクションで同時に変更したりできます!
 - **高度なプラグインサポート**: 組み込みステーキングからアセットベースのポイントシステムまで、Metaplex Coreのプラグインアーキテクチャは広大なユーティリティとカスタマイゼーションの景観を開きます。プラグインは開発者が作成、転送、バーンなどのアセットライフサイクルイベントにフックすることで、カスタム動作を追加できます。アセットにプラグインを追加できます。例:権限の委任やDASによって自動的にインデックス化されるオンチェーン属性の追加:
-- **すぐに使えるインデックス化**: [DASをサポートする多くのRPCプロバイダー](/jp/rpc-providers)は既にCoreをサポートしています。
+- **すぐに使えるインデックス化**: [DASをサポートする多くのRPCプロバイダー](/ja/rpc-providers)は既にCoreをサポートしています。
 
 ## 次のステップ
 
-Metaplex Coreが何であるかを高レベルで説明したので、Coreアセットとやり取りするために使用できる様々な言語/フレームワークを列挙した[はじめに](/jp/core/getting-started)ページをチェックすることをお勧めします。また、[MPL Token Metadataとの違い](/jp/core/tm-differences)ページも見てみたいと思うかもしれません。その後、様々な機能ページを使用してcNFTで実行できる特定の操作について詳しく学ぶことができます。
+Metaplex Coreが何であるかを高レベルで説明したので、Coreアセットとやり取りするために使用できる様々な言語/フレームワークを列挙した[はじめに](/ja/core/getting-started)ページをチェックすることをお勧めします。また、[MPL Token Metadataとの違い](/ja/core/tm-differences)ページも見てみたいと思うかもしれません。その後、様々な機能ページを使用してcNFTで実行できる特定の操作について詳しく学ぶことができます。

+ 2 - 2
src/pages/ja/core/plugins/adding-plugins.md

@@ -4,7 +4,7 @@ metaTitle: プラグインの追加 | Core
 description: MPL Core NFTアセットとコレクションにプラグインを追加する方法を学びます。
 ---
 
-プラグインは、MPL Core AssetとMPL Core Collectionの両方に割り当てることができます。MPL Core AssetとMPL Core Collectionは、利用可能なプラグインの似たようなリストを共有しています。それぞれでどのプラグインを使用できるかを知るには、[プラグイン概要](/jp/core/plugins)エリアを訪問してください。
+プラグインは、MPL Core AssetとMPL Core Collectionの両方に割り当てることができます。MPL Core AssetとMPL Core Collectionは、利用可能なプラグインの似たようなリストを共有しています。それぞれでどのプラグインを使用できるかを知るには、[プラグイン概要](/ja/core/plugins)エリアを訪問してください。
 
 ## Core Assetにプラグインを追加
 
@@ -13,7 +13,7 @@ description: MPL Core NFTアセットとコレクションにプラグインを
 **Create Plugin ヘルパー**
 
 `createPlugin()`ヘルパーは、`addPlugin()`プロセス中にプラグインを割り当てることができる型付きメソッドを提供します。
-プラグインとその引数の完全なリストについては、[プラグイン概要](/jp/core/plugins)ページを参照してください。
+プラグインとその引数の完全なリストについては、[プラグイン概要](/ja/core/plugins)ページを参照してください。
 
 ### デフォルト権限でプラグインを追加
 

+ 19 - 19
src/pages/ja/core/plugins/index.md

@@ -30,9 +30,9 @@ Core Assetのライフサイクル中に、以下のようなイベントがト
 
 所有者管理プラグインには以下が含まれますが、これらに限定されません:
 
-- [Transfer Delegate](/jp/core/plugins/transfer-delegate)(マーケットプレース、ゲーム)
-- [Freeze Delegate](/jp/core/plugins/freeze-delegate)(マーケットプレース、ステーキング、ゲーム)
-- [Burn Delegate](/jp/core/plugins/burn-delegate)(ゲーム)
+- [Transfer Delegate](/ja/core/plugins/transfer-delegate)(マーケットプレース、ゲーム)
+- [Freeze Delegate](/ja/core/plugins/freeze-delegate)(マーケットプレース、ステーキング、ゲーム)
+- [Burn Delegate](/ja/core/plugins/burn-delegate)(ゲーム)
 
 権限が設定されていない状態で所有者管理プラグインがアセット/コレクションに追加された場合、権限タイプは`owner`タイプにデフォルト設定されます。
 
@@ -44,9 +44,9 @@ Core Assetのライフサイクル中に、以下のようなイベントがト
 
 権限管理プラグインには以下が含まれますが、これらに限定されません:
 
-- [Royalties](/jp/core/plugins/royalties)
-- [Update Delegate](/jp/core/plugins/update-delegate)
-- [Attribute](/jp/core/plugins/attribute)
+- [Royalties](/ja/core/plugins/royalties)
+- [Update Delegate](/ja/core/plugins/update-delegate)
+- [Attribute](/ja/core/plugins/attribute)
 
 権限引数が存在しない状態で権限管理プラグインがアセット/コレクションに追加された場合、プラグインは権限タイプ`update authority`にデフォルト設定されます。
 
@@ -56,15 +56,15 @@ Core Assetのライフサイクル中に、以下のようなイベントがト
 
 永続プラグインには以下が含まれますが、これらに限定されません:
 
-- [Permanent Transfer Delegate](/jp/core/plugins/permanent-transfer-delegate)
-- [Permanent Freeze Delegate](/jp/core/plugins/permanent-freeze-delegate)
-- [Permanent Burn Delegate](/jp/core/plugins/permanent-burn-delegate)
+- [Permanent Transfer Delegate](/ja/core/plugins/permanent-transfer-delegate)
+- [Permanent Freeze Delegate](/ja/core/plugins/permanent-freeze-delegate)
+- [Permanent Burn Delegate](/ja/core/plugins/permanent-burn-delegate)
 
 権限が設定されていない状態で永続プラグインがアセット/コレクションに追加された場合、権限タイプは`update authority`タイプにデフォルト設定されます。
 
 ## コレクションプラグイン
 
-コレクションプラグインは、コレクションレベルで追加されるプラグインで、コレクション全体に影響を与えることができます。これは特にロイヤリティに有用で、[ロイヤリティプラグイン](/jp/core/plugins/royalties)をコレクションアセットに割り当てると、そのコレクション内のすべてのアセットがそのプラグインを参照するようになります。
+コレクションプラグインは、コレクションレベルで追加されるプラグインで、コレクション全体に影響を与えることができます。これは特にロイヤリティに有用で、[ロイヤリティプラグイン](/ja/core/plugins/royalties)をコレクションアセットに割り当てると、そのコレクション内のすべてのアセットがそのプラグインを参照するようになります。
 
 コレクションは`永続プラグイン`と`権限管理プラグイン`のみにアクセスできます。
 
@@ -83,15 +83,15 @@ MPL Core AssetとMPL Core Collection Assetの両方が同じプラグインタ
 
 | プラグイン                                                                   | 所有者管理 | 権限管理 | 永続 |
 | ------------------------------------------------------------------------ | ---------- | -------- | ---- |
-| [Transfer Delegate](/jp/core/plugins/transfer-delegate)                  | ✅         |          |      |
-| [Freeze Delegate](/jp/core/plugins/freeze-delegate)                      | ✅         |          |      |
-| [Burn Delegate](/jp/core/plugins/burn-delegate)                          | ✅         |          |      |
-| [Royalties](/jp/core/plugins/royalties)                                  |            | ✅       |      |
-| [Update Delegate](/jp/core/plugins/update-delegate)                      |            | ✅       |      |
-| [Attribute](/jp/core/plugins/attribute)                                  |            | ✅       |      |
-| [Permanent Transfer Delegate](/jp/core/plugins/permanent-transfer-delegate) |            |          | ✅   |
-| [Permanent Freeze Delegate](/jp/core/plugins/permanent-freeze-delegate)  |            |          | ✅   |
-| [Permanent Burn Delegate](/jp/core/plugins/permanent-burn-delegate)      |            |          | ✅   |
+| [Transfer Delegate](/ja/core/plugins/transfer-delegate)                  | ✅         |          |      |
+| [Freeze Delegate](/ja/core/plugins/freeze-delegate)                      | ✅         |          |      |
+| [Burn Delegate](/ja/core/plugins/burn-delegate)                          | ✅         |          |      |
+| [Royalties](/ja/core/plugins/royalties)                                  |            | ✅       |      |
+| [Update Delegate](/ja/core/plugins/update-delegate)                      |            | ✅       |      |
+| [Attribute](/ja/core/plugins/attribute)                                  |            | ✅       |      |
+| [Permanent Transfer Delegate](/ja/core/plugins/permanent-transfer-delegate) |            |          | ✅   |
+| [Permanent Freeze Delegate](/ja/core/plugins/permanent-freeze-delegate)  |            |          | ✅   |
+| [Permanent Burn Delegate](/ja/core/plugins/permanent-burn-delegate)      |            |          | ✅   |
 
 ## プラグインとライフサイクルイベント
 

+ 2 - 2
src/pages/ja/core/sdk/index.md

@@ -8,8 +8,8 @@ description: Metaplexの新しいデジタルアセット標準であるCoreを
 
 {% quick-links %}
 
-{% quick-link title="JavaScript" icon="JavaScript" href="/jp/core/sdk/javascript" description="Umiフレームワークに基づくMPL-Core用JavaScriptライブラリをはじめましょう。" /%}
+{% quick-link title="JavaScript" icon="JavaScript" href="/ja/core/sdk/javascript" description="Umiフレームワークに基づくMPL-Core用JavaScriptライブラリをはじめましょう。" /%}
 
-{% quick-link title="Rust" icon="Rust" href="/jp/core/sdk/rust" description="MPL-Core Rustクレートの使用をはじめましょう。" /%}
+{% quick-link title="Rust" icon="Rust" href="/ja/core/sdk/rust" description="MPL-Core Rustクレートの使用をはじめましょう。" /%}
 
 {% /quick-links %}

+ 3 - 3
src/pages/ja/core/sdk/javascript.md

@@ -4,9 +4,9 @@ metaTitle: Javascript SDK | MPL-Core
 description: MPL-Core Javascript SDKを実行するためのプロジェクトのセットアップ方法を学びます。
 ---
 
-MetaplexはMPL-Coreプログラムとやり取りするために使用できるJavaScriptライブラリを提供しています。[Umiフレームワーク](/jp/umi)のおかげで、多くの強制的な依存関係なしに配布されるため、任意のJavaScriptプロジェクトで使用できる軽量なライブラリを提供します。
+MetaplexはMPL-Coreプログラムとやり取りするために使用できるJavaScriptライブラリを提供しています。[Umiフレームワーク](/ja/umi)のおかげで、多くの強制的な依存関係なしに配布されるため、任意のJavaScriptプロジェクトで使用できる軽量なライブラリを提供します。
 
-はじめに、[Umiフレームワークをインストール](/jp/umi/getting-started)し、MPL-Core JavaScriptライブラリをインストールする必要があります。
+はじめに、[Umiフレームワークをインストール](/ja/umi/getting-started)し、MPL-Core JavaScriptライブラリをインストールする必要があります。
 
 ## インストール
 
@@ -26,7 +26,7 @@ npm install @metaplex-foundation/mpl-core
 
 ## Umiセットアップ
 
-Metaplex Javascript SDKとやり取りするには`umi`インスタンスが必要です。まだ`umi`インスタンスをセットアップして設定していない場合は、[Umiはじめに](/jp/umi/getting-started)ページをチェックして、RPCエンドポイントと`umi`アイデンティティ/サイナーを設定できます。
+Metaplex Javascript SDKとやり取りするには`umi`インスタンスが必要です。まだ`umi`インスタンスをセットアップして設定していない場合は、[Umiはじめに](/ja/umi/getting-started)ページをチェックして、RPCエンドポイントと`umi`アイデンティティ/サイナーを設定できます。
 
 `umi`インスタンスの初期化中に、以下を使用してmpl-coreパッケージを`umi`に追加できます:
 

+ 2 - 2
src/pages/ja/core/sdk/rust.md

@@ -28,7 +28,7 @@ cargo add mpl-core
 
 すべてのCoreインストラクションのリストはこちらで見つけることができます:[Metaplex Core - Rust Instructions](https://docs.rs/mpl-core/latest/mpl_core/instructions/index.html)
 
-Rustの使用に関するより包括的なガイドについては、[Metaplex Rust SDKsガイド](/jp/guides/rust/metaplex-rust-sdks)ページをチェックしてください。
+Rustの使用に関するより包括的なガイドについては、[Metaplex Rust SDKsガイド](/ja/guides/rust/metaplex-rust-sdks)ページをチェックしてください。
 
 #### CreateV1Builder - 例
 
@@ -76,7 +76,7 @@ let keypair_path = ".../my-key.json"
 
 すべてのCoreインストラクションのリストはこちらで見つけることができます:[Metaplex Core - Rust Instructions](https://docs.rs/mpl-core/latest/mpl_core/instructions/index.html)
 
-MetaplexクレートをしてCPIインストラクションを作成するための包括的なガイドについては、[Metaplexプログラムへのライブラリ](/jp/guides/rust/how-to-cpi-into-a-metaplex-program)ページをチェックしてください。
+MetaplexクレートをしてCPIインストラクションを作成するための包括的なガイドについては、[Metaplexプログラムへのライブラリ](/ja/guides/rust/how-to-cpi-into-a-metaplex-program)ページをチェックしてください。
 
 #### CreateV1CpiBuilder - 例
 

+ 5 - 5
src/pages/ja/core/tm-differences.md

@@ -47,11 +47,11 @@ Coreコレクションには複数の新機能が含まれています。コレ
 
 Coreでは、コレクションは追加機能を可能にする**ファーストクラスアセット**です。例えば、Coreはコレクションにロイヤリティプラグインを追加することで、コレクションレベルのロイヤリティ調整を提供します。開発者とクリエイターは、各アセットを個別に更新することを強制されるのではなく、コレクション内のすべてのアセットを一度に更新できるようになりました。しかし、コレクション内の一部のアセットが異なるロイヤリティ設定を持つべき場合はどうでしょうか?問題ありません - 同じプラグインをアセットに追加するだけで、コレクションレベルのロイヤリティプラグインが上書きされます。
 
-TMでは不可能だったコレクション機能の例として、コレクションレベルロイヤリティがあります - ロイヤリティやクリエイターを変更する際にもう各アセットを更新する必要はなく、コレクションで定義します。これは、コレクションに[ロイヤリティプラグイン](/jp/core/plugins/royalties)を追加することで実現できます。一部のアセットが異なるロイヤリティ設定を持つべきですか?同じプラグインをアセットに追加するだけで、コレクションレベルのロイヤリティプラグインが上書きされます。
+TMでは不可能だったコレクション機能の例として、コレクションレベルロイヤリティがあります - ロイヤリティやクリエイターを変更する際にもう各アセットを更新する必要はなく、コレクションで定義します。これは、コレクションに[ロイヤリティプラグイン](/ja/core/plugins/royalties)を追加することで実現できます。一部のアセットが異なるロイヤリティ設定を持つべきですか?同じプラグインをアセットに追加するだけで、コレクションレベルのロイヤリティプラグインが上書きされます。
 
 フリーズもコレクションレベルで可能です。
 
-コレクションの作成や更新など、コレクションの取り扱いに関する詳細情報は、[コレクション管理](/jp/core/collections)ページで見つけることができます。
+コレクションの作成や更新など、コレクションの取り扱いに関する詳細情報は、[コレクション管理](/ja/core/collections)ページで見つけることができます。
 
 ### ライフサイクルイベントとプラグイン
 
@@ -65,13 +65,13 @@ TMでは不可能だったコレクション機能の例として、コレクシ
 - 権限プラグイン承認
 - 権限プラグイン削除
 
-TMでは、これらのライフサイクルイベントは所有者または委任者によって実行されます。すべてのTMアセット(nfts/pNfts)には、すべてのライフサイクルイベントに対する関数が含まれています。Coreでは、これらのイベントはアセットまたはコレクション全体レベルで[プラグイン](/jp/core/plugins)によって処理されます。
+TMでは、これらのライフサイクルイベントは所有者または委任者によって実行されます。すべてのTMアセット(nfts/pNfts)には、すべてのライフサイクルイベントに対する関数が含まれています。Coreでは、これらのイベントはアセットまたはコレクション全体レベルで[プラグイン](/ja/core/plugins)によって処理されます。
 
 アセットレベルまたはコレクションレベルの両方に付加されたプラグインは、これらのライフサイクルイベント中に検証プロセスを実行し、イベントの実行を`承認`、`拒否`、または`強制承認`します。
 
 ### フリーズ / ロック
 
-TMでアセットをフリーズするには、通常まずフリーズ権限を別のウォレットに委任し、それがNFTをフリーズします。Coreでは、2つのプラグインのいずれかを使用する必要があります:`Freeze Delegate`または`Permanent Freeze Delegate`。後者はアセット作成時にのみ追加できますが、`Freeze Delegate`プラグインは、現在の所有者がトランザクションに署名すれば、いつでも[追加](/jp/core/plugins/adding-plugins)できます。
+TMでアセットをフリーズするには、通常まずフリーズ権限を別のウォレットに委任し、それがNFTをフリーズします。Coreでは、2つのプラグインのいずれかを使用する必要があります:`Freeze Delegate`または`Permanent Freeze Delegate`。後者はアセット作成時にのみ追加できますが、`Freeze Delegate`プラグインは、現在の所有者がトランザクションに署名すれば、いつでも[追加](/ja/core/plugins/adding-plugins)できます。
 
 委任もCoreでより簡単になります。Delegete Recordアカウントを廃止し、委任権限を直接プラグイン自体に保存し、アセット作成時または`addPluginV1`関数を介してアセットにプラグインを追加する際に割り当て可能にしています。
 
@@ -111,4 +111,4 @@ const burningAllowed = canBurn(authority, asset, collection)
 
 - コレクション管理
 - プラグイン概要
-- [属性プラグイン](/jp/core/plugins/attribute)を使用したオンチェーンデータの追加
+- [属性プラグイン](/ja/core/plugins/attribute)を使用したオンチェーンデータの追加

+ 1 - 1
src/pages/ja/core/transfer.md

@@ -161,4 +161,4 @@ pub async fn transfer_asset_in_collection() {
 
 ## アセットの Transfer Delegate である場合はどうなりますか?
 
-[Transfer Delegate](/jp/core/plugins/transfer-delegate)プラグインを介してアセットのTransfer Delegateである場合、アセットの所有者であるかのように`transferV1`関数を呼び出すことができます。
+[Transfer Delegate](/ja/core/plugins/transfer-delegate)プラグインを介してアセットのTransfer Delegateである場合、アセットの所有者であるかのように`transferV1`関数を呼び出すことができます。

+ 1 - 1
src/pages/ja/core/update.md

@@ -156,7 +156,7 @@ const updateTx = await update(umi, {
 
 ## Core Assetデータを不変にする
 
-以下は、SDKを使用してCore Assetを完全に不変にする方法です。[不変性ガイド](/jp/core/guides/immutability)で説明されているように、不変性には異なるレベルがあることに注意してください。
+以下は、SDKを使用してCore Assetを完全に不変にする方法です。[不変性ガイド](/ja/core/guides/immutability)で説明されているように、不変性には異なるレベルがあることに注意してください。
 
 {% callout type="warning" title="重要" %}
 

+ 12 - 12
src/pages/ja/das-api/core-extension/index.md

@@ -4,27 +4,27 @@ metaTitle: メソッド | Core DAS API拡張機能
 description: MPL Core用のDigital Asset Standard API拡張機能
 ---
 
-一般的なDAS SDKに加えて、[MPL Core](/jp/core)用の拡張機能が作成されており、MPL Core SDKでさらに使用するための正しいタイプを直接返します。また、コレクションから継承されたアセット内のプラグインを自動的に派生し、[DAS-to-Core型変換](/jp/das-api/core-extension/convert-das-asset-to-core)のための機能を提供します。
+一般的なDAS SDKに加えて、[MPL Core](/ja/core)用の拡張機能が作成されており、MPL Core SDKでさらに使用するための正しいタイプを直接返します。また、コレクションから継承されたアセット内のプラグインを自動的に派生し、[DAS-to-Core型変換](/ja/das-api/core-extension/convert-das-asset-to-core)のための機能を提供します。
 
 ## 取得
 
 Core DAS API拡張機能は以下のメソッドをサポートしています:
 
-- [`getAsset`](/jp/das-api/core-extension/methods/get-asset): メタデータとオーナーを含む圧縮/標準アセットの情報を返します。
-- [`getCollection`](/jp/das-api/core-extension/methods/get-collection): 圧縮アセットのマークルツリー証明情報を返します。
-- [`getAssetsByAuthority`](/jp/das-api/core-extension/methods/get-assets-by-authority): オーソリティアドレスを指定してアセットのリストを返します。
-- [`getAssetsByCollection`](/jp/das-api/core-extension/methods/get-assets-by-collection): グループ(キー、値)ペアを指定してアセットのリストを返します。例えば、これはコレクション内のすべてのアセットを取得するために使用できます。
-- [`getAssetsByOwner`](/jp/das-api/core-extension/methods/get-assets-by-owner): オーナーアドレスを指定してアセットのリストを返します。
-- [`searchAssets`](/jp/das-api/core-extension/methods/search-assets): 検索条件を指定してアセットのリストを返します。
-- [`searchCollections`](/jp/das-api/core-extension/methods/search-collections): 検索条件を指定してコレクションのリストを返します。
+- [`getAsset`](/ja/das-api/core-extension/methods/get-asset): メタデータとオーナーを含む圧縮/標準アセットの情報を返します。
+- [`getCollection`](/ja/das-api/core-extension/methods/get-collection): 圧縮アセットのマークルツリー証明情報を返します。
+- [`getAssetsByAuthority`](/ja/das-api/core-extension/methods/get-assets-by-authority): オーソリティアドレスを指定してアセットのリストを返します。
+- [`getAssetsByCollection`](/ja/das-api/core-extension/methods/get-assets-by-collection): グループ(キー、値)ペアを指定してアセットのリストを返します。例えば、これはコレクション内のすべてのアセットを取得するために使用できます。
+- [`getAssetsByOwner`](/ja/das-api/core-extension/methods/get-assets-by-owner): オーナーアドレスを指定してアセットのリストを返します。
+- [`searchAssets`](/ja/das-api/core-extension/methods/search-assets): 検索条件を指定してアセットのリストを返します。
+- [`searchCollections`](/ja/das-api/core-extension/methods/search-collections): 検索条件を指定してコレクションのリストを返します。
 
 ## 型変換
 さらに、通常のDAS AssetタイプをCore AssetsとCore Collectionsに変換する機能も提供します:
-- [`dasAssetsToCoreAssets`](/jp/das-api/core-extension/convert-das-asset-to-core#convert-to-asset-example): DAS AssetをCore Assetタイプに変換
-- [`dasAssetsToCoreCollection`](/jp/das-api/core-extension/convert-das-asset-to-core#convert-to-asset-example): DAS AssetをCore Collectionタイプに変換
+- [`dasAssetsToCoreAssets`](/ja/das-api/core-extension/convert-das-asset-to-core#convert-to-asset-example): DAS AssetをCore Assetタイプに変換
+- [`dasAssetsToCoreCollection`](/ja/das-api/core-extension/convert-das-asset-to-core#convert-to-asset-example): DAS AssetをCore Collectionタイプに変換
 
 ## プラグイン派生
 
-このライブラリは、コレクションから継承されたアセット内のプラグインを自動的に派生します。一般的なプラグイン継承と優先順位について詳しくは、[Coreプラグインページ](/jp/core/plugins)をご覧ください。
+このライブラリは、コレクションから継承されたアセット内のプラグインを自動的に派生します。一般的なプラグイン継承と優先順位について詳しくは、[Coreプラグインページ](/ja/core/plugins)をご覧ください。
 
-派生を無効化したり手動で実装したい場合は、[プラグイン派生ページ](/jp/das-api/core-extension/plugin-derivation)が役立つでしょう。
+派生を無効化したり手動で実装したい場合は、[プラグイン派生ページ](/ja/das-api/core-extension/plugin-derivation)が役立つでしょう。

+ 7 - 7
src/pages/ja/das-api/display-options.md

@@ -82,13 +82,13 @@ const assets = await umi.rpc.searchAssets({
 
 以下のDAS APIメソッドは表示オプション付きの`options`パラメータをサポートします:
 
-- [Get Asset](/jp/das-api/methods/get-asset)
-- [Get Assets](/jp/das-api/methods/get-assets)
-- [Get Assets By Owner](/jp/das-api/methods/get-assets-by-owner)
-- [Get Assets By Creator](/jp/das-api/methods/get-assets-by-creator)
-- [Get Assets By Authority](/jp/das-api/methods/get-assets-by-authority)
-- [Get Assets By Group](/jp/das-api/methods/get-assets-by-group)
-- [Search Assets](/jp/das-api/methods/search-assets)
+- [Get Asset](/ja/das-api/methods/get-asset)
+- [Get Assets](/ja/das-api/methods/get-assets)
+- [Get Assets By Owner](/ja/das-api/methods/get-assets-by-owner)
+- [Get Assets By Creator](/ja/das-api/methods/get-assets-by-creator)
+- [Get Assets By Authority](/ja/das-api/methods/get-assets-by-authority)
+- [Get Assets By Group](/ja/das-api/methods/get-assets-by-group)
+- [Search Assets](/ja/das-api/methods/search-assets)
 
 ## パフォーマンスに関する考慮事項
 

+ 3 - 3
src/pages/ja/das-api/getting-started.md

@@ -25,17 +25,17 @@ import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
 const umi = createUmi("exampleDasProvider.com").use(dasApi());
 ```
 
-このプラグインは、Metaplex DAS API仕様をサポートするあらゆるRPCで使用できます – 仕様をサポートするRPCは[RPCプロバイダーページ](/jp/rpc-providers)で見つけることができます。
+このプラグインは、Metaplex DAS API仕様をサポートするあらゆるRPCで使用できます – 仕様をサポートするRPCは[RPCプロバイダーページ](/ja/rpc-providers)で見つけることができます。
 
 注意:エンドポイントでDAS APIを「有効化」するためにRPCプロバイダーに連絡する必要がある場合があります。
 
 {% callout title="Metaplex Core DAS API" type="note" %}
-[Metaplex Core](/jp/core)アセットでDASを使用する予定の場合、追加の`@metaplex-foundation/mpl-core-das`パッケージをインストールしてください:
+[Metaplex Core](/ja/core)アセットでDASを使用する予定の場合、追加の`@metaplex-foundation/mpl-core-das`パッケージをインストールしてください:
 {% /callout %}
 
 ## MPL Core用のDAS
 
-[MPL Core](/jp/core)用の[DAS拡張機能](/jp/das-api/core-extension)は、MPL SDKでさらに使用するための正しいタイプを直接返すのに役立ちます。また、コレクションから継承されたアセット内のプラグインを自動的に派生し、[DAS-to-Core型変換のための機能](/jp/das-api/core-extension/convert-das-asset-to-core)を提供します。
+[MPL Core](/ja/core)用の[DAS拡張機能](/ja/das-api/core-extension)は、MPL SDKでさらに使用するための正しいタイプを直接返すのに役立ちます。また、コレクションから継承されたアセット内のプラグインを自動的に派生し、[DAS-to-Core型変換のための機能](/ja/das-api/core-extension/convert-das-asset-to-core)を提供します。
 
 使用するには、まず追加パッケージをインストールしてください:
 

+ 4 - 4
src/pages/ja/das-api/guides/collection-statistics.md

@@ -140,7 +140,7 @@ import { dasApi } from '@metaplex-foundation/digital-asset-standard-api'
 
 ## ヒントとベストプラクティス
 
-1. **[ページネーションを使用](/jp/das-api/guides/pagination)** 大きなコレクションの完全なデータを取得するため
+1. **[ページネーションを使用](/ja/das-api/guides/pagination)** 大きなコレクションの完全なデータを取得するため
 2. **結果をキャッシュ** 頻繁なクエリのパフォーマンスを向上させるため
 3. **エッジケースを処理** メタデータや属性が欠落している場合に対処
 4. **データを正規化** コレクション間での一貫した分析のため
@@ -148,6 +148,6 @@ import { dasApi } from '@metaplex-foundation/digital-asset-standard-api'
 
 ## さらなる学習
 
-- [コレクション内のすべてのトークンを取得](/jp/das-api/guides/get-collection-nfts) - 特定のコレクションからすべてのアセットを取得
-- [圧縮NFTを見つける](/jp/das-api/guides/find-compressed-nfts) - 圧縮NFTを発見して操作
-- [複数の条件でアセットを検索](/jp/das-api/guides/search-by-criteria) - 高度なクエリのために複数のフィルターを組み合わせ
+- [コレクション内のすべてのトークンを取得](/ja/das-api/guides/get-collection-nfts) - 特定のコレクションからすべてのアセットを取得
+- [圧縮NFTを見つける](/ja/das-api/guides/find-compressed-nfts) - 圧縮NFTを発見して操作
+- [複数の条件でアセットを検索](/ja/das-api/guides/search-by-criteria) - 高度なクエリのために複数のフィルターを組み合わせ

+ 4 - 4
src/pages/ja/das-api/guides/find-compressed-nfts.md

@@ -272,12 +272,12 @@ import { dasApi } from "@metaplex-foundation/digital-asset-standard-api"
 
 ## ヒントとベストプラクティス
 
-1. **大きな圧縮NFTコレクションには[ページネーション](/jp/das-api/guides/pagination)を使用**
+1. **大きな圧縮NFTコレクションには[ページネーション](/ja/das-api/guides/pagination)を使用**
 2. **証明が利用できない場合はエラーを適切に処理**
 3. **圧縮NFTメタデータには適切な表示オプションを使用**
 
 ## さらなる学習
 
-- [コレクション内のすべてのトークンを取得](/jp/das-api/guides/get-collection-nfts) - 特定のコレクションからすべてのアセットを取得
-- [オーナー別にNFTを取得](/jp/das-api/guides/get-nfts-by-owner) - ウォレットが所有するすべてのNFTを見つける
-- [複数の条件でアセットを検索](/jp/das-api/guides/search-by-criteria) - 高度なクエリのために複数のフィルターを組み合わせる
+- [コレクション内のすべてのトークンを取得](/ja/das-api/guides/get-collection-nfts) - 特定のコレクションからすべてのアセットを取得
+- [オーナー別にNFTを取得](/ja/das-api/guides/get-nfts-by-owner) - ウォレットが所有するすべてのNFTを見つける
+- [複数の条件でアセットを検索](/ja/das-api/guides/search-by-criteria) - 高度なクエリのために複数のフィルターを組み合わせる

+ 5 - 5
src/pages/ja/das-api/guides/find-token-holders.md

@@ -210,9 +210,9 @@ import { dasApi } from '@metaplex-foundation/digital-asset-standard-api'
 
 ## ヒントとベストプラクティス
 
-1. **[ページネーション](/jp/das-api/guides/pagination)を処理**: 大きなコレクションの場合、すべての結果を取得するために常にページネーションを実装してください。
+1. **[ページネーション](/ja/das-api/guides/pagination)を処理**: 大きなコレクションの場合、すべての結果を取得するために常にページネーションを実装してください。
 
-2. **[表示オプション](/jp/das-api/guides/display-options)を使用**: `showCollectionMetadata`を有効にして追加のコレクション情報を取得してください。
+2. **[表示オプション](/ja/das-api/guides/display-options)を使用**: `showCollectionMetadata`を有効にして追加のコレクション情報を取得してください。
 
 3. **結果をキャッシュ**: NFT保有者データが頻繁に変更されない場合は、パフォーマンス向上のために結果をキャッシュすることを検討してください。
 
@@ -220,6 +220,6 @@ import { dasApi } from '@metaplex-foundation/digital-asset-standard-api'
 
 ## 関連ガイド
 
-- [コレクション内のすべてのトークンを取得](/jp/das-api/guides/get-collection-nfts)
-- [コレクション統計の分析](/jp/das-api/guides/collection-statistics)
-- [アセット転送の追跡](/jp/das-api/guides/track-transfers)
+- [コレクション内のすべてのトークンを取得](/ja/das-api/guides/get-collection-nfts)
+- [コレクション統計の分析](/ja/das-api/guides/collection-statistics)
+- [アセット転送の追跡](/ja/das-api/guides/track-transfers)

+ 5 - 5
src/pages/ja/das-api/guides/get-collection-nfts.md

@@ -78,14 +78,14 @@ const response = await fetch('<ENDPOINT>', {
 
 ## ヒントとベストプラクティス
 
-1. **大きなコレクションには[ページネーション](/jp/das-api/guides/pagination)を使用**してレート制限を回避
+1. **大きなコレクションには[ページネーション](/ja/das-api/guides/pagination)を使用**してレート制限を回避
 2. **可能な場合は結果をキャッシュ**してパフォーマンスを向上
-3. **追加のメタデータを取得するために[表示オプション](/jp/das-api/guides/display-options)を含める**
+3. **追加のメタデータを取得するために[表示オプション](/ja/das-api/guides/display-options)を含める**
 4. **意味のある方法でデータを表示するため結果をソート**
 5. **コレクションアドレスが無効な場合はエラーを適切に処理**
 
 ## 次のステップ
 
-- [クリエイター別にアセットを取得](/jp/das-api/methods/get-assets-by-creator) - 特定のウォレットによって作成されたすべてのトークンを発見
-- [ウォレット内のすべてのトークンを取得](/jp/das-api/guides/get-wallet-tokens) - ウォレットが所有するすべてを確認
-- [複数の条件でアセットを検索](/jp/das-api/guides/search-by-criteria) - 高度なクエリのために複数のフィルターを組み合わせる
+- [クリエイター別にアセットを取得](/ja/das-api/methods/get-assets-by-creator) - 特定のウォレットによって作成されたすべてのトークンを発見
+- [ウォレット内のすべてのトークンを取得](/ja/das-api/guides/get-wallet-tokens) - ウォレットが所有するすべてを確認
+- [複数の条件でアセットを検索](/ja/das-api/guides/search-by-criteria) - 高度なクエリのために複数のフィルターを組み合わせる

+ 6 - 6
src/pages/ja/das-api/guides/get-fungible-assets.md

@@ -263,14 +263,14 @@ console.log(`クリエータートークン: ${creatorTokens.items.length}`)
 
 ## ヒントとベストプラクティス
 
-1. **インターフェースフィルターを使用する**: 詳細については[基準によるAsset検索](/jp/das-api/guides/search-by-criteria)を参照してください。
-2. **Show Fungibleを有効化する**: [表示オプション](/jp/das-api/guides/display-options)に示されているように、display optionsで`showFungible: true`を使用して完全なトークン情報を取得します。
+1. **インターフェースフィルターを使用する**: 詳細については[基準によるAsset検索](/ja/das-api/guides/search-by-criteria)を参照してください。
+2. **Show Fungibleを有効化する**: [表示オプション](/ja/das-api/guides/display-options)に示されているように、display optionsで`showFungible: true`を使用して完全なトークン情報を取得します。
 3. **小数点を考慮する**: トークン量を適切にフォーマットするために`decimals`フィールドを確認してください。
 4. **結果をキャッシュする**: トークン残高は頻繁に変更されますが、トークンメタデータは比較的安定しています。
 
 ## 関連ガイド
 
-- [ウォレット内のすべてのトークンを取得](/jp/das-api/guides/get-wallet-tokens)
-- [オーナー別のNFT取得](/jp/das-api/guides/get-nfts-by-owner)
-- [複数の基準によるAsset検索](/jp/das-api/guides/search-by-criteria)
-- [コレクション統計の分析](/jp/das-api/guides/collection-statistics)
+- [ウォレット内のすべてのトークンを取得](/ja/das-api/guides/get-wallet-tokens)
+- [オーナー別のNFT取得](/ja/das-api/guides/get-nfts-by-owner)
+- [複数の基準によるAsset検索](/ja/das-api/guides/search-by-criteria)
+- [コレクション統計の分析](/ja/das-api/guides/collection-statistics)

+ 5 - 5
src/pages/ja/das-api/guides/get-nfts-by-owner.md

@@ -242,14 +242,14 @@ import { dasApi } from "@metaplex-foundation/digital-asset-standard-api";
 ## ヒントとベストプラクティス
 
 1. **インターフェースフィルタリングを使用する** NFTのみを取得(例: fungibleトークンを除外)
-2. **[ページネーション](/jp/das-api/guides/pagination)を実装する** 多数のNFTを持つウォレット用
+2. **[ページネーション](/ja/das-api/guides/pagination)を実装する** 多数のNFTを持つウォレット用
 3. **結果をキャッシュする** 頻繁なクエリのパフォーマンスを向上
-4. **[表示オプション](/jp/das-api/guides/display-options)を含める** 追加のメタデータを取得
+4. **[表示オプション](/ja/das-api/guides/display-options)を含める** 追加のメタデータを取得
 5. **結果をソートする** 意味のある方法でデータを提示
 6. **コレクション別にフィルタリングする** 特定のNFTタイプに焦点を当てる
 
 ## 関連情報
 
-- [クリエーター別のAsset取得](/jp/das-api/methods/get-assets-by-creator) - 特定のアドレスによって作成されたすべてのトークンを発見
-- [コレクション内のすべてのトークン取得](/jp/das-api/guides/get-collection-nfts) - 特定のコレクションからすべてのassetを取得
-- [複数の基準によるAsset検索](/jp/das-api/guides/search-by-criteria) - 高度なクエリのために複数のフィルターを組み合わせる
+- [クリエーター別のAsset取得](/ja/das-api/methods/get-assets-by-creator) - 特定のアドレスによって作成されたすべてのトークンを発見
+- [コレクション内のすべてのトークン取得](/ja/das-api/guides/get-collection-nfts) - 特定のコレクションからすべてのassetを取得
+- [複数の基準によるAsset検索](/ja/das-api/guides/search-by-criteria) - 高度なクエリのために複数のフィルターを組み合わせる

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels