i18n.js 2.35 KB
// 国际化配置文件
const messages = {
  zh_CN: {
    heatMap: {
      loading: '加载中...',
      loadingForbidClick: '加载中...',
      noFloorPlan: '未找到门店平面图',
      noHeatData: '无热力数据',
      getHeatMapDataFailed: '获取热力图数据失败',
      loadSuccess: '加载成功'
    },
    areaHeat: {
      getAreaDataFailed: '获取区域数据失败'
    }
  },
  zh_TW: {
    heatMap: {
      loading: '載入中...',
      loadingForbidClick: '載入中...',
      noFloorPlan: '未找到門店平面圖',
      noHeatData: '無熱力數據',
      getHeatMapDataFailed: '獲取熱力圖數據失敗',
      loadSuccess: '載入成功'
    },
    areaHeat: {
      getAreaDataFailed: '獲取區域數據失敗'
    }
  },
  en_US: {
    heatMap: {
      loading: 'Loading...',
      loadingForbidClick: 'Loading...',
      noFloorPlan: 'Store floor plan not found',
      noHeatData: 'No heat map data',
      getHeatMapDataFailed: 'Failed to get heat map data',
      loadSuccess: 'Load successful'
    },
    areaHeat: {
      getAreaDataFailed: 'Failed to get area data'
    }
  },
  ja_JP: {
    heatMap: {
      loading: '読み込み中...',
      loadingForbidClick: '読み込み中...',
      noFloorPlan: '店舗の平面図が見つかりません',
      noHeatData: '熱マップデータがありません',
      getHeatMapDataFailed: '熱マップデータの取得に失敗しました',
      loadSuccess: '読み込み成功'
    },
    areaHeat: {
      getAreaDataFailed: 'エリアデータの取得に失敗しました'
    }
  }
};

// 获取语言文本
export function getI18nText(lang, key) {
  // 默认使用中文
  const currentLang = lang || 'zh_CN';
  
  // 分割key,例如 'heatMap.loading' => ['heatMap', 'loading']
  const keys = key.split('.');
  
  // 获取对应语言的文本
  let text = messages[currentLang];
  for (const k of keys) {
    if (text && text[k]) {
      text = text[k];
    } else {
      // 如果找不到对应的文本,返回中文默认值
      let defaultText = messages['zh_CN'];
      for (const dk of keys) {
        if (defaultText && defaultText[dk]) {
          defaultText = defaultText[dk];
        } else {
          return key; // 如果默认值也找不到,返回key本身
        }
      }
      return defaultText;
    }
  }
  
  return text;
}

export default messages;