🌍 fix: Enhance i18n Support & Optimize Category Handling (#5866)

* fix: Missing Translations in Prompt Filters in Prompt Library

* fix: fixed issue with `zh`
feat: added `Estonian` language option

* fix: test for `i18n.ts`

* refactor: `pt` --> `pt-BR` and `pt-PT`

* feat: request access to another language. default is only one language during invite.
This commit is contained in:
Ruben Talstra 2025-02-14 14:30:27 +01:00 committed by GitHub
parent 52a6de2aa7
commit 04c2a5abe7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
33 changed files with 819 additions and 41 deletions

View file

@ -1,16 +1,16 @@
import { useGetCategories } from '~/data-provider';
import CategoryIcon from '~/components/Prompts/Groups/CategoryIcon';
import useLocalize from '~/hooks/useLocalize';
import useLocalize, { TranslationKeys } from '~/hooks/useLocalize';
const loadingCategories = [
const loadingCategories: { label: TranslationKeys; value: string }[] = [
{
label: 'Loading...',
label: 'com_ui_loading',
value: '',
},
] as undefined | { label: string; value: string }[];
];
const emptyCategory = {
label: '-',
const emptyCategory: { label: TranslationKeys; value: string } = {
label: 'com_ui_empty_category',
value: '',
};
@ -19,7 +19,7 @@ const useCategories = (className = '') => {
const { data: categories = loadingCategories } = useGetCategories({
select: (data) =>
data.map((category) => ({
label: localize(`com_ui_${category.label}`) || category.label,
label: localize(category.label as TranslationKeys),
value: category.value,
icon: category.value ? (
<CategoryIcon category={category.value} className={className} />

View file

@ -1,9 +1,9 @@
import { useEffect, useCallback } from 'react';
import { useEffect } from 'react';
import { TOptions } from 'i18next';
import { useRecoilValue } from 'recoil';
import { useTranslation } from 'react-i18next';
import { TOptions } from 'i18next';
import store from '~/store';
import { resources } from '~/locales/i18n';
import store from '~/store';
export type TranslationKeys = keyof typeof resources.en.translation;
@ -17,10 +17,5 @@ export default function useLocalize() {
}
}, [lang, i18n]);
const memoizedLocalize = useCallback(
(phraseKey: TranslationKeys, options?: TOptions) => t(phraseKey, options),
[t],
);
return memoizedLocalize;
}
return (phraseKey: TranslationKeys, options?: TOptions) => t(phraseKey, options);
}