---
title: "useLocale"
description: "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 s…"
url: "https://sotaagents.ai/vi/manual/developer-guide/use-locale"
generated_by: "sotaagents-ldp"
docs_index: "https://sotaagents.ai/manual/llms.txt"
locale: "vi"
---

# 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.

TSX

```
import { useLocale } from '@sota/platform';

export function Greeting({ name }: { name: string }) {
  const { locale, t } = useLocale();
  return <p lang={locale}>{t('greeting', { name })}</p>;
}
```

YAML

```yaml
locales:
  default: en
  files:
    en: src/locales/en.json
    vi: src/locales/vi.json
```

`src/locales/en.json`

JSON

```json
{ "greeting": "Hello, {{name}}" }
```

`src/locales/vi.json`

JSON

```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.
