← back to Handbag Auth Nextjs

src/lib/translateJapanese.ts

137 lines

// Translate Japanese luxury brand and model names to English

interface Translation {
  [key: string]: string
}

// Common luxury brand translations
const BRAND_TRANSLATIONS: Translation = {
  'エルメス': 'Hermès',
  'シャネル': 'Chanel',
  'ルイヴィトン': 'Louis Vuitton',
  'ルイ・ヴィトン': 'Louis Vuitton',
  'ディオール': 'Dior',
  'グッチ': 'Gucci',
  'プラダ': 'Prada',
  'ボッテガヴェネタ': 'Bottega Veneta',
  'ボッテガ・ヴェネタ': 'Bottega Veneta',
  'セリーヌ': 'Celine',
  'バレンシアガ': 'Balenciaga',
  'サンローラン': 'Saint Laurent',
  'イヴサンローラン': 'Yves Saint Laurent',
  'フェンディ': 'Fendi',
  'ロエベ': 'Loewe',
  'バーバリー': 'Burberry',
  'クロエ': 'Chloé',
  'ジバンシィ': 'Givenchy',
  'ジバンシー': 'Givenchy'
}

// Common model name translations
const MODEL_TRANSLATIONS: Translation = {
  // Hermès
  'バーキン': 'Birkin',
  'ケリー': 'Kelly',
  'コンスタンス': 'Constance',
  'ボリード': 'Bolide',
  'エブリン': 'Evelyne',
  'ガーデンパーティ': 'Garden Party',
  'ピコタン': 'Picotin',

  // Chanel
  'マトラッセ': 'Classic Flap',
  'チェーンショルダー': 'Chain Shoulder',
  'ボーイシャネル': 'Boy Chanel',
  'ボーイ': 'Boy',
  'タイムレスクラシック': 'Timeless Classic',

  // Louis Vuitton
  'スピーディ': 'Speedy',
  'ネヴァーフル': 'Neverfull',
  'アルマ': 'Alma',
  'カプシーヌ': 'Capucines',
  'ツイスト': 'Twist',
  'ポシェット': 'Pochette',

  // Dior
  'レディディオール': 'Lady Dior',
  'サドル': 'Saddle',

  // Gucci
  'ディオニュソス': 'Dionysus',
  'マーモント': 'Marmont',
  'ジャッキー': 'Jackie',
  'バンブー': 'Bamboo',

  // Bottega Veneta
  'カセット': 'Cassette',
  'ジョディ': 'Jodie',
  'イントレチャート': 'Intrecciato',

  // Common words
  'ショルダーバッグ': 'Shoulder Bag',
  'ハンドバッグ': 'Handbag',
  'トートバッグ': 'Tote Bag',
  'クラッチバッグ': 'Clutch Bag',
  '財布': 'Wallet',
  '長財布': 'Long Wallet',
  '二つ折り財布': 'Bifold Wallet',
  'ポーチ': 'Pouch',

  // Materials
  'レザー': 'Leather',
  'カーフレザー': 'Calfskin',
  'ラムレザー': 'Lambskin',
  'キャンバス': 'Canvas',
  'エナメル': 'Patent Leather',
  'クロコダイル': 'Crocodile',
  'アリゲーター': 'Alligator',
  'リザード': 'Lizard',
  'スエード': 'Suede',

  // Sizes
  '25cm': '25cm',
  '30cm': '30cm',
  '35cm': '35cm',
  '40cm': '40cm',
  'ミニ': 'Mini',
  'スモール': 'Small',
  'ミディアム': 'Medium',
  'ラージ': 'Large'
}

/**
 * Translate Japanese text to English for luxury brands/models
 */
export function translateJapanese(text: string): string {
  if (!text) return text

  let translated = text

  // Replace brand names
  for (const [jp, en] of Object.entries(BRAND_TRANSLATIONS)) {
    translated = translated.replace(new RegExp(jp, 'g'), en)
  }

  // Replace model names
  for (const [jp, en] of Object.entries(MODEL_TRANSLATIONS)) {
    translated = translated.replace(new RegExp(jp, 'g'), en)
  }

  return translated.trim()
}

/**
 * Translate brand name specifically
 */
export function translateBrand(brand: string): string {
  return BRAND_TRANSLATIONS[brand] || brand
}

/**
 * Translate model name specifically
 */
export function translateModel(model: string): string {
  return translateJapanese(model)
}