PHP 8.2.30
Preview: adminjs.i18n.ts Size: 1.86 KB
//proc/thread-self/root/home/byroehnu/.trash/node_modules11/adminjs/src/frontend/utils/adminjs.i18n.ts

/* eslint-disable function-paren-newline */
/* eslint-disable implicit-arrow-linebreak */
import i18n, { InitOptions } from 'i18next'
import LanguageDetector from 'i18next-browser-languagedetector'
import Backend from 'i18next-http-backend'
import intersection from 'lodash/intersection.js'
import merge from 'lodash/merge.js'
import { initReactI18next } from 'react-i18next'
import { defaultConfig, DEFAULT_NS, Locale, locales } from '../../locale/index.js'
import { flat } from '../../utils/flat/index.js'

/**
  Initializes i18n translations based on provided configuration.
  @function
  @param {Locale} config - The configuration object for initializing i18n
  @returns {{i18n: i18next}} - An object containing an i18n instance.
*/
const initTranslations = (config: Locale) => {
  const {
    language = 'en',
    availableLanguages = [],
    translations,
    localeDetection = false,
    withBackend = false,
    ...i18nConfig
  } = config

  const combinedConfig: InitOptions = merge(defaultConfig, i18nConfig, {
    supportedLngs: availableLanguages,
    fallbackLng: i18nConfig.fallbackLng || language,
  })

  const instance = i18n.createInstance(combinedConfig)

  if (!instance.isInitialized) {
    if (localeDetection) {
      instance.use(LanguageDetector as any)
    }

    if (withBackend) {
      instance.use(Backend)
    }
    instance.use(initReactI18next).init(combinedConfig)
  }

  const buildInTranslations = intersection(Object.keys(locales), availableLanguages)
  if (buildInTranslations.length) {
    buildInTranslations.forEach((lang) =>
      instance.addResourceBundle(lang, DEFAULT_NS, flat.flatten(locales[lang])),
    )
  }

  if (translations) {
    Object.keys(translations).forEach((lang) =>
      instance.addResourceBundle(lang, DEFAULT_NS, flat.flatten(translations[lang]), true, true),
    )
  }

  return { i18n: instance }
}
export default initTranslations

Directory Contents

Dirs: 0 × Files: 5

Name Size Perms Modified Actions
1.86 KB lrw-r--r-- 2026-02-28 00:31:58
Edit Download
7.83 KB lrw-r--r-- 2026-02-28 00:32:00
Edit Download
352 B lrw-r--r-- 2026-02-28 00:32:04
Edit Download
110 B lrw-r--r-- 2026-02-28 00:32:28
Edit Download
2.26 KB lrw-r--r-- 2026-02-28 00:32:38
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).