1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-25 22:46:31 -04:00
Files
Sonarr/frontend/src/Language/useLanguageName.ts
T
2026-03-01 09:04:19 -08:00

59 lines
1.2 KiB
TypeScript

import moment from 'moment';
import { useCallback, useEffect } from 'react';
import useApiQuery from 'Helpers/Hooks/useApiQuery';
interface LanguageResponse {
identifier: string;
}
function getDisplayName(code: string) {
return Intl.DisplayNames
? new Intl.DisplayNames([code], { type: 'language' })
: null;
}
export const useLanguage = () => {
return useApiQuery<LanguageResponse>({
path: '/localization/language',
queryOptions: {
staleTime: Infinity,
gcTime: Infinity,
},
});
};
export const useInitializeLanguage = () => {
const { data } = useLanguage();
useEffect(() => {
moment.locale(data?.identifier);
}, [data]);
};
const useLanguageName = () => {
const { data } = useLanguage();
const getLanguageName = useCallback(
(code: string): string => {
const languageNames = data?.identifier
? getDisplayName(data.identifier)
: getDisplayName('en');
if (!languageNames) {
return code;
}
try {
return languageNames.of(code) ?? code;
} catch {
return code;
}
},
[data]
);
return getLanguageName;
};
export default useLanguageName;