Static dictionary (i18n.ts CAR_TRANSLATIONS) already covers all terms. DB translations table had only 179 entries used as fallback and was never actually reached. Simplifies useTranslate hook to static-only. DB table preserved for safety. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import { useCallback } from 'react';
|
|
import { useLanguageStore, translateCarName, Language } from './i18n';
|
|
|
|
export function useTranslate() {
|
|
const { language } = useLanguageStore();
|
|
|
|
// Translate a single text using static dictionary
|
|
const translate = useCallback((text: string | undefined | null): string => {
|
|
if (!text) return '';
|
|
if (language === 'ko') return text; // Korean is source, no translation needed
|
|
|
|
return translateCarName(text, language as Language);
|
|
}, [language]);
|
|
|
|
// Translate car object fields
|
|
const translateCar = useCallback((car: {
|
|
car_name?: string;
|
|
fuel?: string;
|
|
transmission?: string;
|
|
color?: string;
|
|
maker?: { name: string };
|
|
model?: { name: string };
|
|
}) => {
|
|
return {
|
|
car_name: translate(car.car_name),
|
|
fuel: translate(car.fuel),
|
|
transmission: translate(car.transmission),
|
|
color: translate(car.color),
|
|
maker_name: translate(car.maker?.name),
|
|
model_name: translate(car.model?.name),
|
|
};
|
|
}, [translate]);
|
|
|
|
// Kept for API compatibility - static translations are synchronous, so this is a no-op
|
|
const preloadCarTranslations = useCallback(async (_cars: Array<{
|
|
car_name?: string;
|
|
fuel?: string;
|
|
transmission?: string;
|
|
color?: string;
|
|
maker?: { name: string };
|
|
model?: { name: string };
|
|
}>) => {
|
|
// No-op: static dictionary translations are synchronous
|
|
}, []);
|
|
|
|
return {
|
|
translate,
|
|
translateCar,
|
|
preloadCarTranslations,
|
|
loading: false,
|
|
};
|
|
}
|