useLocale
useLocale() trả về { locale, t }. locale là locale thực sự load cho surface. t(key, values) đọc message file đã khai báo và interpolate named values; key app bị thiếu fallback sang shell translator.
import { useLocale } from '@sota/platform';
export function Greeting({ name }: { name: string }) {
const { locale, t } = useLocale();
return <p lang={locale}>{t('greeting', { name })}</p>;
}locales:
default: en
files:
en: src/locales/en.json
vi: src/locales/vi.jsonsrc/locales/en.json
{ "greeting": "Hello, {{name}}" }src/locales/vi.json
{ "greeting": "Xin chào, {{name}}" }Locale được chọn fallback theo contract locale của app; key thiếu trong app tiếp tục được đưa cho shell translator. Nếu label thiết yếu bị thiếu ở cả hai nơi, component vẫn nên có fallback hợp lý. Không nhét business data vào translation và luôn có accessible fallback text.