mirror of
https://github.com/directus/directus.git
synced 2026-04-25 03:00:53 -04:00
* 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>
41 lines
1.4 KiB
TypeScript
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;
|
|
}
|