diff options
Diffstat (limited to 'apps/settings/src/composables/useGetLocalizedValue.ts')
-rw-r--r-- | apps/settings/src/composables/useGetLocalizedValue.ts | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/apps/settings/src/composables/useGetLocalizedValue.ts b/apps/settings/src/composables/useGetLocalizedValue.ts new file mode 100644 index 00000000000..a8a6f39f380 --- /dev/null +++ b/apps/settings/src/composables/useGetLocalizedValue.ts @@ -0,0 +1,29 @@ +/** + * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +import type { ILocalizedValue } from '../constants/AppDiscoverTypes' + +import { getLanguage } from '@nextcloud/l10n' +import { computed, type Ref } from 'vue' + +/** + * Helper to get the localized value for the current users language + * @param dict The dictionary to get the value from + * @param language The language to use + */ +const getLocalizedValue = <T, >(dict: ILocalizedValue<T>, language: string) => dict[language] ?? dict[language.split('_')[0]] ?? dict.en ?? null + +/** + * Get the localized value of the dictionary provided + * @param dict Dictionary + * @return String or null if invalid dictionary + */ +export const useLocalizedValue = <T, >(dict: Ref<ILocalizedValue<T|undefined>|undefined|null>) => { + /** + * Language of the current user + */ + const language = getLanguage() + + return computed(() => !dict?.value ? null : getLocalizedValue<T>(dict.value as ILocalizedValue<T>, language)) +} |