digitallItem语言适配

This commit is contained in:
X1627315083@163.com
2026-05-26 10:19:01 +08:00
parent ab556a17e7
commit 0e28f089dc
10 changed files with 108 additions and 29 deletions

View File

@@ -58,7 +58,7 @@ const {} = toRefs(data);
v-model="checkAll" v-model="checkAll"
@change="handleCheckAllChange" @change="handleCheckAllChange"
> >
All {{ $t('checked.All') }}
</el-checkbox> </el-checkbox>
</div> </div>
<el-checkbox-group v-model="checkList" @change="handleChange"> <el-checkbox-group v-model="checkList" @change="handleChange">

View File

@@ -213,5 +213,43 @@ export default {
TermsOfUse: 'Terms of Use', TermsOfUse: 'Terms of Use',
Disclaimer: 'Disclaimer', Disclaimer: 'Disclaimer',
SiteMap: 'Site Map', SiteMap: 'Site Map',
},
brand:{
title: 'Brand',
description: "Every brand, every story — discover who's behind the collections.",
search: 'Search brand',
noFound: 'Brand No Found',
noFoundTip: 'Try using another keywords.',
searchHistory: 'Searching History',
brandItem:{
viewProfile: 'View Profile',
}
},
brandDetail:{
addShoppingTip: 'Please log in first.',
merchantInfo: {
Contact: 'Contact',
About: 'About',
},
All: 'All',
},
digitalItem:{
BestSelling: 'Best Selling',
Price: 'Price: Low to High',
NewestFirst: 'Newest First',
title: 'Digital Item',
info: 'Virtual fashion creations collected in your personal archive',
sortBy: 'Sort By',
noData: 'Nothing in Digital Item',
noDataTip: 'Try adjusting your filters or refreshing the page.',
MerchantInfo: {
Filters: 'Filters',
Clear: 'Clear',
Categories: 'Categories',
Gender: 'Gender',
}
},
checked: {
All: 'All',
} }
} }

View File

@@ -213,5 +213,43 @@ export default {
TermsOfUse: '条款与条件', TermsOfUse: '条款与条件',
Disclaimer: '免责声明', Disclaimer: '免责声明',
SiteMap: '地图', SiteMap: '地图',
},
brand:{
title: "品牌",
description: "每一个品牌,每一个故事 — 发现系列作品背后的缔造者。",
search: "搜索品牌",
noFound: "未找到品牌",
noFoundTip: "请尝试使用其他关键词。",
searchHistory: "搜索历史",
brandItem: {
viewProfile: "查看简介"
}
},
brandDetail:{
addShoppingTip: "请先登录。",
merchantInfo: {
Contact: "联系方式",
About: "关于我们"
},
All: "全部"
},
digitalItem: {
BestSelling: "畅销优先",
Price: "价格:从低到高",
NewestFirst: "最新优先",
title: "数字藏品",
info: "收藏于个人档案中的虚拟时装作品",
sortBy: "排序方式",
noData: "暂无数字藏品",
noDataTip: "请尝试调整筛选条件或刷新页面。",
MerchantInfo: {
Filters: "筛选",
Clear: "清空",
Categories: "分类",
Gender: "适用性别"
}
},
checked: {
All: "全部"
} }
} }

View File

@@ -33,7 +33,7 @@ const {} = toRefs(data);
{{ item.ownerName }} | {{ item.ownerName }} |
{{ item?.listingTotal || 0 }} Collections {{ item?.listingTotal || 0 }} Collections
</div> </div>
<div class="view-profile" @click="viewProfile(item)">View Profile</div> <div class="view-profile" @click="viewProfile(item)">{{ $t('brand.brandItem.viewProfile') }}</div>
</div> </div>
</div> </div>
<div class="right"> <div class="right">

View File

@@ -122,13 +122,13 @@ const {} = toRefs(data);
<div class="header-img" :class="{'active': searchBrand.length > 0}"> <div class="header-img" :class="{'active': searchBrand.length > 0}">
<img src="@/assets/images/brand/brandBg.png" alt=""> <img src="@/assets/images/brand/brandBg.png" alt="">
<div class="text-box"> <div class="text-box">
<div class="title">Brand</div> <div class="title">{{ $t('brand.title') }}</div>
<span>Every brand, every story discover who's behind the collections.</span> <span>{{ $t('brand.description') }}</span>
</div> </div>
</div> </div>
<div class="content"> <div class="content">
<div class="input"> <div class="input">
<input type="text" v-model="searchBrand" @input="changeSearchBrand" placeholder="Search brand"> <input type="text" v-model="searchBrand" @input="changeSearchBrand" :placeholder="$t('brand.search')">
<div class="icon"> <div class="icon">
<SvgIcon name="brand-search" size="32" /> <SvgIcon name="brand-search" size="32" />
</div> </div>
@@ -145,8 +145,8 @@ const {} = toRefs(data);
<sc-list-null <sc-list-null
nullImage="brand" nullImage="brand"
:showButton="false" :showButton="false"
title="Brand No Found" :title="$t('brand.noFound')"
tip="Try using another keywords." :tip="$t('brand.noFoundTip')"
/> />
</div> </div>
</div> </div>
@@ -155,7 +155,7 @@ const {} = toRefs(data);
<div class="icon"> <div class="icon">
<SvgIcon name="brand-time" size="20" /> <SvgIcon name="brand-time" size="20" />
</div> </div>
<span>Searching History</span> <span>{{ $t('brand.searchHistory') }}</span>
</div> </div>
<div class="history"> <div class="history">
<div v-for="item in searchHistory" :key="item" @click.stop="setSearchHistory(item)" class="item"> <div v-for="item in searchHistory" :key="item" @click.stop="setSearchHistory(item)" class="item">

View File

@@ -73,9 +73,9 @@ defineExpose({})
Items Items
</div> </div>
<div class="menu"> <div class="menu">
<div :class="{'active': type === 'all'}" @click="setType('all')">All</div> <div :class="{'active': type === 'all'}" @click="setType('all')">{{ $t('brandDetail.All') }}</div>
<div :class="{'active': type === 'male'}" @click="setType('male')">Male</div> <div :class="{'active': type === 'male'}" @click="setType('male')">{{ $t('Wardrobe.assets.genders.male') }}</div>
<div :class="{'active': type === 'female'}" @click="setType('female')">Female</div> <div :class="{'active': type === 'female'}" @click="setType('female')">{{ $t('Wardrobe.assets.genders.female') }}</div>
</div> </div>
</div> </div>
<div class="list"> <div class="list">

View File

@@ -8,6 +8,7 @@ import { ElMessage } from 'element-plus'
import { getDesignerDetail } from '@/api/brand' import { getDesignerDetail } from '@/api/brand'
import { AddShoppingCart } from '@/api/shoppingCart' import { AddShoppingCart } from '@/api/shoppingCart'
import brandDetailBg from '@/assets/images/brand/brandDetailBg.png' import brandDetailBg from '@/assets/images/brand/brandDetailBg.png'
import { useI18n } from 'vue-i18n'
//const props = defineProps({ //const props = defineProps({
//}) //})
@@ -15,6 +16,7 @@ import brandDetailBg from '@/assets/images/brand/brandDetailBg.png'
//]) //])
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
const { t, locale } = useI18n()
const designerDetail = ref({ const designerDetail = ref({
avatar: '', avatar: '',
@@ -28,7 +30,7 @@ const designerDetail = ref({
}) })
const addShopping = (item) => { const addShopping = (item) => {
if(!item.price) return ElMessage.warning('Please log in first.') if(!item.price) return ElMessage.warning(t('brandDetail.addShoppingTip'))
AddShoppingCart({listingIds:[item.id]}).then((res)=>{ AddShoppingCart({listingIds:[item.id]}).then((res)=>{
item.shopName = designerDetail.value.shopName item.shopName = designerDetail.value.shopName
myEvent.emit('addShopping', item) myEvent.emit('addShopping', item)

View File

@@ -39,7 +39,7 @@ const {} = toRefs(data);
<div class="title">{{ designerDetail.shopName }}</div> <div class="title">{{ designerDetail.shopName }}</div>
</div> </div>
<div class="contact"> <div class="contact">
<div class="title">Contact</div> <div class="title">{{ $t('brandDetail.merchantInfo.Contact') }}</div>
<div class="email label"> <div class="email label">
<div class="icon"> <div class="icon">
<svg-icon name="brand-email" size="24" /> <svg-icon name="brand-email" size="24" />
@@ -60,7 +60,7 @@ const {} = toRefs(data);
</div> </div>
</div> </div>
<div class="about"> <div class="about">
<div class="title">About</div> <div class="title">{{ $t('brandDetail.merchantInfo.About') }}</div>
<div class="content"> <div class="content">
{{ designerDetail.description }} {{ designerDetail.description }}
</div> </div>

View File

@@ -4,7 +4,7 @@ import CommodityList from "./commodity-list.vue";
import MerchantInfo from "./merchant-info.vue"; import MerchantInfo from "./merchant-info.vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import scListNull from '@/views/shoppingCart/sc-list-null.vue' import scListNull from '@/views/shoppingCart/sc-list-null.vue'
import { getListingMallListApi } from '@/api/listing' import { useI18n } from 'vue-i18n'
// 定义组件名称 // 定义组件名称
defineOptions({ defineOptions({
@@ -14,6 +14,7 @@ defineOptions({
//}) //})
//const emit = defineEmits([ //const emit = defineEmits([
//]) //])
const { t } = useI18n()
const categories = ref(['all']) const categories = ref(['all'])
const gender = ref(['all']) const gender = ref(['all'])
const digitalItemRef = ref(null) const digitalItemRef = ref(null)
@@ -24,13 +25,13 @@ const commodityListRef = ref(null)
const searechTypeList = ref([ const searechTypeList = ref([
{ {
value:'salesVolume', value:'salesVolume',
label:'Best Selling' label:t('digitalItem.BestSelling')
},{ },{
value:'price', value:'price',
label:'Price: Low to High' label:t('digitalItem.Price')
},{ },{
value:'updateTime', value:'updateTime',
label:'Newest First' label:t('digitalItem.NewestFirst')
}, },
]) ])
@@ -64,15 +65,15 @@ defineExpose({})
<div class="header-img"> <div class="header-img">
<img src="@/assets/images/digitalItem/digital_item_banner.png" alt=""> <img src="@/assets/images/digitalItem/digital_item_banner.png" alt="">
<div class="text"> <div class="text">
<div class="title">Digital Item</div> <div class="title">{{ $t('digitalItem.title') }}</div>
<p class="info">Virtual fashion creations collected in your personal archive</p> <p class="info">{{ $t('digitalItem.info') }}</p>
</div> </div>
</div> </div>
<div class="filters"> <div class="filters">
<div class="filter-item"> <div class="filter-item">
<el-select v-model="searechType" @change="updateSort" placeholder="Sort By" :teleported="false"> <el-select v-model="searechType" @change="updateSort" :placeholder="$t('digitalItem.sortBy')" :teleported="false">
<template #label="{ label }"> <template #label="{ label }">
<span class="header-label">Sort By</span> <span class="header-label">{{ $t('digitalItem.sortBy') }}</span>
<span class="header-value">{{ label }}</span> <span class="header-value">{{ label }}</span>
</template> </template>
<el-option <el-option
@@ -103,8 +104,8 @@ defineExpose({})
<sc-list-null <sc-list-null
nullImage="shopping-cart" nullImage="shopping-cart"
:showButton="false" :showButton="false"
title="Nothing in Digital Item" :title="$t('digitalItem.noData')"
tip="Try adjusting your filters or refreshing the page." :tip="$t('digitalItem.noDataTip')"
/> />
</div> </div>

View File

@@ -36,15 +36,15 @@ defineExpose({})
<template> <template>
<div class="filters"> <div class="filters">
<div class="title"> <div class="title">
<div class="left">Filters</div> <div class="left">{{ $t('digitalItem.MerchantInfo.Filters') }}</div>
<div class="right" @click="clearFilters">Clear</div> <div class="right" @click="clearFilters">{{ $t('digitalItem.MerchantInfo.Clear') }}</div>
</div> </div>
<div class="categories">Categories</div> <div class="categories">{{ $t('digitalItem.MerchantInfo.Categories') }}</div>
<div class="line"></div> <div class="line"></div>
<div class="multiple"> <div class="multiple">
<checked :list="categoriesList" @change="handleChange" v-model:selected="categories" /> <checked :list="categoriesList" @change="handleChange" v-model:selected="categories" />
</div> </div>
<div class="categories">Gender</div> <div class="categories">{{ $t('digitalItem.MerchantInfo.Gender') }}</div>
<div class="line"></div> <div class="line"></div>
<div class="multiple"> <div class="multiple">
<checked :list="genderList" @change="handleChange" v-model:selected="gender" /> <checked :list="genderList" @change="handleChange" v-model:selected="gender" />