feat: add crowdin i18n

This commit is contained in:
LukeGus
2026-01-13 00:39:35 -06:00
parent 1aebbee21e
commit 9be6b945c8
2 changed files with 151 additions and 109 deletions

View File

@@ -2,32 +2,39 @@ import i18n from "i18next";
import { initReactI18next } from "react-i18next"; import { initReactI18next } from "react-i18next";
import LanguageDetector from "i18next-browser-languagedetector"; import LanguageDetector from "i18next-browser-languagedetector";
import enTranslation from "../locales/en.json"; import enTranslation from "../locales/translated/en.json";
import zhTranslation from "../locales/zh.json"; import afTranslation from "../locales/translated/af.json";
import deTranslation from "../locales/de.json"; import arTranslation from "../locales/translated/ar.json";
import ptTranslation from "../locales/pt.json"; import bnTranslation from "../locales/translated/bn.json";
import ruTranslation from "../locales/ru.json"; import bgTranslation from "../locales/translated/bg.json";
import frTranslation from "../locales/fr.json"; import caTranslation from "../locales/translated/ca.json";
import koTranslation from "../locales/ko.json"; import csTranslation from "../locales/translated/cs.json";
import itTranslation from "../locales/it.json"; import daTranslation from "../locales/translated/da.json";
import esTranslation from "../locales/es.json"; import deTranslation from "../locales/translated/de.json";
import hiTranslation from "../locales/hi.json"; import elTranslation from "../locales/translated/el.json";
import bnTranslation from "../locales/bn.json"; import esTranslation from "../locales/translated/es.json";
import jaTranslation from "../locales/ja.json"; import fiTranslation from "../locales/translated/fi.json";
import viTranslation from "../locales/vi.json"; import frTranslation from "../locales/translated/fr.json";
import trTranslation from "../locales/tr.json"; import heTranslation from "../locales/translated/he.json";
import heTranslation from "../locales/he.json"; import hiTranslation from "../locales/translated/hi.json";
import arTranslation from "../locales/ar.json"; import huTranslation from "../locales/translated/hu.json";
import plTranslation from "../locales/pl.json"; import idTranslation from "../locales/translated/id.json";
import nlTranslation from "../locales/nl.json"; import itTranslation from "../locales/translated/it.json";
import svTranslation from "../locales/sv.json"; import jaTranslation from "../locales/translated/ja.json";
import idTranslation from "../locales/id.json"; import koTranslation from "../locales/translated/ko.json";
import thTranslation from "../locales/th.json"; import nlTranslation from "../locales/translated/nl.json";
import ukTranslation from "../locales/uk.json"; import noTranslation from "../locales/translated/no.json";
import csTranslation from "../locales/cs.json"; import plTranslation from "../locales/translated/pl.json";
import roTranslation from "../locales/ro.json"; import ptTranslation from "../locales/translated/pt.json";
import elTranslation from "../locales/el.json"; import roTranslation from "../locales/translated/ro.json";
import nbTranslation from "../locales/nb.json"; import ruTranslation from "../locales/translated/ru.json";
import srTranslation from "../locales/translated/sr.json";
import svTranslation from "../locales/translated/sv.json";
import thTranslation from "../locales/translated/th.json";
import trTranslation from "../locales/translated/tr.json";
import ukTranslation from "../locales/translated/uk.json";
import viTranslation from "../locales/translated/vi.json";
import zhTranslation from "../locales/translated/zh.json";
i18n i18n
.use(LanguageDetector) .use(LanguageDetector)
@@ -35,31 +42,38 @@ i18n
.init({ .init({
supportedLngs: [ supportedLngs: [
"en", "en",
"zh", "af",
"de",
"pt",
"ru",
"fr",
"ko",
"it",
"es",
"hi",
"bn",
"ja",
"vi",
"tr",
"he",
"ar", "ar",
"pl", "bn",
"nl", "bg",
"sv", "ca",
"id",
"th",
"uk",
"cs", "cs",
"ro", "da",
"de",
"el", "el",
"nb", "es",
"fi",
"fr",
"he",
"hi",
"hu",
"id",
"it",
"ja",
"ko",
"nl",
"no",
"pl",
"pt",
"ro",
"ru",
"sr",
"sv",
"th",
"tr",
"uk",
"vi",
"zh",
], ],
fallbackLng: "en", fallbackLng: "en",
debug: false, debug: false,
@@ -76,80 +90,101 @@ i18n
en: { en: {
translation: enTranslation, translation: enTranslation,
}, },
zh: { af: {
translation: zhTranslation, translation: afTranslation,
},
de: {
translation: deTranslation,
},
pt: {
translation: ptTranslation,
},
ru: {
translation: ruTranslation,
},
fr: {
translation: frTranslation,
},
ko: {
translation: koTranslation,
},
it: {
translation: itTranslation,
},
es: {
translation: esTranslation,
},
hi: {
translation: hiTranslation,
},
bn: {
translation: bnTranslation,
},
ja: {
translation: jaTranslation,
},
vi: {
translation: viTranslation,
},
tr: {
translation: trTranslation,
},
he: {
translation: heTranslation,
}, },
ar: { ar: {
translation: arTranslation, translation: arTranslation,
}, },
pl: { bn: {
translation: plTranslation, translation: bnTranslation,
}, },
nl: { bg: {
translation: nlTranslation, translation: bgTranslation,
}, },
sv: { ca: {
translation: svTranslation, translation: caTranslation,
},
id: {
translation: idTranslation,
},
th: {
translation: thTranslation,
},
uk: {
translation: ukTranslation,
}, },
cs: { cs: {
translation: csTranslation, translation: csTranslation,
}, },
ro: { da: {
translation: roTranslation, translation: daTranslation,
},
de: {
translation: deTranslation,
}, },
el: { el: {
translation: elTranslation, translation: elTranslation,
}, },
nb: { es: {
translation: nbTranslation, translation: esTranslation,
},
fi: {
translation: fiTranslation,
},
fr: {
translation: frTranslation,
},
he: {
translation: heTranslation,
},
hi: {
translation: hiTranslation,
},
hu: {
translation: huTranslation,
},
id: {
translation: idTranslation,
},
it: {
translation: itTranslation,
},
ja: {
translation: jaTranslation,
},
ko: {
translation: koTranslation,
},
nl: {
translation: nlTranslation,
},
no: {
translation: noTranslation,
},
pl: {
translation: plTranslation,
},
pt: {
translation: ptTranslation,
},
ro: {
translation: roTranslation,
},
ru: {
translation: ruTranslation,
},
sr: {
translation: srTranslation,
},
sv: {
translation: svTranslation,
},
th: {
translation: thTranslation,
},
tr: {
translation: trTranslation,
},
uk: {
translation: ukTranslation,
},
vi: {
translation: viTranslation,
},
zh: {
translation: zhTranslation,
}, },
}, },

View File

@@ -11,20 +11,27 @@ import { Globe } from "lucide-react";
const languages = [ const languages = [
{ code: "en", name: "English", nativeName: "English" }, { code: "en", name: "English", nativeName: "English" },
{ code: "af", name: "Afrikaans", nativeName: "Afrikaans" },
{ code: "ar", name: "Arabic", nativeName: "العربية" }, { code: "ar", name: "Arabic", nativeName: "العربية" },
{ code: "bn", name: "Bengali", nativeName: "বাংলা" }, { code: "bn", name: "Bengali", nativeName: "বাংলা" },
{ code: "bg", name: "Bulgarian", nativeName: "Български" },
{ code: "ca", name: "Catalan", nativeName: "Català" },
{ code: "zh", name: "Chinese", nativeName: "中文" }, { code: "zh", name: "Chinese", nativeName: "中文" },
{ code: "cs", name: "Czech", nativeName: "Čeština" }, { code: "cs", name: "Czech", nativeName: "Čeština" },
{ code: "da", name: "Danish", nativeName: "Dansk" },
{ code: "nl", name: "Dutch", nativeName: "Nederlands" }, { code: "nl", name: "Dutch", nativeName: "Nederlands" },
{ code: "fi", name: "Finnish", nativeName: "Suomi" },
{ code: "fr", name: "French", nativeName: "Français" }, { code: "fr", name: "French", nativeName: "Français" },
{ code: "de", name: "German", nativeName: "Deutsch" }, { code: "de", name: "German", nativeName: "Deutsch" },
{ code: "el", name: "Greek", nativeName: "Ελληνικά" }, { code: "el", name: "Greek", nativeName: "Ελληνικά" },
{ code: "he", name: "Hebrew", nativeName: "עברית" }, { code: "he", name: "Hebrew", nativeName: "עברית" },
{ code: "hi", name: "Hindi", nativeName: "हिन्दी" }, { code: "hi", name: "Hindi", nativeName: "हिन्दी" },
{ code: "hu", name: "Hungarian", nativeName: "Magyar" },
{ code: "id", name: "Indonesian", nativeName: "Bahasa Indonesia" }, { code: "id", name: "Indonesian", nativeName: "Bahasa Indonesia" },
{ code: "it", name: "Italian", nativeName: "Italiano" }, { code: "it", name: "Italian", nativeName: "Italiano" },
{ code: "ja", name: "Japanese", nativeName: "日本語" }, { code: "ja", name: "Japanese", nativeName: "日本語" },
{ code: "ko", name: "Korean", nativeName: "한국어" }, { code: "ko", name: "Korean", nativeName: "한국어" },
{ code: "no", name: "Norwegian", nativeName: "Norsk" },
{ code: "pl", name: "Polish", nativeName: "Polski" }, { code: "pl", name: "Polish", nativeName: "Polski" },
{ {
code: "pt", code: "pt",
@@ -33,13 +40,13 @@ const languages = [
}, },
{ code: "ro", name: "Romanian", nativeName: "Română" }, { code: "ro", name: "Romanian", nativeName: "Română" },
{ code: "ru", name: "Russian", nativeName: "Русский" }, { code: "ru", name: "Russian", nativeName: "Русский" },
{ code: "sr", name: "Serbian", nativeName: "Српски" },
{ code: "es", name: "Spanish", nativeName: "Español" }, { code: "es", name: "Spanish", nativeName: "Español" },
{ code: "sv", name: "Swedish", nativeName: "Svenska" }, { code: "sv", name: "Swedish", nativeName: "Svenska" },
{ code: "th", name: "Thai", nativeName: "ไทย" }, { code: "th", name: "Thai", nativeName: "ไทย" },
{ code: "tr", name: "Turkish", nativeName: "Türkçe" }, { code: "tr", name: "Turkish", nativeName: "Türkçe" },
{ code: "uk", name: "Ukrainian", nativeName: "Українська" }, { code: "uk", name: "Ukrainian", nativeName: "Українська" },
{ code: "vi", name: "Vietnamese", nativeName: "Tiếng Việt" }, { code: "vi", name: "Vietnamese", nativeName: "Tiếng Việt" },
{ code: "nb", name: "Norwegian", nativeName: "Norsk" },
]; ];
export function LanguageSwitcher() { export function LanguageSwitcher() {