@pagamio/frontend-commons-lib
Version:
Pagamio library for Frontend reusable components like the form engine and table container
47 lines (46 loc) • 1.68 kB
JavaScript
import { useEffect, useState } from 'react';
import { useTranslation } from './useTranslation';
// Default English translations as fallback
const defaultTranslations = {
changePassword: 'Change Password',
signOut: 'Sign Out',
search: 'Search...',
cancel: 'Cancel',
submit: 'Submit',
save: 'Save',
};
/**
* Hook for accessing library-specific translations
*/
export const useLibTranslations = () => {
const { t, locale } = useTranslation();
const [libTranslations, setLibTranslations] = useState(defaultTranslations);
// Load library translations based on current locale
useEffect(() => {
// Dynamic import of library locale files based on current language
import(`../locales/${locale}.json`)
.then((translations) => {
setLibTranslations((prev) => ({
...prev,
...translations.default, // Extract keys that match LibTranslationKey
}));
})
.catch((error) => {
console.warn(`Failed to load library translations for ${locale}, using fallbacks`, error);
});
}, [locale]);
const tLib = (key, defaultValue, variables) => {
// First check in library translations
if (libTranslations[key]) {
return libTranslations[key];
}
// Fall back to default library translations
if (defaultTranslations[key]) {
return defaultTranslations[key];
}
// As a last resort, try the general translation system
// Return the translated text or key as final fallback
return t(key, defaultValue, variables);
};
return { tLib };
};