国際化 (i18n)

GunjoUI は日本語ブランドのキットですが、shadcn 由来の一部の組み込み文字列(DataTable の「No results.」/ 検索プレースホルダ / ページャなど)は英語が既定です。LocaleProvider を一度かぶせるだけで、それらをまとめて切り替えられます。

ライブデモ

ロケールを切り替えると、下の実コンポーネントの組み込み文字列がその場で入れ替わります(アプリの再読み込みは不要)。

デモのロケール
locale="ja"

検索入力(searchPlaceholder)

データテーブルの空表示(noResults / filterPlaceholder / ページャ)

0 - 0 / 0
該当なし
1 / 1
import { LocaleProvider } from "@gunjo/ui"

// Wrap the app once. locale="ja" switches every built-in string;
// with no provider mounted, components keep their English default.
<LocaleProvider locale="ja">
  <App />
</LocaleProvider>

優先順位(上書き)

解決順は「インスタンスの prop > プロバイダのバンドル > 組み込み既定」。個別インスタンスで文言を渡すと、プロバイダの言語より優先されます。下の2つ目の入力はロケールを切り替えても固定のままです。

プロバイダに従う

インスタンス prop が優先

// Precedence: per-instance prop > provider bundle > built-in default.
<LocaleProvider locale="ja">
  {/* follows the provider → 検索… */}
  <SearchInput />
  {/* instance prop wins → stays fixed */}
  <SearchInput placeholder="固定プレースホルダ" />
</LocaleProvider>

カバー範囲

LocaleProvider は横断的な組み込み文字列(noResults・検索/絞り込みプレースホルダ・rowsPerPage・previous/next・close/open・コマンド空表示など)を en/ja で提供します。DataTable / Combobox / SearchInput / CommandPalette / SearchableAccordion / MediaPickerDialog / Dialog / Sheet / Modal / PageAside / Accordion などが読み取ります。

部品固有の文言(ActionQueue の重大度ラベル、EventCalendar の月見出し / 日ラベル書式、ScanGate の手順ラベル、TicketStub のコード alt など)は、グローバルバンドルではなく各コンポーネントのインスタンス上書き prop(severityLabels / formatMonthTitle / formatDayLabel / stepsLabel / formatCodeAlt)で上書きします。既定は日本語のままです。

API

表は横にスクロールできます
プロパティ初期値説明
locale"en" | "ja""en"有効なロケール。組み込みバンドル(en/ja)を選びます。既定は en(=プロバイダ未マウント時と同じ後方互換の挙動)。
stringsPartial<LocaleStrings>-選択中バンドルの上に、個別の文字列だけを上書きします(例: 独自の「該当なし」文言)。per-instance の component prop はこれより優先されます。
useLocale()() => { locale, strings }-有効なロケールと文字列バンドルを読むフック。プロバイダ未マウントでも en バンドルを返し、決して throw しません。
useLocaleStrings()() => LocaleStrings-有効な文字列バンドルだけを読むショートカット。