2026-04-13 15:15:14 +08:00
|
|
|
<script setup lang="ts">
|
|
|
|
|
import { computed } from 'vue'
|
|
|
|
|
import { useI18n } from 'vue-i18n'
|
|
|
|
|
import { NSelect } from 'naive-ui'
|
|
|
|
|
|
2026-04-15 16:36:04 +08:00
|
|
|
const { locale, availableLocales, t } = useI18n()
|
2026-04-13 15:15:14 +08:00
|
|
|
|
|
|
|
|
const options = computed(() =>
|
|
|
|
|
availableLocales.map(loc => ({
|
2026-04-15 16:36:04 +08:00
|
|
|
label: loc === 'zh' ? t('language.zh') : t('language.en'),
|
2026-04-13 15:15:14 +08:00
|
|
|
value: loc,
|
|
|
|
|
})),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
function handleChange(val: string) {
|
|
|
|
|
locale.value = val
|
|
|
|
|
localStorage.setItem('hermes_locale', val)
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<template>
|
|
|
|
|
<NSelect
|
|
|
|
|
:value="locale"
|
|
|
|
|
:options="options"
|
|
|
|
|
size="tiny"
|
|
|
|
|
:consistent-menu-width="false"
|
2026-04-15 09:12:54 +08:00
|
|
|
class="input-sm"
|
2026-04-13 15:15:14 +08:00
|
|
|
@update:value="handleChange"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|