mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-05 19:20:12 +08:00
feat(i18n): implement language selector
This commit is contained in:
1 parent
a3c69764c8
commit
0fddc05443
4 files changed
+47
-3
No files matched your search
@@ -0,0 +1,26 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
import { setLocale, type SupportedLocale } from '../i18n'
|
||||||
|
|
||||||
|
const { locale } = useI18n({ useScope: 'global' })
|
||||||
|
|
||||||
|
function changeLanguage(event: Event) {
|
||||||
|
const selectedLocale = (event.target as HTMLSelectElement)
|
||||||
|
.value as SupportedLocale
|
||||||
|
|
||||||
|
setLocale(selectedLocale)
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<select
|
||||||
|
:value="locale"
|
||||||
|
class="bg-bg-secondary px-3 py-2 font-mono text-sm text-text shadow-md outline-none"
|
||||||
|
aria-label="Language"
|
||||||
|
@change="changeLanguage"
|
||||||
|
style="font-size: 2vh"
|
||||||
|
>
|
||||||
|
<option value="en">English</option>
|
||||||
|
<option value="zh-TW">繁體中文</option>
|
||||||
|
</select>
|
||||||
|
</template>
|
||||||
@@ -1,6 +1,11 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { defineProps, ref } from 'vue'
|
import { defineProps, ref } from 'vue'
|
||||||
|
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
import LanguageSelector from '../LanguageSelector.vue'
|
||||||
|
|
||||||
|
const { t } = useI18n()
|
||||||
|
|
||||||
defineProps({
|
defineProps({
|
||||||
title: {
|
title: {
|
||||||
type: String,
|
type: String,
|
||||||
@@ -19,9 +24,10 @@ const toggleMenu = () => {
|
|||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
class="w-full top-0 px-5 fixed flex flex-row flex-wrap bg-bg-secondary justify-between items-center sm:justify-between"
|
class="w-full top-0 px-2 fixed flex flex-row flex-wrap bg-bg-secondary justify-between items-center sm:justify-between"
|
||||||
>
|
>
|
||||||
<div class="flex flex-row items-center gap-3" :class="{ hidden: menuOpen }">
|
<div class="flex flex-row items-center gap-3" :class="{ hidden: menuOpen }">
|
||||||
|
<LanguageSelector />
|
||||||
<img src="../../img/icon_totem.svg" class="h-8 justify-self-start" />
|
<img src="../../img/icon_totem.svg" class="h-8 justify-self-start" />
|
||||||
<RouterLink
|
<RouterLink
|
||||||
to="/"
|
to="/"
|
||||||
|
|||||||
@@ -1 +1,7 @@
|
|||||||
{}
|
{
|
||||||
|
"language": {
|
||||||
|
"change": "Change language",
|
||||||
|
"traditionalChinese": "繁體中文",
|
||||||
|
"english": "English"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1 +1,7 @@
|
|||||||
{}
|
{
|
||||||
|
"language": {
|
||||||
|
"change": "切換語言",
|
||||||
|
"traditionalChinese": "繁體中文",
|
||||||
|
"english": "English"
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user