翻譯
為 UI 加入翻譯
概覽
所有官方 Fumadocs 套件預設皆使用英文,您也可以為其他語言新增翻譯。
本頁主要說明新增 UI 翻譯的細節;若需要完整說明,請參閱國際化指南。
單一 (Singular)
單一 (Singular) 是指只為單一語言新增翻譯:
import { defineTranslations } from 'fumadocs-core/i18n';
import { uiTranslations } from 'fumadocs-ui/i18n';
export const translations = defineTranslations().extend(uiTranslations()).add({
// [標籤]:[翻譯文字]
'Search(search trigger)': '搜尋文檔',
});請務必在所有 .extend() 呼叫完成之後,才呼叫 .add()。
請將翻譯內容傳入 <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?
最後更新於
