diff --git a/src/components/About/AboutModal.tsx b/src/components/About/AboutModal.tsx
index bd51bddc0..add258043 100644
--- a/src/components/About/AboutModal.tsx
+++ b/src/components/About/AboutModal.tsx
@@ -1,4 +1,3 @@
-import Image from 'next/image';
import {
ActionIcon,
Badge,
@@ -18,7 +17,9 @@ import {
IconVocabulary,
IconWorldWww,
} from '@tabler/icons';
+import { InitOptions } from 'i18next';
import { i18n } from 'next-i18next';
+import Image from 'next/image';
import { ReactNode } from 'react';
import { CURRENT_VERSION } from '../../../data/constants';
import { usePrimaryGradient } from '../layout/useGradient';
@@ -118,13 +119,44 @@ interface InformationTableItem {
content: ReactNode;
}
+interface ExtendedInitOptions extends InitOptions {
+ locales: string[];
+}
+
const useInformationTableItems = (): InformationTableItem[] => {
const colorGradiant = usePrimaryGradient();
- const usedI18nNamespaces = i18n?.reportNamespaces?.getUsedNamespaces();
- const configuredi18nLocales: string[] = i18n?.options.locales;
+ let items: InformationTableItem[] = [];
- return [
+ if (i18n !== null) {
+ const usedI18nNamespaces = i18n.reportNamespaces.getUsedNamespaces();
+ const initOptions = i18n.options as ExtendedInitOptions;
+
+ items = [
+ ...items,
+ {
+ icon: ,
+ label: 'Loaded I18n translation namespaces',
+ content: (
+
+ {usedI18nNamespaces.length}
+
+ ),
+ },
+ {
+ icon: ,
+ label: 'Configured I18n locales',
+ content: (
+
+ {initOptions.locales.length}
+
+ ),
+ },
+ ];
+ }
+
+ items = [
+ ...items,
{
icon: ,
label: 'Homarr version',
@@ -134,25 +166,9 @@ const useInformationTableItems = (): InformationTableItem[] => {
),
},
- {
- icon: ,
- label: 'Loaded I18n translation namespaces',
- content: (
-
- {usedI18nNamespaces?.length ?? 'loading'}
-
- ),
- },
- {
- icon: ,
- label: 'Configured I18n locales',
- content: (
-
- {configuredi18nLocales?.length ?? 'loading'}
-
- ),
- },
];
+
+ return items;
};
const useStyles = createStyles(() => ({