Files
octto-engenharia/frontend/src/lib/i18n.ts

45 lines
1.2 KiB
TypeScript

export const locales = ['pt', 'en', 'es'] as const;
export type Locale = (typeof locales)[number];
export const defaultLocale: Locale = 'pt';
export const localeNames: Record<Locale, string> = {
pt: 'Português',
en: 'English',
es: 'Español',
};
export const localeFlags: Record<Locale, string> = {
pt: '🇧🇷',
en: '🇺🇸',
es: '🇪🇸',
};
// Função para carregar traduções
export async function getTranslations(locale: Locale) {
try {
const translations = await import(`@/locales/${locale}.json`);
return translations.default;
} catch {
// Fallback para português
const translations = await import(`@/locales/pt.json`);
return translations.default;
}
}
// Função para obter tradução por chave (ex: "nav.home")
export function getNestedValue(obj: Record<string, unknown>, path: string): string {
const keys = path.split('.');
let current: unknown = obj;
for (const key of keys) {
if (current && typeof current === 'object' && key in current) {
current = (current as Record<string, unknown>)[key];
} else {
return path; // Retorna a chave se não encontrar
}
}
return typeof current === 'string' ? current : path;
}