🇻🇳 Add Vietnamese Language (#581)

This commit is contained in:
Luke Vella 2023-03-19 11:41:18 +00:00 committed by GitHub
parent 76411d0ce7
commit 1bd774302b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 37 additions and 42 deletions

23
apps/web/languages.json Normal file
View file

@ -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": "汉语"
}

View file

@ -1,30 +1,10 @@
const path = require("path"); const path = require("path");
const languages = require("./languages.json");
module.exports = { module.exports = {
i18n: { i18n: {
defaultLocale: "en", defaultLocale: "en",
locales: [ locales: Object.keys(languages),
"ca",
"cs",
"da",
"de",
"en",
"es",
"fi",
"fr",
"hr",
"hu",
"it",
"ko",
"nl",
"pl",
"pt-BR",
"pt",
"ru",
"sk",
"sv",
"zh",
],
}, },
reloadOnPrerender: process.env.NODE_ENV === "development", reloadOnPrerender: process.env.NODE_ENV === "development",
localePath: path.resolve("./public/locales"), localePath: path.resolve("./public/locales"),

View file

@ -3,6 +3,7 @@ import Cookies from "js-cookie";
import { useTranslation } from "next-i18next"; import { useTranslation } from "next-i18next";
import ChevronDown from "@/components/icons/chevron-down.svg"; import ChevronDown from "@/components/icons/chevron-down.svg";
import languages from "~/languages.json";
export const LanguageSelect: React.FunctionComponent<{ export const LanguageSelect: React.FunctionComponent<{
className?: string; className?: string;
@ -21,26 +22,11 @@ export const LanguageSelect: React.FunctionComponent<{
onChange?.(e.target.value); onChange?.(e.target.value);
}} }}
> >
<option value="en">English</option> {Object.entries(languages).map(([code, name]) => (
<option value="ca">Català</option> <option key={code} value={code}>
<option value="cs">Česky</option> {name}
<option value="zh"></option> </option>
<option value="da">Dansk</option> ))}
<option value="de">Deutsch</option>
<option value="es">Español</option>
<option value="fi">Suomi</option>
<option value="fr">Français</option>
<option value="hr">Hrvatski</option>
<option value="it">Italiano</option>
<option value="ko"></option>
<option value="hu">Magyar</option>
<option value="nl">Nederlands</option>
<option value="pl">Polski</option>
<option value="pt">Português</option>
<option value="pt-BR">Português - Brasil</option>
<option value="ru">Pусский</option>
<option value="sk">Slovenčina</option>
<option value="sv">Svenska</option>
</select> </select>
<div className="pointer-events-none absolute inset-y-0 right-2 flex items-center"> <div className="pointer-events-none absolute inset-y-0 right-2 flex items-center">
<ChevronDown className="w-5" /> <ChevronDown className="w-5" />

View file

@ -21,6 +21,7 @@ const supportedLocales = [
"ru", "ru",
"sk", "sk",
"sv", "sv",
"vi",
"zh", "zh",
]; ];

View file

@ -126,6 +126,11 @@ const dayjsLocales: Record<
timeFormat: "24h", timeFormat: "24h",
import: () => import("dayjs/locale/zh"), import: () => import("dayjs/locale/zh"),
}, },
vi: {
weekStartsOn: "monday",
timeFormat: "24h",
import: () => import("dayjs/locale/vi"),
},
}; };
dayjs.extend(localizedFormat); dayjs.extend(localizedFormat);