k8ordo
  • UI
  • Form
  • State
  • Router
  • Static
  • Server
ダークモードに切り替え
  • Get Started
  • Theming
  • i18n
  • Components
  • Hooks
  • Helpers
  • AI
k8ordo

Baselineに入った機能を、制限なく使うReactのライブラリ群。

パッケージ
  • @k8ordo/ui
  • @k8ordo/form
  • @k8ordo/state
  • @k8ordo/router
  • @k8ordo/static
  • @k8ordo/server
UI
  • Get Started
  • Theming
  • i18n
  • Components
  • Hooks
  • Helpers
  • AIチャット
  • Generative UI
  • AIエージェント
  • Storybook
リソース
  • GitHub
  • npm

© 2026 k8o — MIT License

組版 — Noto Sans JP / M PLUS 2

i18n

コンポーネントが自前で描画する文言(閉じるボタンのラベル、必須バッジ、読み込み中の読み上げなど)は文言辞書から引かれます。辞書を差し替えれば、アプリのコードを変えずに言語や語彙を切り替えられます。

既定は日本語

設定は不要です。UIProviderを置くだけで日本語の辞書が使われ、Providerを置いていない場合も同じ日本語にフォールバックします。

英語に切り替える

@k8ordo/ui/i18nからenを読み込み、messagesに渡します。jaも同じ場所から読み込めます。

一部だけ差し替える

messagesはPartial<Messages> です。渡したキーだけが上書きされ、残りは日本語の既定辞書で埋まります。英語をベースに一部だけ変えたいときはenを展開してから重ねます。

優先順位

同じ文言を決める経路は3つあり、prop > 辞書 > 既定 の順に強くなります。個別のprops(Spinnerのlabelなど)は常に辞書より優先されるので、1箇所だけ違う文言にしたいときはそちらを使ってください。

独自の辞書を作る

Messages型を注釈すれば、キーの過不足はコンパイル時に検出されます。ライブラリにキーが増えたときも型エラーで気付けます。

キー一覧

Messagesが持つキーの全てです。値はライブラリの辞書そのものを読み込んで表示しています。

close
使うコンポーネント: Alert / Dialog / Drawer
ja(既定): 閉じる
en: Close
required
使うコンポーネント: FormControl
ja(既定): 必須
en: Required
loading
使うコンポーネント: Spinner
ja(既定): 読み込み中
en: Loading
avatar
使うコンポーネント: Avatar
ja(既定): アバター
en: Avatar
color
使うコンポーネント: Code
ja(既定): 色
en: Color
alertSuccess
使うコンポーネント: Alert
ja(既定): 成功
en: Success
alertInfo
使うコンポーネント: Alert
ja(既定): 情報
en: Information
alertWarning
使うコンポーネント: Alert
ja(既定): 警告
en: Warning
alertError
使うコンポーネント: Alert
ja(既定): エラー
en: Error
toastRegion
使うコンポーネント: Toast
ja(既定): 通知
en: Notifications
autocompletePlaceholder
使うコンポーネント: Autocomplete
ja(既定): 入力して絞り込めます
en: Type to filter
autocompleteRemoveTag
使うコンポーネント: Autocomplete
ja(既定): タグを削除
en: Remove tag
autocompleteClear
使うコンポーネント: Autocomplete
ja(既定): すべて削除
en: Clear all
autocompleteEmpty
使うコンポーネント: Autocomplete
ja(既定): 該当なし
en: No results
fileFieldRemove
使うコンポーネント: FileField
ja(既定): ファイルを削除
en: Remove file
fileFieldTrigger
使うコンポーネント: FileField(生成 UI)
ja(既定): ファイルを選択
en: Select files
numberFieldIncrement
使うコンポーネント: NumberField
ja(既定): 増やす
en: Increase
numberFieldDecrement
使うコンポーネント: NumberField
ja(既定): 減らす
en: Decrease
passwordShow
使うコンポーネント: PasswordInput
ja(既定): パスワードを表示
en: Show password
passwordHide
使うコンポーネント: PasswordInput
ja(既定): パスワードを非表示
en: Hide password
listBoxPlaceholder
使うコンポーネント: ListBox
ja(既定): 選択してください
en: Select an option
breadcrumb
使うコンポーネント: Breadcrumb
ja(既定): パンくずリスト
en: Breadcrumb
tabList
使うコンポーネント: Tabs(生成 UI)
ja(既定): タブ
en: Tabs
paginationLabel
使うコンポーネント: Pagination
ja(既定): ページネーション
en: Pagination
paginationPrevious
使うコンポーネント: Pagination
ja(既定): 前へ
en: Previous
paginationNext
使うコンポーネント: Pagination
ja(既定): 次へ
en: Next
chat
使うコンポーネント: Conversation.Messages
ja(既定): チャット
en: Chat
scrollToLatest
使うコンポーネント: Conversation.ScrollButton
ja(既定): 最新のメッセージへ移動
en: Scroll to latest message
reasoning
使うコンポーネント: Reasoning
ja(既定): 思考の過程
en: Reasoning
reasoningStreaming
使うコンポーネント: Reasoning
ja(既定): 思考中…
en: Thinking…
suggestions
使うコンポーネント: Suggestion.List
ja(既定): 候補
en: Suggestions
send
使うコンポーネント: PromptInput
ja(既定): 送信
en: Send
stop
使うコンポーネント: PromptInput
ja(既定): 停止
en: Stop
toolInput
使うコンポーネント: ToolInvocation
ja(既定): 入力
en: Input
toolOutput
使うコンポーネント: ToolInvocation
ja(既定): 出力
en: Output
toolError
使うコンポーネント: ToolInvocation
ja(既定): ツールの実行でエラーが発生しました。
en: The tool failed to run.
toolDenied
使うコンポーネント: ToolInvocation
ja(既定): ツールの実行は許可されませんでした。
en: The tool run was not approved.
responseCopied
使うコンポーネント: Response
ja(既定): コピーしました
en: Copied
responseCopyCode
使うコンポーネント: Response
ja(既定): コードをコピー
en: Copy code
responseCopyLink
使うコンポーネント: Response
ja(既定): リンクをコピー
en: Copy link
responseCopyTable
使うコンポーネント: Response
ja(既定): 表をコピー
en: Copy table
responseCopyTableAsCsv
使うコンポーネント: Response
ja(既定): 表を CSV でコピー
en: Copy table as CSV
responseCopyTableAsMarkdown
使うコンポーネント: Response
ja(既定): 表を Markdown でコピー
en: Copy table as Markdown
responseCopyTableAsTsv
使うコンポーネント: Response
ja(既定): 表を TSV でコピー
en: Copy table as TSV
responseDownloadDiagram
使うコンポーネント: Response
ja(既定): 図をダウンロード
en: Download diagram
responseDownloadDiagramAsMmd
使うコンポーネント: Response
ja(既定): 図を MMD でダウンロード
en: Download diagram as MMD
responseDownloadDiagramAsPng
使うコンポーネント: Response
ja(既定): 図を PNG でダウンロード
en: Download diagram as PNG
responseDownloadDiagramAsSvg
使うコンポーネント: Response
ja(既定): 図を SVG でダウンロード
en: Download diagram as SVG
responseDownloadFile
使うコンポーネント: Response
ja(既定): ファイルをダウンロード
en: Download file
responseDownloadImage
使うコンポーネント: Response
ja(既定): 画像をダウンロード
en: Download image
responseDownloadTable
使うコンポーネント: Response
ja(既定): 表をダウンロード
en: Download table
responseDownloadTableAsCsv
使うコンポーネント: Response
ja(既定): 表を CSV でダウンロード
en: Download table as CSV
responseDownloadTableAsMarkdown
使うコンポーネント: Response
ja(既定): 表を Markdown でダウンロード
en: Download table as Markdown
responseExitFullscreen
使うコンポーネント: Response
ja(既定): 全画面表示を終了
en: Exit fullscreen
responseViewFullscreen
使うコンポーネント: Response
ja(既定): 全画面表示
en: View fullscreen
responseImageNotAvailable
使うコンポーネント: Response
ja(既定): 画像を表示できません
en: Image not available
responseOpenExternalLink
使うコンポーネント: Response
ja(既定): 外部リンクを開きますか?
en: Open external link?
responseExternalLinkWarning
使うコンポーネント: Response
ja(既定): 外部サイトに移動しようとしています。
en: You're about to visit an external website.
responseOpenLink
使うコンポーネント: Response
ja(既定): リンクを開く
en: Open link
キー使うコンポーネントja(既定)en
closeAlert / Dialog / Drawer閉じるClose
requiredFormControl必須Required
loadingSpinner読み込み中Loading
avatarAvatarアバターAvatar
colorCode色Color
alertSuccessAlert成功Success
alertInfoAlert情報Information
alertWarningAlert警告Warning
alertErrorAlertエラーError
toastRegionToast通知Notifications
autocompletePlaceholder
Autocomplete
入力して絞り込めます
Type to filter
autocompleteRemoveTagAutocompleteタグを削除Remove tag
autocompleteClearAutocompleteすべて削除Clear all
autocompleteEmptyAutocomplete該当なしNo results
fileFieldRemoveFileFieldファイルを削除Remove file
fileFieldTriggerFileField(生成 UI)ファイルを選択Select files
numberFieldIncrementNumberField増やすIncrease
numberFieldDecrementNumberField減らすDecrease
passwordShowPasswordInputパスワードを表示Show password
passwordHidePasswordInputパスワードを非表示Hide password
listBoxPlaceholderListBox選択してくださいSelect an option
breadcrumbBreadcrumbパンくずリストBreadcrumb
tabListTabs(生成 UI)タブTabs
paginationLabelPaginationページネーションPagination
paginationPreviousPagination前へPrevious
paginationNextPagination次へNext
chatConversation.MessagesチャットChat
scrollToLatestConversation.ScrollButton最新のメッセージへ移動Scroll to latest message
reasoningReasoning思考の過程Reasoning
reasoningStreamingReasoning思考中…Thinking…
suggestionsSuggestion.List候補Suggestions
sendPromptInput送信Send
stopPromptInput停止Stop
toolInputToolInvocation入力Input
toolOutputToolInvocation出力Output
toolErrorToolInvocationツールの実行でエラーが発生しました。The tool failed to run.
toolDeniedToolInvocationツールの実行は許可されませんでした。The tool run was not approved.
responseCopiedResponseコピーしましたCopied
responseCopyCodeResponseコードをコピーCopy code
responseCopyLinkResponseリンクをコピーCopy link
responseCopyTableResponse表をコピーCopy table
responseCopyTableAsCsvResponse表を CSV でコピーCopy table as CSV
responseCopyTableAsMarkdownResponse表を Markdown でコピーCopy table as Markdown
responseCopyTableAsTsvResponse表を TSV でコピーCopy table as TSV
responseDownloadDiagramResponse図をダウンロードDownload diagram
responseDownloadDiagramAsMmdResponse図を MMD でダウンロードDownload diagram as MMD
responseDownloadDiagramAsPngResponse図を PNG でダウンロードDownload diagram as PNG
responseDownloadDiagramAsSvgResponse図を SVG でダウンロードDownload diagram as SVG
responseDownloadFileResponseファイルをダウンロードDownload file
responseDownloadImageResponse画像をダウンロードDownload image
responseDownloadTableResponse表をダウンロードDownload table
responseDownloadTableAsCsvResponse表を CSV でダウンロードDownload table as CSV
responseDownloadTableAsMarkdownResponse表を Markdown でダウンロードDownload table as Markdown
responseExitFullscreenResponse全画面表示を終了Exit fullscreen
responseViewFullscreenResponse全画面表示View fullscreen
responseImageNotAvailableResponse画像を表示できませんImage not available
responseOpenExternalLinkResponse外部リンクを開きますか?Open external link?
responseExternalLinkWarningResponse外部サイトに移動しようとしています。You're about to visit an external website.
responseOpenLinkResponseリンクを開くOpen link
import { UIProvider } from '@k8ordo/ui';

function App({ children }) {
  return <UIProvider>{children}</UIProvider>;
}
import { UIProvider } from '@k8ordo/ui';
import { en } from '@k8ordo/ui/i18n';

function App({ children }) {
  return (
    <UIProvider messages={en}>
      {children}
    </UIProvider>
  );
}
import { en } from '@k8ordo/ui/i18n';

<UIProvider messages={{ close: '閉じる (Esc)' }}>
  {children}
</UIProvider>

<UIProvider messages={{ ...en, autocompleteEmpty: 'No matches' }}>
  {children}
</UIProvider>
// 1. prop
<Spinner label="送信中" />
// -> 送信中

// 2. messages
<UIProvider messages={en}>
  <Spinner />
</UIProvider>
// -> Loading

// 3. default
<Spinner />
// -> 読み込み中
import type { Messages } from '@k8ordo/ui/i18n';

const fr: Messages = {
  close: 'Fermer',
  required: 'Requis',
  loading: 'Chargement',
  avatar: 'Avatar',
  color: 'Couleur',
  // ...
};

<UIProvider messages={fr}>{children}</UIProvider>