翻訳
UI に翻訳を追加する
概要
Fumadocs の公式パッケージはすべてデフォルトで英語を使用しますが、他の言語の翻訳を追加することもできます。
このページでは主に UI の翻訳を追加する方法について詳しく説明します。国際化の全体像については、国際化ガイドを参照してください。
単一言語
単一言語(Singular)とは、1つの言語のみの翻訳を追加する方法を指します。
import { defineTranslations } from 'fumadocs-core/i18n';
import { uiTranslations } from 'fumadocs-ui/i18n';
export const translations = defineTranslations().extend(uiTranslations()).add({
// [ラベル]: [翻訳]
'Search(search trigger)': '搜尋文檔',
});.add() は、すべての .extend() の呼び出しが完了した後に呼び出してください。
翻訳を <RootProvider /> に渡します。
import { RootProvider } from 'fumadocs-ui/provider/<framework>';
import { i18nProvider } from 'fumadocs-ui/i18n';
import { translations } from '@/lib/layout.shared';
export function Layout({ children }: { children: React.ReactNode }) {
return (
<RootProvider
i18n={i18nProvider(translations)}
>
{children}
</RootProvider>
);
}多言語対応
複数の言語の翻訳を定義できます。これには標準的な i18n のセットアップが必要です。
import { defineTranslations } from 'fumadocs-core/i18n';
import { uiTranslations } from 'fumadocs-ui/i18n';
import { i18n } from '@/lib/i18n';
export const translations = i18n
.translations()
.extend(uiTranslations())
.add({
// [ロケールコード]: [翻訳]
cn: {
// [ラベル]: [翻訳]
'Search(search trigger)': '搜尋文檔',
},
});翻訳を <RootProvider /> に渡します。
import { RootProvider } from 'fumadocs-ui/provider/<framework>';
import { i18nProvider } from 'fumadocs-ui/i18n';
import { translations } from '@/lib/layout.shared';
export function Layout({ locale, children }: { locale: string; children: React.ReactNode }) {
return (
<RootProvider
i18n={i18nProvider(translations, locale)}
>
{children}
</RootProvider>
);
}言語パック
言語パックは、fumadocs-ui のほか、Fumadocs OpenAPI などいくつかのインテグレーション向けの翻訳を提供します。
npm i @fumadocs/languageご希望の言語が公式の言語パックにない場合は、ぜひリポジトリへのコントリビューションをお願いします。
言語パックを利用するには、preset() を使用します。
import { defineTranslations } from 'fumadocs-core/i18n';
import { openapiTranslations } from 'fumadocs-openapi/i18n';
import { uiTranslations } from 'fumadocs-ui/i18n';
import { zhTW } from '@fumadocs/language/zh-tw';
export const translations = defineTranslations()
.extend(uiTranslations())
// 設定したインテグレーションに応じて拡張機能を追加します(例: Fumadocs OpenAPI):
.extend(openapiTranslations())
// 繁体字中国語
.preset(zhTW());カスタムパック
独自の言語パックを作成して公開することもできます。
たとえば、zh-TW 言語パックの構成は次のとおりです。
import type { } from 'fumadocs-core/i18n';
import * as from 'fumadocs-openapi/i18n';
import * as from 'fumadocs-ui/i18n';
import * as from '@fumadocs/story/i18n';
const = {
: '繁體中文',
'Server URL(playground server select)': '伺服器 URL',
'Variant(story controls)': '變體',
// ...
} satisfies <. & . & .>;
export function (): <keyof typeof > {
return {
: 'zh-TW',
: ,
};
}拡張機能
拡張機能は、翻訳に使用できるラベルを宣言します。クライアントに送信されるペイロードには、登録済みのラベルのみが含まれます。
カスタム拡張機能
Fumadocs 向けのコミュニティパッケージを開発している場合は、拡張機能を作成して独自の翻訳を登録できます。
まず、Fumadocs が使用している翻訳ツールキットをインストールしてください。
npm i @fuma-translate/reactimport type { } from 'fumadocs-core/i18n';
const = [
// キーの形式: "your label(additional context)"
'Hello {user}(welcome screen)',
] as ;
export function (): <(typeof )[number]> {
return { };
}ここでは簡略化のため省略していますが、翻訳キーと型をハードコーディングせずにコンパイルする方法については、Fuma Translate のドキュメントを参照してください。
利用者は、次のようにこの拡張機能を使用できます。
import { defineTranslations } from 'fumadocs-core/i18n';
import { myTranslations } from 'my-package/i18n';
export const translations = defineTranslations()
.extend(myTranslations())
.add({
'Hello {user}(welcome screen)': '你好 {user}',
});How is this guide?
最終更新日
