refactor: update languages data structure

This commit is contained in:
henrygd
2026-01-09 12:19:43 -05:00
parent 77da744008
commit 8b84231042
4 changed files with 35 additions and 151 deletions

View File

@@ -18,7 +18,7 @@ export function LangToggle() {
</Button> </Button>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent className="grid grid-cols-3"> <DropdownMenuContent className="grid grid-cols-3">
{languages.map(({ lang, label, e }) => ( {languages.map(([lang, label, e]) => (
<DropdownMenuItem <DropdownMenuItem
key={lang} key={lang}
className={cn("px-2.5 flex gap-2.5 cursor-pointer", lang === i18n.locale && "bg-accent/70 font-medium")} className={cn("px-2.5 flex gap-2.5 cursor-pointer", lang === i18n.locale && "bg-accent/70 font-medium")}

View File

@@ -68,10 +68,10 @@ export default function SettingsProfilePage({ userSettings }: { userSettings: Us
<SelectValue /> <SelectValue />
</SelectTrigger> </SelectTrigger>
<SelectContent> <SelectContent>
{languages.map((lang) => ( {languages.map(([lang, label, e]) => (
<SelectItem key={lang.lang} value={lang.lang}> <SelectItem key={lang} value={lang}>
<span className="me-2.5">{lang.e}</span> <span className="me-2.5">{e}</span>
{lang.label} {label}
</SelectItem> </SelectItem>
))} ))}
</SelectContent> </SelectContent>

View File

@@ -53,7 +53,7 @@ export function getLocale() {
} }
locale = (locale || "en").split("-")[0] locale = (locale || "en").split("-")[0]
// use en if locale is not in languages // use en if locale is not in languages
if (!languages.some((l) => l.lang === locale)) { if (!languages.some((l) => l[0] === locale)) {
locale = "en" locale = "en"
} }
return locale return locale

View File

@@ -1,147 +1,31 @@
export default [ export default [
{ ["ar", "العربية", "🇵🇸"],
lang: "ar", ["bg", "Български", "🇧🇬"],
label: "العربية", ["cs", "Čeština", "🇨🇿"],
e: "🇵🇸", ["da", "Dansk", "🇩🇰"],
}, ["de", "Deutsch", "🇩🇪"],
{ ["en", "English", "🇬🇧"],
lang: "bg", ["es", "Español", "🇪🇸"],
label: "Български", ["fa", "فارسی", "🇮🇷"],
e: "🇧🇬", ["fr", "Français", "🇫🇷"],
}, ["he", "עברית", "🕎"],
{ ["hr", "Hrvatski", "🇭🇷"],
lang: "cs", ["hu", "Magyar", "🇭🇺"],
label: "Čeština", ["it", "Italiano", "🇮🇹"],
e: "🇨🇿", ["ja", "日本語", "🇯🇵"],
}, ["ko", "한국어", "🇰🇷"],
{ ["nl", "Nederlands", "🇳🇱"],
lang: "da", ["no", "Norsk", "🇳🇴"],
label: "Dansk", ["pl", "Polski", "🇵🇱"],
e: "🇩🇰", ["pt", "Português", "🇵🇹"],
}, ["ru", "Русский", "🇷🇺"],
{ ["sl", "Slovenščina", "🇸🇮"],
lang: "de", ["sr", "Српски", "🇷🇸"],
label: "Deutsch", ["sv", "Svenska", "🇸🇪"],
e: "🇩🇪", ["tr", "Türkçe", "🇹🇷"],
}, ["uk", "Українська", "🇺🇦"],
{ ["vi", "Tiếng Việt", "🇻🇳"],
lang: "en", ["zh-CN", "简体中文", "🇨🇳"],
label: "English", ["zh-HK", "繁體中文", "🇭🇰"],
e: "🇬🇧", ["zh", "繁體中文", "🇹🇼"],
},
{
lang: "es",
label: "Español",
e: "🇪🇸",
},
{
lang: "fa",
label: "فارسی",
e: "🇮🇷",
},
{
lang: "fr",
label: "Français",
e: "🇫🇷",
},
{
lang: "he",
label: "עברית",
e: "🕎",
},
{
lang: "hr",
label: "Hrvatski",
e: "🇭🇷",
},
{
lang: "hu",
label: "Magyar",
e: "🇭🇺",
},
{
lang: "it",
label: "Italiano",
e: "🇮🇹",
},
{
lang: "ja",
label: "日本語",
e: "🇯🇵",
},
{
lang: "ko",
label: "한국어",
e: "🇰🇷",
},
{
lang: "nl",
label: "Nederlands",
e: "🇳🇱",
},
{
lang: "no",
label: "Norsk",
e: "🇳🇴",
},
{
lang: "pl",
label: "Polski",
e: "🇵🇱",
},
{
lang: "pt",
label: "Português",
e: "🇵🇹",
},
{
lang: "ru",
label: "Русский",
e: "🇷🇺",
},
{
lang: "sl",
label: "Slovenščina",
e: "🇸🇮",
},
{
lang: "sr",
label: "Српски",
e: "🇷🇸",
},
{
lang: "sv",
label: "Svenska",
e: "🇸🇪",
},
{
lang: "tr",
label: "Türkçe",
e: "🇹🇷",
},
{
lang: "uk",
label: "Українська",
e: "🇺🇦",
},
{
lang: "vi",
label: "Tiếng Việt",
e: "🇻🇳",
},
{
lang: "zh-CN",
label: "简体中文",
e: "🇨🇳",
},
{
lang: "zh-HK",
label: "繁體中文",
e: "🇭🇰",
},
{
lang: "zh",
label: "繁體中文",
e: "🇹🇼",
},
] as const ] as const