digitallItem语言适配
This commit is contained in:
@@ -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">
|
||||||
|
|||||||
@@ -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',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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: "全部"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|||||||
Reference in New Issue
Block a user