Files
directus/app/src/lang/set-language.ts
Nicola Krumschmidt 7bf90efa62 Add support for a package extension bundle type (#15672)
* Add bundle type to constants and types

* Add support for API bundle extensions

* Rename generateExtensionsEntry to generateExtensionsEntrypoint

* Add support for App bundle extensions

* Refactor App extension registration

* Replace extensions inject with useExtensions()

* Replace getInterfaces() with useExtensions()

* Replace getDisplays() with useExtensions()

* Replace getLayouts() with useExtensions()

* Replace getModules() with useExtensions()

* Replace getPanels() with useExtensions()

* Replace getOperations() with useExtensions()

* Add useExtension() composable

* Replace useExtensions() with useExtension() where applicable

* Remove interface getters

* Remove display getters

* Remove layout getters

* Remove module getter

* Remove panel getters

* Remove operation getters

* Rename extension register.ts files to index.ts

* Perform module pre register check in parallel

* Remove Refs from AppExtensionConfigs type

* Remove old extension shims

* Ensure registration of modules is awaited when hydrating

* Add support for scaffolding package extensions

* Add support for building bundle extensions

* Add JsonValue type

* Use json for complex command line flags

* Load internal extensions if custom ones are not available

* Fix extension manifest validation for pack extensions

* Fix tests in shared

* Add SplitEntrypoint type

* Move command specific utils to helpers

* Add SDK version getter

* Move extension dev deps generation to helpers

* Move template path to getter util

* Move template copying to a helper

* Only rename copied template files

* Add directus-extension add command

* Convert provided extension source path to url

* Replace deprecated import.meta.globEager

* Mock URL.createObjectURL to make App unit tests pass

* Update rollup-plugin-typescript2

* indentation

* sort vite glob imported modules

* fix unintentional wrong commit

* Simplify app extension import logic

* reinstall @rollup/plugin-virtual

* add test for getInterfaces() expected sort order

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2022-11-16 11:28:52 -05:00

41 lines
1.4 KiB
TypeScript

import { useCollectionsStore } from '@/stores/collections';
import { useFieldsStore } from '@/stores/fields';
import availableLanguages from './available-languages.yaml';
import { i18n, Language, loadedLanguages } from './index';
import { useTranslationStrings } from '@/composables/use-translation-strings';
import { loadDateFNSLocale } from '@/utils/get-date-fns-locale';
export async function setLanguage(lang: Language): Promise<boolean> {
const collectionsStore = useCollectionsStore();
const fieldsStore = useFieldsStore();
const { mergeTranslationStringsForLanguage } = useTranslationStrings();
if (Object.keys(availableLanguages).includes(lang) === false) {
// eslint-disable-next-line no-console
console.warn(`"${lang}" is not an available language in the Directus app.`);
} else {
if (loadedLanguages.includes(lang) === false) {
try {
const { default: translations } = await import(`./translations/${lang}.yaml`);
i18n.global.mergeLocaleMessage(lang, translations);
loadedLanguages.push(lang);
} catch (err: any) {
// eslint-disable-next-line no-console
console.warn(err);
}
}
i18n.global.locale.value = lang;
(document.querySelector('html') as HTMLElement).setAttribute('lang', lang);
}
collectionsStore.translateCollections();
fieldsStore.translateFields();
mergeTranslationStringsForLanguage(lang);
await loadDateFNSLocale(lang);
return true;
}