diff --git a/apps/web/languages.json b/apps/web/languages.json new file mode 100644 index 000000000..96f7987ab --- /dev/null +++ b/apps/web/languages.json @@ -0,0 +1,23 @@ +{ + "ca": "Català", + "cs": "Česky", + "da": "Dansk", + "de": "Deutsch", + "en": "English", + "es": "Español", + "fi": "Suomi", + "fr": "Français", + "hr": "Hrvatski", + "hu": "Magyar", + "it": "Italiano", + "ko": "한국어", + "nl": "Nederlands", + "pl": "Polski", + "pt": "Português", + "pt-BR": "Português - Brasil", + "ru": "Pусский", + "sk": "Slovenčina", + "sv": "Svenska", + "vi": "Tiếng Việt", + "zh": "汉语" +} diff --git a/apps/web/next-i18next.config.js b/apps/web/next-i18next.config.js index 6c11870bb..1852f9888 100644 --- a/apps/web/next-i18next.config.js +++ b/apps/web/next-i18next.config.js @@ -1,30 +1,10 @@ const path = require("path"); +const languages = require("./languages.json"); module.exports = { i18n: { defaultLocale: "en", - locales: [ - "ca", - "cs", - "da", - "de", - "en", - "es", - "fi", - "fr", - "hr", - "hu", - "it", - "ko", - "nl", - "pl", - "pt-BR", - "pt", - "ru", - "sk", - "sv", - "zh", - ], + locales: Object.keys(languages), }, reloadOnPrerender: process.env.NODE_ENV === "development", localePath: path.resolve("./public/locales"), diff --git a/apps/web/src/components/poll/language-selector.tsx b/apps/web/src/components/poll/language-selector.tsx index ed46b09ea..4d666165c 100644 --- a/apps/web/src/components/poll/language-selector.tsx +++ b/apps/web/src/components/poll/language-selector.tsx @@ -3,6 +3,7 @@ import Cookies from "js-cookie"; import { useTranslation } from "next-i18next"; import ChevronDown from "@/components/icons/chevron-down.svg"; +import languages from "~/languages.json"; export const LanguageSelect: React.FunctionComponent<{ className?: string; @@ -21,26 +22,11 @@ export const LanguageSelect: React.FunctionComponent<{ onChange?.(e.target.value); }} > - - - - - - - - - - - - - - - - - - - - + {Object.entries(languages).map(([code, name]) => ( + + ))}