feat(demo-vue): 全站 i18n 抽文案、中英文资源与页面接入

- 引入 vue-i18n,集中维护 zh-CN / en-US 文案与产品 catalog、长文 HTML
- 前台与后台列表/弹窗/校验/删除确认等改为 t(),顶栏与新闻/行业列表与详情页多语言
- 修正 Industry 等页面文首误粘贴;请求头 Accept-Language 与 Element 语言随 locale 切换
This commit is contained in:
王文昊
2026-04-27 13:48:42 +08:00
parent 8b8ae61f4b
commit a74f3e9401
57 changed files with 3703 additions and 3235 deletions

View File

@@ -1,5 +1,3 @@
NEW_FILE_CODE
<template>
<div class="industry-detail-page">
<HeaderComponent />
@@ -8,19 +6,19 @@ NEW_FILE_CODE
<section class="detail-banner">
<div class="banner-overlay">
<div class="banner-wrapper">
<h1 class="banner-title">行业动态详情</h1>
<p class="banner-subtitle">Industry News Detail</p>
<h1 class="banner-title">{{ t('industry.detailTitle') }}</h1>
<p class="banner-subtitle">{{ t('industry.detailTitleSub') }}</p>
</div>
</div>
</section>
<section class="breadcrumb-section">
<div class="breadcrumb-wrapper">
<span class="breadcrumb-item" @click="goHome">首页</span>
<span class="breadcrumb-item" @click="goHome">{{ t('nav.home') }}</span>
<span class="breadcrumb-separator">/</span>
<span class="breadcrumb-item" @click="goBack">行业动态</span>
<span class="breadcrumb-item" @click="goBack">{{ t('industry.listBanner') }}</span>
<span class="breadcrumb-separator">/</span>
<span class="breadcrumb-item active">详情</span>
<span class="breadcrumb-item active">{{ t('industry.breadcrumbDetail') }}</span>
</div>
</section>
@@ -31,11 +29,11 @@ NEW_FILE_CODE
<div class="article-meta">
<span class="meta-item">
<el-icon><Calendar /></el-icon>
发布时间{{ formatDate(industryDetail.publishDate) }}
{{ t('industry.publicTime') }}{{ formatDate(industryDetail.publishDate) }}
</span>
<span class="meta-item">
<el-icon><View /></el-icon>
访问量{{ industryDetail.views }}
{{ t('common.viewsLabel') }}{{ industryDetail.views }}
</span>
</div>
<div class="article-body" v-html="industryDetail.content"></div>
@@ -44,7 +42,7 @@ NEW_FILE_CODE
<div class="back-button">
<el-button type="primary" @click="goBack">
<el-icon><Back /></el-icon>
返回列表
{{ t('industry.returnList') }}
</el-button>
</div>
</div>
@@ -58,6 +56,7 @@ NEW_FILE_CODE
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { useRouter, useRoute } from 'vue-router'
import { useI18n } from 'vue-i18n'
import { Calendar, View, Back } from '@element-plus/icons-vue'
import HeaderComponent from '@/components/HeaderComponent.vue'
import FooterComponent from '@/components/FooterComponent.vue'
@@ -66,6 +65,7 @@ import { industryApi } from '@/api/industry-api.ts'
const router = useRouter()
const route = useRoute()
const { t } = useI18n()
// 行业动态详情数据
const industryDetail = ref<any>({
@@ -94,7 +94,7 @@ const getIndustryDetail = async (id: any) => {
industryDetail.value = response.data.list[0]
}
} catch (error: any) {
console.error('获取行业动态详情失败:', error)
console.error(t('industry.fetchDetailFail'), error)
} finally {
loading.value = false
}