File tree Expand file tree Collapse file tree 1 file changed +36
-4
lines changed
Expand file tree Collapse file tree 1 file changed +36
-4
lines changed Original file line number Diff line number Diff line change 11<script setup>
2+ import {
3+ DropdownMenu ,
4+ DropdownMenuContent ,
5+ DropdownMenuItem ,
6+ DropdownMenuTrigger ,
7+ } from ' @/components/ui/dropdown-menu'
8+
29const { locale , locales } = useI18n ()
310const switchLocalePath = useSwitchLocalePath ()
411
512const availableLocales = computed (() => {
6- return locales .value .filter (i => i .code !== locale .value )
13+ return locales .value
14+ })
15+
16+ const getFlagEmoji = function (code ) {
17+ const flags = {
18+ en: ' 🇬🇧' ,
19+ fr: ' 🇫🇷' ,
20+ }
21+ return flags[code] || ' 🏳️'
22+ }
23+
24+ const getCurrentLocaleName = computed (() => {
25+ const current = locales .value .find (l => l .code === locale .value )
26+ return current ? ` ${ getFlagEmoji (current .code )} ${ current .name } ` : ' '
727})
828 </script >
929
1030<template >
11- <NuxtLink v-for =" locale in availableLocales" :key =" locale.code" :to =" switchLocalePath(locale.code)" >
12- {{ locale.name }}
13- </NuxtLink >
31+ <DropdownMenu >
32+ <DropdownMenuTrigger class =" outline-none" >
33+ <span class =" cursor-pointer border border-gray-300 rounded px-2 py-1 dark:border-gray-600 hover:bg-gray-100 dark:hover:bg-gray-800" >{{ getCurrentLocaleName }}</span >
34+ </DropdownMenuTrigger >
35+ <DropdownMenuContent >
36+ <DropdownMenuItem
37+ v-for =" loc in availableLocales"
38+ :key =" loc.code"
39+ class =" hover:bg-gray-100 dark:hover:bg-gray-800"
40+ @click =" $router.push(switchLocalePath(loc.code))"
41+ >
42+ <span class =" cursor-pointer text-gray-800 dark:text-gray-200 hover:text-gray-800 dark:hover:text-gray-200" >{{ getFlagEmoji(loc.code) }} {{ loc.name }}</span >
43+ </DropdownMenuItem >
44+ </DropdownMenuContent >
45+ </DropdownMenu >
1446</template >
You can’t perform that action at this time.
0 commit comments