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-page">
<HeaderComponent />
@@ -8,17 +6,17 @@ NEW_FILE_CODE
<section class="industry-banner">
<div class="banner-overlay">
<div class="banner-wrapper">
<h1 class="banner-title">行业动态</h1>
<p class="banner-subtitle">Industry News</p>
<h1 class="banner-title">{{ t('industry.listBanner') }}</h1>
<p class="banner-subtitle">{{ t('industry.listBannerSub') }}</p>
</div>
</div>
</section>
<section class="breadcrumb-section">
<div class="breadcrumb-wrapper">
<span class="breadcrumb-item">首页</span>
<span class="breadcrumb-item">{{ t('nav.home') }}</span>
<span class="breadcrumb-separator">/</span>
<span class="breadcrumb-item active">行业动态</span>
<span class="breadcrumb-item active">{{ t('nav.industryNews') }}</span>
</div>
</section>
@@ -30,7 +28,7 @@ NEW_FILE_CODE
<div class="industry-meta">
<span class="meta-item">
<el-icon><View /></el-icon>
访问量{{ item.views }}
{{ t('common.viewsLabel') }}{{ item.views }}
</span>
</div>
</div>
@@ -49,10 +47,10 @@ NEW_FILE_CODE
<button class="page-btn" :disabled="currentPage === totalPages" @click="nextPage">
<el-icon><ArrowRight /></el-icon>
</button>
<span class="jump-text">跳往</span>
<span class="jump-text">{{ t('common.goTo') }}</span>
<input type="number" class="page-input" v-model.number="jumpPage" @keyup.enter="jumpToPage" min="1" :max="totalPages" />
<span class="jump-text">前往</span>
<span class="page-info"></span>
<span class="jump-text">{{ t('common.toPage') }}</span>
<span class="page-info">{{ t('common.pageUnit') }}</span>
</div>
</div>
</div>
@@ -66,12 +64,14 @@ NEW_FILE_CODE
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import { useI18n } from 'vue-i18n'
import { View, ArrowLeft, ArrowRight } from '@element-plus/icons-vue'
import HeaderComponent from '@/components/HeaderComponent.vue'
import FooterComponent from '@/components/FooterComponent.vue'
import { post } from '@/utils/request'
const router = useRouter()
const { t } = useI18n()
// 行业动态列表数据
const industryList = ref<any[]>([])
@@ -124,7 +124,7 @@ const getIndustryList = async (page: number = 1) => {
// 设置总页数
totalPages.value = Math.ceil(response.data.total / pageSize)
} catch (error: any) {
console.error('获取行业动态列表失败:', error)
console.error(t('industry.fetchFail'), error)
industryList.value = []
}
}