feat(demo-vue): 全站 i18n 抽文案、中英文资源与页面接入
- 引入 vue-i18n,集中维护 zh-CN / en-US 文案与产品 catalog、长文 HTML - 前台与后台列表/弹窗/校验/删除确认等改为 t(),顶栏与新闻/行业列表与详情页多语言 - 修正 Industry 等页面文首误粘贴;请求头 Accept-Language 与 Element 语言随 locale 切换
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user