Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,8 @@
**/.DS_Store
atlas_backups
docker-compose-dev.yml
logo
logo
# Thai translation tooling (not part of the PR)
translate_atlas_thai.py
.th_cache.json
CLAUDE_KICKOFF.md
3 changes: 2 additions & 1 deletion api/src/main/java/com/grash/model/enums/Language.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ public enum Language {
ZH_CN,
ZH,
BA,
JA;
JA,
TH;
//always add new languages at the end

@JsonCreator
Expand Down
18 changes: 12 additions & 6 deletions frontend/src/i18n/i18n.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ import {
NL,
CN,
BA,
JP
JP,
TH
} from 'country-flag-icons/react/3x2';

// ─── Lazy translation loaders ────────────────────────────────────────────────
Expand All @@ -40,7 +41,8 @@ const translationLoaders: Record<string, () => Promise<{ default: object }>> = {
nl: () => import('./translations/nl'),
zh_cn: () => import('./translations/zh_cn'),
ba: () => import('./translations/ba'),
ja: () => import('./translations/ja')
ja: () => import('./translations/ja'),
th: () => import('./translations/th')
};

// ─── Lazy date-fns locale loaders ────────────────────────────────────────────
Expand All @@ -60,7 +62,8 @@ const dateLocaleLoaders: Record<string, () => Promise<DateLocale>> = {
nl: () => import('date-fns/locale').then((m) => m.nl),
zh_cn: () => import('date-fns/locale').then((m) => m.zhCN),
ba: () => import('date-fns/locale').then((m) => m.bs),
ja: () => import('date-fns/locale').then((m) => m.ja)
ja: () => import('date-fns/locale').then((m) => m.ja),
th: () => import('date-fns/locale').then((m) => m.th)
};

// ─── Lazy FullCalendar locale loaders ────────────────────────────────────────
Expand All @@ -83,7 +86,8 @@ const calendarLocaleLoaders: Record<string, () => Promise<LocaleSingularArg>> =
zh_cn: () =>
import('@fullcalendar/core/locales/zh-cn').then((m) => m.default),
ba: () => import('@fullcalendar/core/locales/bs').then((m) => m.default),
ja: () => import('@fullcalendar/core/locales/ja').then((m) => m.default)
ja: () => import('@fullcalendar/core/locales/ja').then((m) => m.default),
th: () => import('@fullcalendar/core/locales/th').then((m) => m.default)
};

// ─── i18n init (no resources bundled upfront) ────────────────────────────────
Expand Down Expand Up @@ -186,7 +190,8 @@ export type SupportedLanguage =
| 'NL'
| 'ZH_CN'
| 'BA'
| 'JA';
| 'JA'
| 'TH';

export const supportedLanguages: {
code: Lowercase<SupportedLanguage>;
Expand All @@ -208,7 +213,8 @@ export const supportedLanguages: {
{ code: 'nl', label: 'Dutch', Icon: NL },
{ code: 'zh_cn', label: 'Chinese (Simplified)', Icon: CN },
{ code: 'ba', label: 'Bosnian', Icon: BA },
{ code: 'ja', label: 'Japanese', Icon: JP }
{ code: 'ja', label: 'Japanese', Icon: JP },
{ code: 'th', label: 'Thai', Icon: TH }
];

export const getSupportedLanguage = (lang: string) =>
Expand Down
1,686 changes: 1,686 additions & 0 deletions frontend/src/i18n/translations/th.ts

Large diffs are not rendered by default.

10 changes: 8 additions & 2 deletions home/src/i18n/i18n.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use client";

import { FlagComponent } from "country-flag-icons/react/1x1";
import { BR, CN, DE, ES, FR, HU, IT, NL, PL, RU, SA, SE, TR, US, BA, JP } from "country-flag-icons/react/3x2";
import { BR, CN, DE, ES, FR, HU, IT, NL, PL, RU, SA, SE, TR, US, BA, JP, TH } from "country-flag-icons/react/3x2";

export type SupportedLanguage =
| "DE"
Expand All @@ -19,7 +19,8 @@ export type SupportedLanguage =
| "NL"
| "ZH_CN"
| "BA"
| "JA";
| "JA"
| "TH";

export const supportedLanguages: {
code: Lowercase<SupportedLanguage>;
Expand Down Expand Up @@ -106,4 +107,9 @@ export const supportedLanguages: {
label: "Japanese",
Icon: JP,
},
{
code: "th",
label: "Thai",
Icon: TH,
},
];
1 change: 1 addition & 0 deletions home/src/i18n/request.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export const locales = [
"zh-cn",
"ba",
"ja",
"th",
];

function deepmerge(target: object, source: object): object {
Expand Down
1,592 changes: 1,592 additions & 0 deletions home/src/i18n/translations/th.ts

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion mobile/i18n/i18n.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import nlJSON from './translations/nl';
import zhCnJSON from './translations/zh_cn';
import baJSON from './translations/ba';
import jaJSON from './translations/ja';
import thJSON from './translations/th';

const resources = {
de: { translation: deJSON },
Expand All @@ -35,7 +36,8 @@ const resources = {
nl: { translation: nlJSON },
zh_cn: { translation: zhCnJSON },
ba: { translation: baJSON },
ja: { translation: jaJSON }
ja: { translation: jaJSON },
th: { translation: thJSON }
};

i18n
Expand Down
1,322 changes: 1,322 additions & 0 deletions mobile/i18n/translations/th.ts

Large diffs are not rendered by default.