@payloadcms/translations 3.26.0-canary.bbb3083 → 3.27.0-canary.ecc3f49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/clientKeys.d.ts +1 -1
- package/dist/clientKeys.d.ts.map +1 -1
- package/dist/clientKeys.js +4 -0
- package/dist/clientKeys.js.map +1 -1
- package/dist/importDateFNSLocale.d.ts.map +1 -1
- package/dist/importDateFNSLocale.js +3 -1
- package/dist/importDateFNSLocale.js.map +1 -1
- package/dist/languages/ar.d.ts.map +1 -1
- package/dist/languages/ar.js +4 -0
- package/dist/languages/ar.js.map +1 -1
- package/dist/languages/az.d.ts.map +1 -1
- package/dist/languages/az.js +4 -0
- package/dist/languages/az.js.map +1 -1
- package/dist/languages/bg.d.ts.map +1 -1
- package/dist/languages/bg.js +4 -0
- package/dist/languages/bg.js.map +1 -1
- package/dist/languages/ca.d.ts.map +1 -1
- package/dist/languages/ca.js +4 -0
- package/dist/languages/ca.js.map +1 -1
- package/dist/languages/cs.d.ts.map +1 -1
- package/dist/languages/cs.js +4 -0
- package/dist/languages/cs.js.map +1 -1
- package/dist/languages/da.d.ts.map +1 -1
- package/dist/languages/da.js +4 -0
- package/dist/languages/da.js.map +1 -1
- package/dist/languages/de.d.ts.map +1 -1
- package/dist/languages/de.js +4 -0
- package/dist/languages/de.js.map +1 -1
- package/dist/languages/en.d.ts +4 -0
- package/dist/languages/en.d.ts.map +1 -1
- package/dist/languages/en.js +4 -0
- package/dist/languages/en.js.map +1 -1
- package/dist/languages/es.d.ts.map +1 -1
- package/dist/languages/es.js +4 -0
- package/dist/languages/es.js.map +1 -1
- package/dist/languages/et.d.ts.map +1 -1
- package/dist/languages/et.js +4 -0
- package/dist/languages/et.js.map +1 -1
- package/dist/languages/fa.d.ts.map +1 -1
- package/dist/languages/fa.js +4 -0
- package/dist/languages/fa.js.map +1 -1
- package/dist/languages/fr.d.ts.map +1 -1
- package/dist/languages/fr.js +4 -0
- package/dist/languages/fr.js.map +1 -1
- package/dist/languages/he.d.ts.map +1 -1
- package/dist/languages/he.js +4 -0
- package/dist/languages/he.js.map +1 -1
- package/dist/languages/hr.d.ts.map +1 -1
- package/dist/languages/hr.js +4 -0
- package/dist/languages/hr.js.map +1 -1
- package/dist/languages/hu.d.ts.map +1 -1
- package/dist/languages/hu.js +4 -0
- package/dist/languages/hu.js.map +1 -1
- package/dist/languages/it.d.ts.map +1 -1
- package/dist/languages/it.js +4 -0
- package/dist/languages/it.js.map +1 -1
- package/dist/languages/ja.d.ts.map +1 -1
- package/dist/languages/ja.js +4 -0
- package/dist/languages/ja.js.map +1 -1
- package/dist/languages/ko.d.ts.map +1 -1
- package/dist/languages/ko.js +4 -0
- package/dist/languages/ko.js.map +1 -1
- package/dist/languages/lt.d.ts.map +1 -1
- package/dist/languages/lt.js +4 -0
- package/dist/languages/lt.js.map +1 -1
- package/dist/languages/my.d.ts.map +1 -1
- package/dist/languages/my.js +4 -0
- package/dist/languages/my.js.map +1 -1
- package/dist/languages/nb.d.ts.map +1 -1
- package/dist/languages/nb.js +4 -0
- package/dist/languages/nb.js.map +1 -1
- package/dist/languages/nl.d.ts.map +1 -1
- package/dist/languages/nl.js +4 -0
- package/dist/languages/nl.js.map +1 -1
- package/dist/languages/pl.d.ts.map +1 -1
- package/dist/languages/pl.js +4 -0
- package/dist/languages/pl.js.map +1 -1
- package/dist/languages/pt.d.ts.map +1 -1
- package/dist/languages/pt.js +4 -0
- package/dist/languages/pt.js.map +1 -1
- package/dist/languages/ro.d.ts.map +1 -1
- package/dist/languages/ro.js +4 -0
- package/dist/languages/ro.js.map +1 -1
- package/dist/languages/rs.d.ts.map +1 -1
- package/dist/languages/rs.js +4 -0
- package/dist/languages/rs.js.map +1 -1
- package/dist/languages/rsLatin.d.ts.map +1 -1
- package/dist/languages/rsLatin.js +4 -0
- package/dist/languages/rsLatin.js.map +1 -1
- package/dist/languages/ru.d.ts.map +1 -1
- package/dist/languages/ru.js +4 -0
- package/dist/languages/ru.js.map +1 -1
- package/dist/languages/sk.d.ts.map +1 -1
- package/dist/languages/sk.js +4 -0
- package/dist/languages/sk.js.map +1 -1
- package/dist/languages/sl.d.ts.map +1 -1
- package/dist/languages/sl.js +4 -0
- package/dist/languages/sl.js.map +1 -1
- package/dist/languages/sv.d.ts.map +1 -1
- package/dist/languages/sv.js +4 -0
- package/dist/languages/sv.js.map +1 -1
- package/dist/languages/th.d.ts.map +1 -1
- package/dist/languages/th.js +4 -0
- package/dist/languages/th.js.map +1 -1
- package/dist/languages/tr.d.ts.map +1 -1
- package/dist/languages/tr.js +4 -0
- package/dist/languages/tr.js.map +1 -1
- package/dist/languages/uk.d.ts.map +1 -1
- package/dist/languages/uk.js +4 -0
- package/dist/languages/uk.js.map +1 -1
- package/dist/languages/vi.d.ts.map +1 -1
- package/dist/languages/vi.js +4 -0
- package/dist/languages/vi.js.map +1 -1
- package/dist/languages/zh.d.ts.map +1 -1
- package/dist/languages/zh.js +4 -0
- package/dist/languages/zh.js.map +1 -1
- package/dist/languages/zhTw.d.ts.map +1 -1
- package/dist/languages/zhTw.js +4 -0
- package/dist/languages/zhTw.js.map +1 -1
- package/dist/utilities/copyFile.d.ts +1 -1
- package/dist/utilities/copyFile.d.ts.map +1 -1
- package/dist/utilities/copyFile.js +1 -1
- package/dist/utilities/copyFile.js.map +1 -1
- package/dist/utilities/deepMergeSimple.d.ts.map +1 -1
- package/dist/utilities/deepMergeSimple.js +3 -0
- package/dist/utilities/deepMergeSimple.js.map +1 -1
- package/dist/utilities/ensureDirExists.d.ts +1 -1
- package/dist/utilities/ensureDirExists.d.ts.map +1 -1
- package/dist/utilities/ensureDirExists.js +3 -1
- package/dist/utilities/ensureDirExists.js.map +1 -1
- package/dist/utilities/getTranslation.d.ts.map +1 -1
- package/dist/utilities/getTranslation.js +3 -0
- package/dist/utilities/getTranslation.js.map +1 -1
- package/dist/utilities/getTranslationsByContext.d.ts +480 -1
- package/dist/utilities/getTranslationsByContext.d.ts.map +1 -1
- package/dist/utilities/getTranslationsByContext.js.map +1 -1
- package/dist/utilities/init.d.ts +14 -4
- package/dist/utilities/init.d.ts.map +1 -1
- package/dist/utilities/init.js +6 -3
- package/dist/utilities/init.js.map +1 -1
- package/dist/utilities/languages.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/init.ts"],"sourcesContent":["import type {\n DefaultTranslationKeys,\n DefaultTranslationsObject,\n I18n,\n InitI18n,\n InitTFunction,\n Language,\n} from '../types.js'\n\nimport { importDateFNSLocale } from '../importDateFNSLocale.js'\nimport { deepMergeSimple } from './deepMergeSimple.js'\nimport { getTranslationsByContext } from './getTranslationsByContext.js'\n\n/**\n * @function getTranslationString\n *\n * Gets a translation string from a translations object\n *\n * @returns string\n */\nexport const getTranslationString = <\n TTranslations = DefaultTranslationsObject,\n TTranslationKeys = DefaultTranslationKeys,\n>({\n count,\n key,\n translations,\n}: {\n count?: number\n key: TTranslationKeys\n translations: Language<TTranslations>['translations']\n}): string => {\n const keys = (key as DefaultTranslationKeys).split(':')\n let keySuffix = ''\n\n const translation: string = keys.reduce((acc: any, key, index) => {\n if (typeof acc === 'string') {\n return acc\n }\n\n if (typeof count === 'number') {\n if (count === 0 && `${key}_zero` in acc) {\n keySuffix = '_zero'\n } else if (count === 1 && `${key}_one` in acc) {\n keySuffix = '_one'\n } else if (count === 2 && `${key}_two` in acc) {\n keySuffix = '_two'\n } else if (count > 5 && `${key}_many` in acc) {\n keySuffix = '_many'\n } else if (count > 2 && count <= 5 && `${key}_few` in acc) {\n keySuffix = '_few'\n } else if (`${key}_other` in acc) {\n keySuffix = '_other'\n }\n }\n let keyToUse = key\n if (index === keys.length - 1 && keySuffix) {\n keyToUse = `${key}${keySuffix}`\n }\n\n if (acc && keyToUse in acc) {\n return acc[keyToUse]\n }\n\n return undefined\n }, translations)\n\n if (!translation) {\n console.log('key not found:', key)\n }\n\n return translation || (key as string)\n}\n\n/**\n * @function replaceVars\n *\n * Replaces variables in a translation string with values from an object\n *\n * @returns string\n */\nconst replaceVars = ({\n translationString,\n vars,\n}: {\n translationString: string\n vars: {\n [key: string]: any\n }\n}) => {\n const parts = translationString.split(/(\\{\\{.*?\\}\\})/)\n\n return parts\n .map((part) => {\n if (part.startsWith('{{') && part.endsWith('}}')) {\n const placeholder = part.substring(2, part.length - 2).trim()\n const value = vars[placeholder]\n return value !== undefined && value !== null ? value : part\n } else {\n return part\n }\n })\n .join('')\n}\n\n/**\n * @function t\n *\n * Merges config defined translations with translations passed in as an argument\n * returns a function that can be used to translate a string\n *\n * @returns string\n */\nexport function t<\n TTranslations = DefaultTranslationsObject,\n TTranslationKeys = DefaultTranslationKeys,\n>({\n key,\n translations,\n vars,\n}: {\n key: TTranslationKeys\n translations?: Language<TTranslations>['translations']\n vars?: Record<string, any>\n}): string {\n let translationString = getTranslationString({\n count: typeof vars?.count === 'number' ? vars.count : undefined,\n key,\n translations,\n })\n\n if (vars) {\n translationString = replaceVars({\n translationString,\n vars,\n })\n }\n\n if (!translationString) {\n translationString = key as string\n }\n\n return translationString\n}\n\nconst initTFunction: InitTFunction = (args) => {\n const { config, language, translations } = args\n const mergedTranslations
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/init.ts"],"sourcesContent":["import type {\n DefaultTranslationKeys,\n DefaultTranslationsObject,\n I18n,\n InitI18n,\n InitTFunction,\n Language,\n} from '../types.js'\n\nimport { importDateFNSLocale } from '../importDateFNSLocale.js'\nimport { deepMergeSimple } from './deepMergeSimple.js'\nimport { getTranslationsByContext } from './getTranslationsByContext.js'\n\n/**\n * @function getTranslationString\n *\n * Gets a translation string from a translations object\n *\n * @returns string\n */\nexport const getTranslationString = <\n TTranslations = DefaultTranslationsObject,\n TTranslationKeys = DefaultTranslationKeys,\n>({\n count,\n key,\n translations,\n}: {\n count?: number\n key: TTranslationKeys\n translations: Language<TTranslations>['translations']\n}): string => {\n const keys = (key as DefaultTranslationKeys).split(':')\n let keySuffix = ''\n\n const translation: string = keys.reduce((acc: any, key, index) => {\n if (typeof acc === 'string') {\n return acc\n }\n\n if (typeof count === 'number') {\n if (count === 0 && `${key}_zero` in acc) {\n keySuffix = '_zero'\n } else if (count === 1 && `${key}_one` in acc) {\n keySuffix = '_one'\n } else if (count === 2 && `${key}_two` in acc) {\n keySuffix = '_two'\n } else if (count > 5 && `${key}_many` in acc) {\n keySuffix = '_many'\n } else if (count > 2 && count <= 5 && `${key}_few` in acc) {\n keySuffix = '_few'\n } else if (`${key}_other` in acc) {\n keySuffix = '_other'\n }\n }\n let keyToUse = key\n if (index === keys.length - 1 && keySuffix) {\n keyToUse = `${key}${keySuffix}`\n }\n\n if (acc && keyToUse in acc) {\n return acc[keyToUse]\n }\n\n return undefined\n }, translations)\n\n if (!translation) {\n console.log('key not found:', key)\n }\n\n return translation || (key as string)\n}\n\n/**\n * @function replaceVars\n *\n * Replaces variables in a translation string with values from an object\n *\n * @returns string\n */\nconst replaceVars = ({\n translationString,\n vars,\n}: {\n translationString: string\n vars: {\n [key: string]: any\n }\n}) => {\n const parts = translationString.split(/(\\{\\{.*?\\}\\})/)\n\n return parts\n .map((part) => {\n if (part.startsWith('{{') && part.endsWith('}}')) {\n const placeholder = part.substring(2, part.length - 2).trim()\n const value = vars[placeholder]\n return value !== undefined && value !== null ? value : part\n } else {\n return part\n }\n })\n .join('')\n}\n\n/**\n * @function t\n *\n * Merges config defined translations with translations passed in as an argument\n * returns a function that can be used to translate a string\n *\n * @returns string\n */\nexport function t<\n TTranslations = DefaultTranslationsObject,\n TTranslationKeys = DefaultTranslationKeys,\n>({\n key,\n translations,\n vars,\n}: {\n key: TTranslationKeys\n translations?: Language<TTranslations>['translations']\n vars?: Record<string, any>\n}): string {\n let translationString = getTranslationString({\n count: typeof vars?.count === 'number' ? vars.count : undefined,\n key,\n translations,\n })\n\n if (vars) {\n translationString = replaceVars({\n translationString,\n vars,\n })\n }\n\n if (!translationString) {\n translationString = key as string\n }\n\n return translationString\n}\n\nconst initTFunction: InitTFunction = (args) => {\n const { config, language, translations } = args\n const mergedTranslations =\n language && config?.translations?.[language as keyof typeof config.translations]\n ? deepMergeSimple<DefaultTranslationsObject>(\n translations,\n config.translations[language as keyof typeof config.translations]!,\n )\n : translations\n\n return {\n t: (key, vars) => {\n return t({\n key,\n translations: mergedTranslations,\n vars,\n })\n },\n translations: mergedTranslations,\n }\n}\n\nfunction memoize<T extends Parameters<InitI18n>[0], K extends keyof T>(\n fn: (args: T) => Promise<I18n>,\n keys: K[],\n): (args: T) => Promise<I18n> {\n const cacheMap = new Map<string, I18n>()\n\n const memoized = async (args: T) => {\n const cacheKey = keys.reduce((acc, key) => acc + String(args[key]), '')\n\n if (!cacheMap.has(cacheKey)) {\n const result = await fn(args)\n cacheMap.set(cacheKey, result)\n }\n\n return cacheMap.get(cacheKey)!\n }\n\n return memoized\n}\n\nexport const initI18n = memoize(\n async ({ config, context, language = config.fallbackLanguage }) => {\n if (!language || !config.supportedLanguages?.[language]) {\n throw new Error(`Language ${language} not supported`)\n }\n\n const translations = getTranslationsByContext(config.supportedLanguages?.[language], context)\n\n const { t, translations: mergedTranslations } = initTFunction({\n config: config as any,\n language: language || config.fallbackLanguage,\n translations: translations as any,\n })\n\n const dateFNSKey = config.supportedLanguages[language]?.dateFNSKey || 'en-US'\n\n const dateFNS = await importDateFNSLocale(dateFNSKey)\n\n const i18n: I18n = {\n dateFNS,\n dateFNSKey,\n fallbackLanguage: config.fallbackLanguage!,\n language: language || config.fallbackLanguage,\n t,\n translations: mergedTranslations,\n }\n\n return i18n\n },\n ['language', 'context'] satisfies Array<keyof Parameters<InitI18n>[0]>,\n)\n"],"names":["importDateFNSLocale","deepMergeSimple","getTranslationsByContext","getTranslationString","count","key","translations","keys","split","keySuffix","translation","reduce","acc","index","keyToUse","length","undefined","console","log","replaceVars","translationString","vars","parts","map","part","startsWith","endsWith","placeholder","substring","trim","value","join","t","initTFunction","args","config","language","mergedTranslations","memoize","fn","cacheMap","Map","memoized","cacheKey","String","has","result","set","get","initI18n","context","fallbackLanguage","supportedLanguages","Error","dateFNSKey","dateFNS","i18n"],"mappings":"AASA,SAASA,mBAAmB,QAAQ,4BAA2B;AAC/D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,wBAAwB,QAAQ,gCAA+B;AAExE;;;;;;CAMC,GACD,OAAO,MAAMC,uBAAuB,CAGlC,EACAC,KAAK,EACLC,GAAG,EACHC,YAAY,EAKb;IACC,MAAMC,OAAO,AAACF,IAA+BG,KAAK,CAAC;IACnD,IAAIC,YAAY;IAEhB,MAAMC,cAAsBH,KAAKI,MAAM,CAAC,CAACC,KAAUP,KAAKQ;QACtD,IAAI,OAAOD,QAAQ,UAAU;YAC3B,OAAOA;QACT;QAEA,IAAI,OAAOR,UAAU,UAAU;YAC7B,IAAIA,UAAU,KAAK,GAAGC,IAAI,KAAK,CAAC,IAAIO,KAAK;gBACvCH,YAAY;YACd,OAAO,IAAIL,UAAU,KAAK,GAAGC,IAAI,IAAI,CAAC,IAAIO,KAAK;gBAC7CH,YAAY;YACd,OAAO,IAAIL,UAAU,KAAK,GAAGC,IAAI,IAAI,CAAC,IAAIO,KAAK;gBAC7CH,YAAY;YACd,OAAO,IAAIL,QAAQ,KAAK,GAAGC,IAAI,KAAK,CAAC,IAAIO,KAAK;gBAC5CH,YAAY;YACd,OAAO,IAAIL,QAAQ,KAAKA,SAAS,KAAK,GAAGC,IAAI,IAAI,CAAC,IAAIO,KAAK;gBACzDH,YAAY;YACd,OAAO,IAAI,GAAGJ,IAAI,MAAM,CAAC,IAAIO,KAAK;gBAChCH,YAAY;YACd;QACF;QACA,IAAIK,WAAWT;QACf,IAAIQ,UAAUN,KAAKQ,MAAM,GAAG,KAAKN,WAAW;YAC1CK,WAAW,GAAGT,MAAMI,WAAW;QACjC;QAEA,IAAIG,OAAOE,YAAYF,KAAK;YAC1B,OAAOA,GAAG,CAACE,SAAS;QACtB;QAEA,OAAOE;IACT,GAAGV;IAEH,IAAI,CAACI,aAAa;QAChBO,QAAQC,GAAG,CAAC,kBAAkBb;IAChC;IAEA,OAAOK,eAAgBL;AACzB,EAAC;AAED;;;;;;CAMC,GACD,MAAMc,cAAc,CAAC,EACnBC,iBAAiB,EACjBC,IAAI,EAML;IACC,MAAMC,QAAQF,kBAAkBZ,KAAK,CAAC;IAEtC,OAAOc,MACJC,GAAG,CAAC,CAACC;QACJ,IAAIA,KAAKC,UAAU,CAAC,SAASD,KAAKE,QAAQ,CAAC,OAAO;YAChD,MAAMC,cAAcH,KAAKI,SAAS,CAAC,GAAGJ,KAAKT,MAAM,GAAG,GAAGc,IAAI;YAC3D,MAAMC,QAAQT,IAAI,CAACM,YAAY;YAC/B,OAAOG,UAAUd,aAAac,UAAU,OAAOA,QAAQN;QACzD,OAAO;YACL,OAAOA;QACT;IACF,GACCO,IAAI,CAAC;AACV;AAEA;;;;;;;CAOC,GACD,OAAO,SAASC,EAGd,EACA3B,GAAG,EACHC,YAAY,EACZe,IAAI,EAKL;IACC,IAAID,oBAAoBjB,qBAAqB;QAC3CC,OAAO,OAAOiB,MAAMjB,UAAU,WAAWiB,KAAKjB,KAAK,GAAGY;QACtDX;QACAC;IACF;IAEA,IAAIe,MAAM;QACRD,oBAAoBD,YAAY;YAC9BC;YACAC;QACF;IACF;IAEA,IAAI,CAACD,mBAAmB;QACtBA,oBAAoBf;IACtB;IAEA,OAAOe;AACT;AAEA,MAAMa,gBAA+B,CAACC;IACpC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE9B,YAAY,EAAE,GAAG4B;IAC3C,MAAMG,qBACJD,YAAYD,QAAQ7B,cAAc,CAAC8B,SAA6C,GAC5EnC,gBACEK,cACA6B,OAAO7B,YAAY,CAAC8B,SAA6C,IAEnE9B;IAEN,OAAO;QACL0B,GAAG,CAAC3B,KAAKgB;YACP,OAAOW,EAAE;gBACP3B;gBACAC,cAAc+B;gBACdhB;YACF;QACF;QACAf,cAAc+B;IAChB;AACF;AAEA,SAASC,QACPC,EAA8B,EAC9BhC,IAAS;IAET,MAAMiC,WAAW,IAAIC;IAErB,MAAMC,WAAW,OAAOR;QACtB,MAAMS,WAAWpC,KAAKI,MAAM,CAAC,CAACC,KAAKP,MAAQO,MAAMgC,OAAOV,IAAI,CAAC7B,IAAI,GAAG;QAEpE,IAAI,CAACmC,SAASK,GAAG,CAACF,WAAW;YAC3B,MAAMG,SAAS,MAAMP,GAAGL;YACxBM,SAASO,GAAG,CAACJ,UAAUG;QACzB;QAEA,OAAON,SAASQ,GAAG,CAACL;IACtB;IAEA,OAAOD;AACT;AAEA,OAAO,MAAMO,WAAWX,QACtB,OAAO,EAAEH,MAAM,EAAEe,OAAO,EAAEd,WAAWD,OAAOgB,gBAAgB,EAAE;IAC5D,IAAI,CAACf,YAAY,CAACD,OAAOiB,kBAAkB,EAAE,CAAChB,SAAS,EAAE;QACvD,MAAM,IAAIiB,MAAM,CAAC,SAAS,EAAEjB,SAAS,cAAc,CAAC;IACtD;IAEA,MAAM9B,eAAeJ,yBAAyBiC,OAAOiB,kBAAkB,EAAE,CAAChB,SAAS,EAAEc;IAErF,MAAM,EAAElB,CAAC,EAAE1B,cAAc+B,kBAAkB,EAAE,GAAGJ,cAAc;QAC5DE,QAAQA;QACRC,UAAUA,YAAYD,OAAOgB,gBAAgB;QAC7C7C,cAAcA;IAChB;IAEA,MAAMgD,aAAanB,OAAOiB,kBAAkB,CAAChB,SAAS,EAAEkB,cAAc;IAEtE,MAAMC,UAAU,MAAMvD,oBAAoBsD;IAE1C,MAAME,OAAa;QACjBD;QACAD;QACAH,kBAAkBhB,OAAOgB,gBAAgB;QACzCf,UAAUA,YAAYD,OAAOgB,gBAAgB;QAC7CnB;QACA1B,cAAc+B;IAChB;IAEA,OAAOmB;AACT,GACA;IAAC;IAAY;CAAU,EACxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/languages.ts"],"sourcesContent":["import type { AcceptedLanguages, LanguagePreference } from '../types.js'\n\nexport const rtlLanguages = ['ar', 'fa', 'he'] as const\n\nexport const acceptedLanguages = [\n 'ar',\n 'az',\n 'bg',\n 'ca',\n 'cs',\n 'da',\n 'de',\n 'en',\n 'es',\n 'et',\n 'fa',\n 'fr',\n 'he',\n 'hr',\n 'hu',\n 'it',\n 'ja',\n 'ko',\n 'lt',\n 'my',\n 'nb',\n 'nl',\n 'pl',\n 'pt',\n 'ro',\n 'rs',\n 'rs-latin',\n 'ru',\n 'sk',\n 'sl',\n 'sv',\n 'th',\n 'tr',\n 'uk',\n 'vi',\n 'zh',\n 'zh-TW',\n\n /**\n * Languages not implemented:\n *\n * 'af',\n * 'am',\n * 'ar-sa',\n * 'as',\n * 'az-latin',\n * 'be',\n * 'bn-BD',\n * 'bn-IN',\n * 'bs',\n * 'ca',\n * 'ca-ES-valencia',\n * 'cy',\n * 'el',\n * 'en-GB',\n * 'en-US',\n * 'es-ES',\n * 'es-US',\n * 'es-MX',\n * 'eu',\n * 'fi',\n * 'fil-Latn',\n * 'fr-FR',\n * 'fr-CA',\n * 'ga',\n * 'gd-Latn',\n * 'gl',\n * 'gu',\n * 'ha-Latn',\n * 'hi',\n * 'hy',\n * 'id',\n * 'ig-Latn',\n * 'is',\n * 'it-it',\n * 'ka',\n * 'kk',\n * 'km',\n * 'kn',\n * 'kok',\n * 'ku-Arab',\n * 'ky-Cyrl',\n * 'lb',\n * 'lv',\n * 'mi-Latn',\n * 'mk',\n * 'ml',\n * 'mn-Cyrl',\n * 'mr',\n * 'ms',\n * 'mt',\n * 'ne',\n * 'nl-BE',\n * 'nn',\n * 'nso',\n * 'or',\n * 'pa',\n * 'pa-Arab',\n * 'prs-Arab',\n * 'pt-BR',\n * 'pt-PT',\n * 'qut-Latn',\n * 'quz',\n * 'rw',\n * 'sd-Arab',\n * 'si',\n * 'sq',\n * 'sr-Cyrl-BA',\n * 'sr-Cyrl-RS',\n * 'sr-Latn-RS',\n * 'sw',\n * 'ta',\n * 'te',\n * 'tg-Cyrl',\n * 'ti',\n * 'tk-Latn',\n * 'tn',\n * 'tt-Cyrl',\n * 'ug-Arab',\n * 'ur',\n * 'uz-Latn',\n * 'wo',\n * 'xh',\n * 'yo-Latn',\n * 'zh-Hans',\n * 'zh-Hant',\n * 'zu',\n */\n] as const\n\nfunction parseAcceptLanguage(acceptLanguageHeader: string): LanguagePreference[] {\n return acceptLanguageHeader\n .split(',')\n .map((lang) => {\n const [language, quality] = lang.trim().split(';q=') as [\n AcceptedLanguages,\n string | undefined,\n ]\n return {\n language,\n quality: quality ? parseFloat(quality) : 1,\n }\n })\n .sort((a, b) => b.quality - a.quality) // Sort by quality, highest to lowest\n}\n\nexport function extractHeaderLanguage(acceptLanguageHeader: string): AcceptedLanguages | undefined {\n const parsedHeader = parseAcceptLanguage(acceptLanguageHeader)\n\n let matchedLanguage: AcceptedLanguages\n\n for (const { language } of parsedHeader) {\n if (!matchedLanguage && acceptedLanguages.includes(language)) {\n matchedLanguage = language\n }\n }\n\n return matchedLanguage\n}\n"],"names":["rtlLanguages","acceptedLanguages","parseAcceptLanguage","acceptLanguageHeader","split","map","lang","language","quality","trim","parseFloat","sort","a","b","extractHeaderLanguage","parsedHeader","matchedLanguage","includes"],"mappings":"AAEA,OAAO,MAAMA,eAAe;IAAC;IAAM;IAAM;CAAK,CAAS;AAEvD,OAAO,MAAMC,oBAAoB;IAC/B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CA4FD,CAAS;AAEV,SAASC,oBAAoBC,oBAA4B;IACvD,OAAOA,qBACJC,KAAK,CAAC,KACNC,GAAG,CAAC,CAACC;QACJ,MAAM,CAACC,UAAUC,QAAQ,GAAGF,KAAKG,IAAI,GAAGL,KAAK,CAAC;QAI9C,OAAO;YACLG;YACAC,SAASA,UAAUE,WAAWF,WAAW;QAC3C;IACF,GACCG,IAAI,CAAC,CAACC,GAAGC,IAAMA,EAAEL,OAAO,GAAGI,EAAEJ,OAAO,EAAE,qCAAqC;;AAChF;AAEA,OAAO,SAASM,sBAAsBX,oBAA4B;IAChE,MAAMY,eAAeb,oBAAoBC;IAEzC,IAAIa;IAEJ,KAAK,MAAM,EAAET,QAAQ,EAAE,IAAIQ,aAAc;QACvC,IAAI,CAACC,mBAAmBf,kBAAkBgB,QAAQ,CAACV,WAAW;YAC5DS,kBAAkBT;QACpB;IACF;IAEA,OAAOS;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/languages.ts"],"sourcesContent":["import type { AcceptedLanguages, LanguagePreference } from '../types.js'\n\nexport const rtlLanguages = ['ar', 'fa', 'he'] as const\n\nexport const acceptedLanguages = [\n 'ar',\n 'az',\n 'bg',\n 'ca',\n 'cs',\n 'da',\n 'de',\n 'en',\n 'es',\n 'et',\n 'fa',\n 'fr',\n 'he',\n 'hr',\n 'hu',\n 'it',\n 'ja',\n 'ko',\n 'lt',\n 'my',\n 'nb',\n 'nl',\n 'pl',\n 'pt',\n 'ro',\n 'rs',\n 'rs-latin',\n 'ru',\n 'sk',\n 'sl',\n 'sv',\n 'th',\n 'tr',\n 'uk',\n 'vi',\n 'zh',\n 'zh-TW',\n\n /**\n * Languages not implemented:\n *\n * 'af',\n * 'am',\n * 'ar-sa',\n * 'as',\n * 'az-latin',\n * 'be',\n * 'bn-BD',\n * 'bn-IN',\n * 'bs',\n * 'ca',\n * 'ca-ES-valencia',\n * 'cy',\n * 'el',\n * 'en-GB',\n * 'en-US',\n * 'es-ES',\n * 'es-US',\n * 'es-MX',\n * 'eu',\n * 'fi',\n * 'fil-Latn',\n * 'fr-FR',\n * 'fr-CA',\n * 'ga',\n * 'gd-Latn',\n * 'gl',\n * 'gu',\n * 'ha-Latn',\n * 'hi',\n * 'hy',\n * 'id',\n * 'ig-Latn',\n * 'is',\n * 'it-it',\n * 'ka',\n * 'kk',\n * 'km',\n * 'kn',\n * 'kok',\n * 'ku-Arab',\n * 'ky-Cyrl',\n * 'lb',\n * 'lv',\n * 'mi-Latn',\n * 'mk',\n * 'ml',\n * 'mn-Cyrl',\n * 'mr',\n * 'ms',\n * 'mt',\n * 'ne',\n * 'nl-BE',\n * 'nn',\n * 'nso',\n * 'or',\n * 'pa',\n * 'pa-Arab',\n * 'prs-Arab',\n * 'pt-BR',\n * 'pt-PT',\n * 'qut-Latn',\n * 'quz',\n * 'rw',\n * 'sd-Arab',\n * 'si',\n * 'sq',\n * 'sr-Cyrl-BA',\n * 'sr-Cyrl-RS',\n * 'sr-Latn-RS',\n * 'sw',\n * 'ta',\n * 'te',\n * 'tg-Cyrl',\n * 'ti',\n * 'tk-Latn',\n * 'tn',\n * 'tt-Cyrl',\n * 'ug-Arab',\n * 'ur',\n * 'uz-Latn',\n * 'wo',\n * 'xh',\n * 'yo-Latn',\n * 'zh-Hans',\n * 'zh-Hant',\n * 'zu',\n */\n] as const\n\nfunction parseAcceptLanguage(acceptLanguageHeader: string): LanguagePreference[] {\n return acceptLanguageHeader\n .split(',')\n .map((lang) => {\n const [language, quality] = lang.trim().split(';q=') as [\n AcceptedLanguages,\n string | undefined,\n ]\n return {\n language,\n quality: quality ? parseFloat(quality) : 1,\n }\n })\n .sort((a, b) => b.quality - a.quality) // Sort by quality, highest to lowest\n}\n\nexport function extractHeaderLanguage(acceptLanguageHeader: string): AcceptedLanguages | undefined {\n const parsedHeader = parseAcceptLanguage(acceptLanguageHeader)\n\n let matchedLanguage: AcceptedLanguages | undefined\n\n for (const { language } of parsedHeader) {\n if (!matchedLanguage && acceptedLanguages.includes(language)) {\n matchedLanguage = language\n }\n }\n\n return matchedLanguage\n}\n"],"names":["rtlLanguages","acceptedLanguages","parseAcceptLanguage","acceptLanguageHeader","split","map","lang","language","quality","trim","parseFloat","sort","a","b","extractHeaderLanguage","parsedHeader","matchedLanguage","includes"],"mappings":"AAEA,OAAO,MAAMA,eAAe;IAAC;IAAM;IAAM;CAAK,CAAS;AAEvD,OAAO,MAAMC,oBAAoB;IAC/B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CA4FD,CAAS;AAEV,SAASC,oBAAoBC,oBAA4B;IACvD,OAAOA,qBACJC,KAAK,CAAC,KACNC,GAAG,CAAC,CAACC;QACJ,MAAM,CAACC,UAAUC,QAAQ,GAAGF,KAAKG,IAAI,GAAGL,KAAK,CAAC;QAI9C,OAAO;YACLG;YACAC,SAASA,UAAUE,WAAWF,WAAW;QAC3C;IACF,GACCG,IAAI,CAAC,CAACC,GAAGC,IAAMA,EAAEL,OAAO,GAAGI,EAAEJ,OAAO,EAAE,qCAAqC;;AAChF;AAEA,OAAO,SAASM,sBAAsBX,oBAA4B;IAChE,MAAMY,eAAeb,oBAAoBC;IAEzC,IAAIa;IAEJ,KAAK,MAAM,EAAET,QAAQ,EAAE,IAAIQ,aAAc;QACvC,IAAI,CAACC,mBAAmBf,kBAAkBgB,QAAQ,CAACV,WAAW;YAC5DS,kBAAkBT;QACpB;IACF;IAEA,OAAOS;AACT"}
|