SveltePress একই সাইটে একাধিক লোকেল পরিবেশন করতে পারে। আন্তর্জাতিকীকরণ opt-in: locales না দিলে সাইট single-locale থাকে এবং আগের আচরণই বজায় থাকে।

প্লেগ্রাউন্ডের আন্তর্জাতিকীকরণ এন্ট্রি config/locales.ts-এ লেখকের মতোই একটি তিন-লোকেল Default Theme starter চালু করে। চীনা ও বাংলা প্লেগ্রাউন্ডও সেই একই Starter খোলে এবং প্রিভিউ /zh/ বা /bn/-এ থাকে। এটি ব্যতিক্রম: অন্য প্লেগ্রাউন্ড এন্ট্রি পাতার ভাষায় ডিফল্ট পাথে লেখা এক-লোকেল গাছ।

Opt-in locales

লোকেল সক্রিয় করুন

sveltepress()-এ একটি locales ম্যাপ দিন। কী হলো URL prefix ('/' ডিফল্ট লোকেলের জন্য, '/zh/', '/bn/', …)। প্রতিটি এন্ট্রিতে BCP 47 lang, ভাষা সুইচারের জন্য label, এবং সেই লোকেলের সম্পূর্ণ theme options থাকতে হবে:

vite.config.ts
import { const defaultTheme: ThemeDefaultdefaultTheme } from '@sveltepress/theme-default'
import { const sveltepress: (options?: SveltepressVitePluginOptions) => PluginOptionsveltepress } from '@sveltepress/vite'
import { function defineConfig(config: UserConfig): UserConfig (+5 overloads)

Type helper to make it easier to use vite.config.ts accepts a direct

UserConfig

object, or a function that returns it. The function receives a

ConfigEnv

object.

defineConfig
} from 'vite'
import { const locales: LocalesConfig

The merged documentation site's locales. Each locale carries its full theme options; the theme resolves them per route via virtual:sveltepress/locale.

locales
} from './config/locales'
export default function defineConfig(config: UserConfig): UserConfig (+5 overloads)

Type helper to make it easier to use vite.config.ts accepts a direct

UserConfig

object, or a function that returns it. The function receives a

ConfigEnv

object.

defineConfig
({
UserConfig.plugins?: PluginOption[] | undefined

Array of vite plugins to use.

plugins
: [
function sveltepress(options?: SveltepressVitePluginOptions): PluginOptionsveltepress({ SveltepressVitePluginOptions.theme?: ResolvedTheme | undefinedtheme: function defaultTheme(themeOptions?: DefaultThemeOptions | undefined): ResolvedThemedefaultTheme({ // সব লোকেলের shared সাইট-লেভেল অপশন }), SveltepressVitePluginOptions.locales?: LocalesConfig<any> | undefined

Multi-locale site configuration keyed by URL prefix ('/' for the default locale, '/zh/', '/bn/', ...). Each entry carries that locale's lang, a user-facing label for the switcher, and its full theme options.

When omitted the site stays single-locale and behavior is unchanged.

locales
,
}), ], })
ts

locales না থাকলে SveltePress পাথ rewrite করে না, language switcher দেখায় না, এবং locale route tree স্ক্যান করে না।

Locale routes and prefixes

রুট ও prefix

অনুবাদ করা পৃষ্ঠাগুলো ডিফল্ট লোকেলের একই logical route ID-এর পাশে রাখুন (src/routes/…, src/routes/zh/…, src/routes/bn/…)। ডিফল্ট লোকেল unprefixed /-এ থাকে। Navbar, sidebar, হোম action বাটন এবং feature card লিংকেও সেই logical path ব্যবহার করুন (যেমন /guide/introduction/); Default Theme সক্রিয় লোকেলের prefix যোগ করবে।

Language switcher and fallbacks

Language switcher ও fallback

locales কনফিগার থাকলে Default Theme navbar-এ language switcher দেখায়। ভাষা বদলালে documentation version, logical page, এবং in-view heading (#hash) একই থাকে। Historical version (/v/<id>/… বা /zh/v/<id>/…) থেকে সুইচ করলে টার্গেট লোকেলের একই frozen version-এ যায়; সেই পৃষ্ঠা না থাকলে current logical page, তারপর লোকেল home-এ fallback করে (svp-locale-fallback=1)।

virtual/locale

virtual:sveltepress/locale

import {
  const locales: LocalesConfig | nulllocales,
  const resolveLocale: (pathname: string, base?: string) => ResolvedLocale | nullresolveLocale,
  const resolveLocaleSwitch: (pathname: string, targetPrefix: string, base?: string) => LocaleSwitchTarget | nullresolveLocaleSwitch,
  const resolveLocalizedPath: (to: string, locale: ResolvedLocale | null, base?: string) => stringresolveLocalizedPath,
} from 'virtual:sveltepress/locale'
ts
  • locales — কনফিগার করা ম্যাপ; i18n বন্ধ থাকলে null
  • resolveLocale / resolveLocalizedPath / resolveLocaleSwitch — সক্রিয় লোকেল, লিঙ্ক rewrite, সুইচার টার্গেট
createLocaleHandle

SSR <html lang>

src/hooks.server.js
// @noErrors
import { createLocaleHandle } from '@sveltepress/vite/hooks'
import { locales } from '../config/locales'

export const handle = createLocaleHandle(locales)
js
Per-locale llms and hreflang sitemap

Per-locale llms ও sitemap

llms চালু থাকলে প্রতি লোকেলে আলাদা llms.txt / llms-full.txt লেখা হয়। sitemap.xml লোকেলগুলোর current page ও eligible historical version URL hreflang alternate-সহ তালিকাভুক্ত করে।

Locale-aware versioning

Locale-aware versioning

নতুন ভাষা যোগ করতে SveltePress প্যাকেজ কোড বদলাতে হয় না। locales-এ প্রিফিক্স দিন, পেজ রাখুন src/routes/<slug>/-এ; ডকুমেন্ট ভার্সন ব্যবহার করলে sveltepress versions init --locale <slug> চালান। ভাষা পরিবর্তন, সাইডবার এবং ঐতিহাসিক URL সেই প্রিফিক্স অনুসরণ করে।

প্রতি লোকেলের আলাদা manifest থাকতে পারে: /sveltepress.versions.json (/v), /<slug>/sveltepress.versions.<slug>.json (/<slug>/v)। ডিফল্ট sveltepress versions build কনফিগার করা সব লোকেল draft করে এক output-এ compose করে। init / create / validate এবং এক-লোকেল draft-এ --locale দিন:

sveltepress versions build
sveltepress versions create 8.2 --label "8.2" --locale bn
sveltepress versions validate --locale bn
sh

বিস্তারিত: ডকুমেন্ট সংস্করণ ব্যবস্থাপনা

লোকেল অনুযায়ী সার্চ

Local Search <html lang="…"> অনুসরণ করে। DocSearch/custom search-এর জন্য প্রতি লোকেলে আলাদা theme options দিন। বিস্তারিত: সার্চ