更新国际化支持:为订阅季节对话框及相关组件添加多语言文本,提升用户体验

This commit is contained in:
jxxghp
2025-04-28 22:17:43 +08:00
parent 7879a75ba8
commit 83cb69b794
4 changed files with 77 additions and 30 deletions
+28 -14
View File
@@ -3,6 +3,10 @@ import api from '@/api'
import { MediaInfo, MediaSeason, NotExistMediaInfo } from '@/api/types' import { MediaInfo, MediaSeason, NotExistMediaInfo } from '@/api/types'
import { PropType } from 'vue' import { PropType } from 'vue'
import NoDataFound from '@/components/NoDataFound.vue' import NoDataFound from '@/components/NoDataFound.vue'
import { useI18n } from 'vue-i18n'
// 国际化
const { t } = useI18n()
// 定义事件 // 定义事件
const emit = defineEmits(['subscribe', 'close']) const emit = defineEmits(['subscribe', 'close'])
@@ -47,15 +51,18 @@ const episodeGroupOptions = computed(() => {
item => { item => {
return { return {
title: item.name, title: item.name,
subtitle: `${item.group_count}${item.episode_count}`, subtitle: `${t('dialog.subscribeSeason.seasonCount', { count: item.group_count })}${t(
'dialog.subscribeSeason.episodeCount',
{ count: item.episode_count },
)}`,
value: item.id, value: item.id,
} }
}, },
) )
// 添加不使用选项 // 添加不使用选项
options.unshift({ options.unshift({
title: '默认', title: t('dialog.subscribeSeason.defaultGroup'),
subtitle: `${seasonInfos.value.length}`, subtitle: t('dialog.subscribeSeason.seasonCount', { count: seasonInfos.value.length }),
value: '', value: '',
}) })
return options return options
@@ -142,11 +149,11 @@ function getExistColor(season: number) {
// 计算存在状态的文本 // 计算存在状态的文本
function getExistText(season: number) { function getExistText(season: number) {
const state = seasonsNotExisted.value[season] const state = seasonsNotExisted.value[season]
if (!state) return '已入库' if (!state) return t('dialog.subscribeSeason.status.exists')
if (state === 1) return '部分缺失' if (state === 1) return t('dialog.subscribeSeason.status.partial')
else if (state === 2) return '缺失' else if (state === 2) return t('dialog.subscribeSeason.status.missing')
else return '已入库' else return t('dialog.subscribeSeason.status.exists')
} }
// 拼装季图片地址 // 拼装季图片地址
@@ -191,7 +198,7 @@ onMounted(async () => {
<VCard> <VCard>
<VDialogCloseBtn @click="emit('close')" /> <VDialogCloseBtn @click="emit('close')" />
<VCardItem> <VCardItem>
<VCardTitle class="pe-10"> 订阅 - {{ props.media?.title }} </VCardTitle> <VCardTitle class="pe-10"> {{ t('dialog.subscribeSeason.title', { title: props.media?.title }) }} </VCardTitle>
</VCardItem> </VCardItem>
<VDivider /> <VDivider />
<VCardText> <VCardText>
@@ -199,7 +206,7 @@ onMounted(async () => {
v-model="episodeGroup" v-model="episodeGroup"
:items="episodeGroupOptions" :items="episodeGroupOptions"
:item-props="episodeGroupItemProps" :item-props="episodeGroupItemProps"
label="选择剧集组" :label="t('dialog.subscribeSeason.selectGroup')"
persistent-hint persistent-hint
/> />
<LoadingBanner v-if="!isRefreshed" class="mt-5" /> <LoadingBanner v-if="!isRefreshed" class="mt-5" />
@@ -222,15 +229,18 @@ onMounted(async () => {
</template> </template>
</VImg> </VImg>
</template> </template>
<VListItemTitle> {{ item.season_number }} </VListItemTitle> <VListItemTitle>
{{ t('dialog.subscribeSeason.seasonNumber', { number: item.season_number }) }}
</VListItemTitle>
<VListItemSubtitle class="mt-1 me-2"> <VListItemSubtitle class="mt-1 me-2">
<VChip v-if="item.vote_average" color="primary" size="small" class="mb-1"> <VChip v-if="item.vote_average" color="primary" size="small" class="mb-1">
<VIcon icon="mdi-star" /> {{ item.vote_average }} <VIcon icon="mdi-star" /> {{ t('dialog.subscribeSeason.voteAverage', { score: item.vote_average }) }}
</VChip> </VChip>
{{ getYear(item.air_date || '') }} {{ item.episode_count }} {{ getYear(item.air_date || '') }}
{{ t('dialog.subscribeSeason.episodeCount', { count: item.episode_count }) }}
</VListItemSubtitle> </VListItemSubtitle>
<VListItemSubtitle> <VListItemSubtitle>
{{ media?.title }} {{ item.season_number }} 季于 {{ formatAirDate(item.air_date || '') }} 首播 {{ t('dialog.subscribeSeason.airDate', { date: formatAirDate(item.air_date || '') }) }}
</VListItemSubtitle> </VListItemSubtitle>
<VListItemSubtitle> <VListItemSubtitle>
<VChip <VChip
@@ -254,7 +264,11 @@ onMounted(async () => {
</VCardText> </VCardText>
<div class="my-2 text-center"> <div class="my-2 text-center">
<VBtn :disabled="seasonsSelected.length === 0" width="30%" @click="subscribeSeasons"> <VBtn :disabled="seasonsSelected.length === 0" width="30%" @click="subscribeSeasons">
{{ seasonsSelected.length === 0 ? '请选择订阅季' : '提交订阅' }} {{
seasonsSelected.length === 0
? t('dialog.subscribeSeason.selectSeasons')
: t('dialog.subscribeSeason.submit')
}}
</VBtn> </VBtn>
</div> </div>
</VCard> </VCard>
+17 -6
View File
@@ -1116,6 +1116,23 @@ export default {
progress: { progress: {
processing: 'Processing', processing: 'Processing',
}, },
subscribeSeason: {
title: 'Subscribe - {title}',
selectGroup: 'Select Episode Group',
defaultGroup: 'Default',
seasonCount: '{count} Seasons',
episodeCount: '{count} Episodes',
seasonNumber: 'Season {number}',
airDate: 'First aired on {date}',
voteAverage: '{score}',
status: {
exists: 'Exists',
partial: 'Partially Missing',
missing: 'Missing',
},
submit: 'Submit Subscription',
selectSeasons: 'Please select seasons to subscribe',
},
userAddEdit: { userAddEdit: {
add: 'Add User', add: 'Add User',
edit: 'Edit User', edit: 'Edit User',
@@ -1536,12 +1553,6 @@ export default {
season: 'Season {season}', season: 'Season {season}',
noData: 'No completed subscriptions', noData: 'No completed subscriptions',
}, },
subscribeSeason: {
title: 'Select Season',
seasonTitle: 'Season {number}',
close: 'Close',
confirm: 'Confirm',
},
siteUserData: { siteUserData: {
title: 'Site User Data', title: 'Site User Data',
updateTime: 'Update Time', updateTime: 'Update Time',
+15 -4
View File
@@ -1514,10 +1514,21 @@ export default {
noData: '没有已完成的订阅', noData: '没有已完成的订阅',
}, },
subscribeSeason: { subscribeSeason: {
title: '选择季', title: '订阅 - {title}',
seasonTitle: '第 {number} 季', selectGroup: '选择剧集组',
close: '关闭', defaultGroup: '默认',
confirm: '确认', seasonCount: '{count} 季',
episodeCount: '{count} 集',
seasonNumber: '第 {number} 季',
airDate: '首播于 {date}',
voteAverage: '{score}',
status: {
exists: '已入库',
partial: '部分缺失',
missing: '缺失',
},
submit: '提交订阅',
selectSeasons: '请选择订阅季',
}, },
siteUserData: { siteUserData: {
title: '站点用户数据', title: '站点用户数据',
+17 -6
View File
@@ -1092,6 +1092,23 @@ export default {
progress: { progress: {
processing: '處理中', processing: '處理中',
}, },
subscribeSeason: {
title: '訂閱 - {title}',
selectGroup: '選擇劇集組',
defaultGroup: '默認',
seasonCount: '{count} 季',
episodeCount: '{count} 集',
seasonNumber: '第 {number} 季',
airDate: '首播於 {date}',
voteAverage: '{score}',
status: {
exists: '已入庫',
partial: '部分缺失',
missing: '缺失',
},
submit: '提交訂閱',
selectSeasons: '請選擇訂閱季',
},
userAddEdit: { userAddEdit: {
add: '添加用戶', add: '添加用戶',
edit: '編輯用戶', edit: '編輯用戶',
@@ -1510,12 +1527,6 @@ export default {
season: '第 {season} 季', season: '第 {season} 季',
noData: '沒有已完成的訂閱', noData: '沒有已完成的訂閱',
}, },
subscribeSeason: {
title: '選擇季',
seasonTitle: '第 {number} 季',
close: '關閉',
confirm: '確認',
},
siteUserData: { siteUserData: {
title: '站點用戶數據', title: '站點用戶數據',
updateTime: '更新時間', updateTime: '更新時間',