refactor: refactored i18n to display real lang name

This commit is contained in:
190km
2024-12-26 00:04:50 +01:00
parent 379ea2ac65
commit c3476a1fdf
2 changed files with 25 additions and 28 deletions

View File

@@ -38,7 +38,8 @@ const appearanceFormSchema = z.object({
theme: z.enum(["light", "dark", "system"], { theme: z.enum(["light", "dark", "system"], {
required_error: "Please select a theme.", required_error: "Please select a theme.",
}), }),
language: z.nativeEnum(Languages, {
language: z.enum(Object.values(Languages).map(lang => lang.code), {
required_error: "Please select a language.", required_error: "Please select a language.",
}), }),
}); });
@@ -48,7 +49,7 @@ type AppearanceFormValues = z.infer<typeof appearanceFormSchema>;
// This can come from your database or API. // This can come from your database or API.
const defaultValues: Partial<AppearanceFormValues> = { const defaultValues: Partial<AppearanceFormValues> = {
theme: "system", theme: "system",
language: Languages.English, language: Languages.english.code,
}; };
export function AppearanceForm() { export function AppearanceForm() {
@@ -173,15 +174,11 @@ export function AppearanceForm() {
<SelectValue placeholder="No preset selected" /> <SelectValue placeholder="No preset selected" />
</SelectTrigger> </SelectTrigger>
<SelectContent> <SelectContent>
{Object.keys(Languages).map((preset) => { {Object.values(Languages).map((language) => (
const value = <SelectItem key={language.code} value={language.code}>
Languages[preset as keyof typeof Languages]; {language.name}
return ( </SelectItem>
<SelectItem key={value} value={value}> ))}
{preset}
</SelectItem>
);
})}
</SelectContent> </SelectContent>
</Select> </Select>
</FormItem> </FormItem>

View File

@@ -1,19 +1,19 @@
export enum Languages { export const Languages = {
English = "en", english: { code: "en", name: "English" },
Polish = "pl", polish: { code: "pl", name: "Polski" },
Russian = "ru", russian: { code: "ru", name: "Русский" },
French = "fr", french: { code: "fr", name: "Français" },
German = "de", german: { code: "de", name: "Deutsch" },
ChineseTraditional = "zh-Hant", chineseTraditional: { code: "zh-Hant", name: "繁體中文" },
ChineseSimplified = "zh-Hans", chineseSimplified: { code: "zh-Hans", name: "简体中文" },
Turkish = "tr", turkish: { code: "tr", name: "Türkçe" },
Kazakh = "kz", kazakh: { code: "kz", name: "Қазақ" },
Persian = "fa", persian: { code: "fa", name: "فارسی" },
Korean = "ko", korean: { code: "ko", name: "한국어" },
Portuguese = "pt-br", portuguese: { code: "pt-br", name: "Português" },
Italian = "it", italian: { code: "it", name: "Italiano" },
Japanese = "ja", japanese: { code: "ja", name: "日本語" },
Spanish = "es", spanish: { code: "es", name: "Español" },
} };
export type Language = keyof typeof Languages; export type Language = keyof typeof Languages;