diff --git a/src/App.vue b/src/App.vue index 53fe0f658..8cbdbcc7f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -28,7 +28,7 @@ import { useDialogSources } from "@/composables/useDialogSources"; import { useNavigationTargets } from "@/composables/useNavigationTargets"; import { useDataGridActions } from "@/composables/useDataGridActions"; import { useTauriEvents } from "@/composables/useTauriEvents"; -import { setLocale, currentLocale, nextLocale } from "@/i18n"; +import "@/i18n"; import * as api from "@/lib/api"; import { resolveDefaultDatabase } from "@/lib/defaultDatabase"; import { resolveExecutableSql } from "@/lib/sqlExecutionTarget"; @@ -356,10 +356,6 @@ function changeActiveSchema(schema: string | undefined) { const tab = activeTab.value; if (tab) queryStore.updateSchema(tab.id, schema); } - -function toggleLocale() { - setLocale(nextLocale(currentLocale())); -} function openGitHub() { openUrl("https://github.com/t8y2/dbx"); } @@ -549,7 +545,6 @@ onUnmounted(() => { @new-connection="showConnectionDialog = true" @new-query="newQuery" @toggle-theme="toggleTheme" - @toggle-locale="toggleLocale" @toggle-ai="toggleAiPanel" @toggle-history="showHistory = !showHistory" @open-github="openGitHub" diff --git a/src/components/layout/AppToolbar.vue b/src/components/layout/AppToolbar.vue index 711739ea4..943b72d5a 100644 --- a/src/components/layout/AppToolbar.vue +++ b/src/components/layout/AppToolbar.vue @@ -15,9 +15,22 @@ import { CloudDownload, } from "lucide-vue-next"; import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import WindowControls from "@/components/layout/WindowControls.vue"; import { useWindowControls } from "@/composables/useWindowControls"; +import { currentLocale, setLocale, type Locale } from "@/i18n"; + +const localeOptions: { value: Locale; flag: string; label: string }[] = [ + { value: "en", flag: "🇺🇸", label: "English" }, + { value: "es", flag: "🇪🇸", label: "Español" }, + { value: "zh-CN", flag: "🇨🇳", label: "简体中文" }, +]; defineProps<{ isDark: boolean; @@ -32,7 +45,6 @@ const emit = defineEmits<{ "new-connection": []; "new-query": []; "toggle-theme": []; - "toggle-locale": []; "toggle-ai": []; "toggle-history": []; "open-github": []; @@ -150,14 +162,25 @@ function onToolbarDblClick(e: MouseEvent) { {{ isDark ? "Light" : "Dark" }} - - - - - {{ t("common.language") }} - + + + + {{ option.flag }} + {{ option.label }} + + +