aboutsummaryrefslogtreecommitdiffstats
path: root/apps/settings/src/composables/useGetLocalizedValue.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/settings/src/composables/useGetLocalizedValue.ts')
-rw-r--r--apps/settings/src/composables/useGetLocalizedValue.ts29
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))
+}