aboutsummaryrefslogtreecommitdiff
path: root/src/lib/lang.ts
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-01-24 13:09:50 +0000
committerFuwn <[email protected]>2026-01-24 13:09:50 +0000
commit396acf3bbbe00a192cb0ea0a9ccf91b1d8d2850b (patch)
treeb9df4ca6a70db45cfffbae6fdd7252e20fb8e93c /src/lib/lang.ts
downloadumami-main.tar.xz
umami-main.zip
Initial commitHEADmain
Created from https://vercel.com/new
Diffstat (limited to 'src/lib/lang.ts')
-rw-r--r--src/lib/lang.ts111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/lib/lang.ts b/src/lib/lang.ts
new file mode 100644
index 0000000..f874640
--- /dev/null
+++ b/src/lib/lang.ts
@@ -0,0 +1,111 @@
+import {
+ arSA,
+ be,
+ bg,
+ bn,
+ bs,
+ ca,
+ cs,
+ da,
+ de,
+ el,
+ enGB,
+ enUS,
+ es,
+ faIR,
+ fi,
+ fr,
+ he,
+ hi,
+ hr,
+ hu,
+ id,
+ it,
+ ja,
+ km,
+ ko,
+ lt,
+ mn,
+ ms,
+ nb,
+ nl,
+ pl,
+ pt,
+ ptBR,
+ ro,
+ ru,
+ sk,
+ sl,
+ sv,
+ ta,
+ th,
+ tr,
+ uk,
+ uz,
+ vi,
+ zhCN,
+ zhTW,
+} from 'date-fns/locale';
+
+export const languages = {
+ 'ar-SA': { label: 'العربية', dateLocale: arSA, dir: 'rtl' },
+ 'be-BY': { label: 'Беларуская', dateLocale: be },
+ 'bg-BG': { label: 'български език', dateLocale: bg },
+ 'bn-BD': { label: 'বাংলা', dateLocale: bn },
+ 'bs-BA': { label: 'Bosanski', dateLocale: bs },
+ 'ca-ES': { label: 'Català', dateLocale: ca },
+ 'cs-CZ': { label: 'Čeština', dateLocale: cs },
+ 'da-DK': { label: 'Dansk', dateLocale: da },
+ 'de-CH': { label: 'Schwiizerdütsch', dateLocale: de },
+ 'de-DE': { label: 'Deutsch', dateLocale: de },
+ 'el-GR': { label: 'Ελληνικά', dateLocale: el },
+ 'en-GB': { label: 'English (UK)', dateLocale: enGB },
+ 'en-US': { label: 'English (US)', dateLocale: enUS },
+ 'es-ES': { label: 'Español', dateLocale: es },
+ 'fa-IR': { label: 'فارسی', dateLocale: faIR, dir: 'rtl' },
+ 'fi-FI': { label: 'Suomi', dateLocale: fi },
+ 'fo-FO': { label: 'Føroyskt' },
+ 'fr-FR': { label: 'Français', dateLocale: fr },
+ 'ga-ES': { label: 'Galacian (Spain)', dateLocale: es },
+ 'he-IL': { label: 'עברית', dateLocale: he },
+ 'hi-IN': { label: 'हिन्दी', dateLocale: hi },
+ 'hr-HR': { label: 'Hrvatski', dateLocale: hr },
+ 'hu-HU': { label: 'Hungarian', dateLocale: hu },
+ 'id-ID': { label: 'Bahasa Indonesia', dateLocale: id },
+ 'it-IT': { label: 'Italiano', dateLocale: it },
+ 'ja-JP': { label: '日本語', dateLocale: ja },
+ 'km-KH': { label: 'ភាសាខ្មែរ', dateLocale: km },
+ 'ko-KR': { label: '한국어', dateLocale: ko },
+ 'lt-LT': { label: 'Lietuvių', dateLocale: lt },
+ 'mn-MN': { label: 'Монгол', dateLocale: mn },
+ 'ms-MY': { label: 'Malay', dateLocale: ms },
+ 'my-MM': { label: 'မြန်မာဘာသာ', dateLocale: enUS },
+ 'nl-NL': { label: 'Nederlands', dateLocale: nl },
+ 'nb-NO': { label: 'Norsk Bokmål', dateLocale: nb },
+ 'pl-PL': { label: 'Polski', dateLocale: pl },
+ 'pt-BR': { label: 'Português do Brasil', dateLocale: ptBR },
+ 'pt-PT': { label: 'Português', dateLocale: pt },
+ 'ro-RO': { label: 'Română', dateLocale: ro },
+ 'ru-RU': { label: 'Русский', dateLocale: ru },
+ 'si-LK': { label: 'සිංහල', dateLocale: id },
+ 'sk-SK': { label: 'Slovenčina', dateLocale: sk },
+ 'sl-SI': { label: 'Slovenščina', dateLocale: sl },
+ 'sv-SE': { label: 'Svenska', dateLocale: sv },
+ 'ta-IN': { label: 'தமிழ்', dateLocale: ta },
+ 'th-TH': { label: 'ภาษาไทย', dateLocale: th },
+ 'tr-TR': { label: 'Türkçe', dateLocale: tr },
+ 'uk-UA': { label: 'українська', dateLocale: uk },
+ 'ur-PK': { label: 'Urdu (Pakistan)', dateLocale: uk, dir: 'rtl' },
+ 'uz-UZ': { label: 'O‘zbekcha', dateLocale: uz },
+ 'vi-VN': { label: 'Tiếng Việt', dateLocale: vi },
+ 'zh-CN': { label: '中文', dateLocale: zhCN },
+ 'zh-TW': { label: '中文(繁體)', dateLocale: zhTW },
+};
+
+export function getDateLocale(locale: string) {
+ return languages[locale]?.dateLocale || enUS;
+}
+
+export function getTextDirection(locale: string) {
+ return languages[locale]?.dir || 'ltr';
+}