{ "version": 3, "sources": ["../../../../../src/lib/ui/hooks/useTranslation/translations.ts"], "sourcesContent": ["import { LANGUAGES } from '@tldraw/editor'\nimport { TLUiAssetUrls } from '../../assetUrls'\nimport { TLUiTranslationKey } from './TLUiTranslationKey'\nimport { DEFAULT_TRANSLATION } from './defaultTranslation'\n\n// The default language (english) must have a value for every message.\n// Other languages may have missing messages. If the application finds\n// a missing message for the current language, it will use the english\n// translation instead.\n\n/* ----------------- (do not change) ---------------- */\n\n/** @public */\nexport type TLUiTranslation = {\n\treadonly locale: string\n\treadonly label: string\n\treadonly messages: Record\n}\n\nconst EN_TRANSLATION: TLUiTranslation = {\n\tlocale: 'en',\n\tlabel: 'English',\n\tmessages: DEFAULT_TRANSLATION as TLUiTranslation['messages'],\n}\n\n/** @internal */\nexport async function fetchTranslation(\n\tlocale: TLUiTranslation['locale'],\n\tassetUrls: TLUiAssetUrls\n): Promise {\n\tconst mainRes = await fetch(assetUrls.translations.en)\n\n\tif (!mainRes.ok) {\n\t\tconsole.warn(`No main translations found.`)\n\t\treturn EN_TRANSLATION\n\t}\n\n\tif (locale === 'en') {\n\t\treturn EN_TRANSLATION\n\t}\n\n\tconst language = LANGUAGES.find((t) => t.locale === locale)\n\n\tif (!language) {\n\t\tconsole.warn(`No translation found for locale ${locale}`)\n\t\treturn EN_TRANSLATION\n\t}\n\n\tconst res = await fetch(assetUrls.translations[language.locale])\n\tconst messages: TLUiTranslation['messages'] = await res.json()\n\n\tif (!messages) {\n\t\tconsole.warn(`No messages found for locale ${locale}`)\n\t\treturn EN_TRANSLATION\n\t}\n\n\tconst missing: string[] = []\n\n\tfor (const key in EN_TRANSLATION.messages) {\n\t\tif (!messages[key as TLUiTranslationKey]) {\n\t\t\tmissing.push(key)\n\t\t}\n\t}\n\n\tif (missing.length > 0 && process.env.NODE_ENV === 'development') {\n\t\tconsole.warn(`Language ${locale}: missing messages for keys:\\n${missing.join('\\n')}`)\n\t}\n\n\treturn {\n\t\tlocale,\n\t\tlabel: language.label,\n\t\tmessages: { ...EN_TRANSLATION.messages, ...messages },\n\t}\n}\n"], "mappings": "AAAA,SAAS,iBAAiB;AAG1B,SAAS,2BAA2B;AAgBpC,MAAM,iBAAkC;AAAA,EACvC,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AACX;AAGA,eAAsB,iBACrB,QACA,WAC2B;AAC3B,QAAM,UAAU,MAAM,MAAM,UAAU,aAAa,EAAE;AAErD,MAAI,CAAC,QAAQ,IAAI;AAChB,YAAQ,KAAK,6BAA6B;AAC1C,WAAO;AAAA,EACR;AAEA,MAAI,WAAW,MAAM;AACpB,WAAO;AAAA,EACR;AAEA,QAAM,WAAW,UAAU,KAAK,CAAC,MAAM,EAAE,WAAW,MAAM;AAE1D,MAAI,CAAC,UAAU;AACd,YAAQ,KAAK,mCAAmC,MAAM,EAAE;AACxD,WAAO;AAAA,EACR;AAEA,QAAM,MAAM,MAAM,MAAM,UAAU,aAAa,SAAS,MAAM,CAAC;AAC/D,QAAM,WAAwC,MAAM,IAAI,KAAK;AAE7D,MAAI,CAAC,UAAU;AACd,YAAQ,KAAK,gCAAgC,MAAM,EAAE;AACrD,WAAO;AAAA,EACR;AAEA,QAAM,UAAoB,CAAC;AAE3B,aAAW,OAAO,eAAe,UAAU;AAC1C,QAAI,CAAC,SAAS,GAAyB,GAAG;AACzC,cAAQ,KAAK,GAAG;AAAA,IACjB;AAAA,EACD;AAEA,MAAI,QAAQ,SAAS,KAAK,QAAQ,IAAI,aAAa,eAAe;AACjE,YAAQ,KAAK,YAAY,MAAM;AAAA,EAAiC,QAAQ,KAAK,IAAI,CAAC,EAAE;AAAA,EACrF;AAEA,SAAO;AAAA,IACN;AAAA,IACA,OAAO,SAAS;AAAA,IAChB,UAAU,EAAE,GAAG,eAAe,UAAU,GAAG,SAAS;AAAA,EACrD;AACD;", "names": [] }