Next.js reference

18ways.config.*

اپنے app root میں 18ways.config.ts، 18ways.config.js، یا 18ways.config.cjs بنائیں اور وہاں اپنی 18ways config export کریں۔

ts
import type { WaysConfig } from '@18ways/next/config';
 
export default {
  apiKey: process.env.NEXT_PUBLIC_18WAYS_PUBLIC_API_KEY,
  baseLocale: 'en-GB',
  router: 'app', // 'app', 'path', or 'none' depending on if you use app router, path router, or if you don't want the router to sync with locale at all
} satisfies WaysConfig;

withWays()

@18ways/next/config سے import کریں اور اسے next.config.js سے call کریں۔

ts
import { withWays } from '@18ways/next/config';

جب 18ways.config.* موجود ہو، تو withWays() اسے خود بخود لوڈ کر لیتا ہے۔ router: 'path' کے لیے یہ locale detection بند کر کے native Next i18n config واپس کرتا ہے۔ router: 'app' اور router: 'none' کے لیے، یہ وہ alias inject کرتا ہے جو @18ways/next/server سے direct imports کے لیے درکار ہوتا ہے۔

عام اختیارات:

آپشنقسمنوٹس
apiKeystringضروری ہے۔
baseLocalestringrouting کے لیے source locale اور default locale۔
router'app' | 'path' | 'none'لوکیل-routing mode۔ جب کوئی اور router پہلے ہی locale URLs کا مالک ہو تو none استعمال کریں۔
قبول شدہ لوکالیزstring[]واضح لوکیل فہرست۔ path کے لیے لازمی، بصورتِ دیگر اختیاری۔ path موڈ کو اپنی 18ways dashboard میں فعال languages کے مطابق رکھیں۔
domainsArray<{domain, defaultLocale}>اختیاری domain routing map۔
localeParamNamestringApp Router کے locale segment کا param۔ ڈیفالٹ lang ہے۔
persistLocaleCookieboolean | ((request) => boolean)سرور اور کلائنٹ کی لوکیل تبدیلیوں کے لیے لوکیل-کوکی برقرار رکھنے کی پالیسی۔
cacheTtlعددadapter requests کے لیے cache TTL۔
fetcherfetch کی قسمکسٹم فیچ امپلیمنٹیشن۔

init(config)

درآمد کریں from @18ways/next/server.

اسے تب استعمال کریں جب آپ کسی config object کو واضح طور پر bind کرنا چاہیں۔

WaysRoot

اپنے layouts میں WaysRoot کو براہِ راست @18ways/next/server سے import کریں، اس کے بعد کہ آپ نے next.config.js کو withWays(...) سے wrap کر لیا ہو۔

اپنے layout میں WaysRoot استعمال کریں تاکہ adapter موجودہ request کے لیے runtime state seed کر سکے۔ App Router locale routing کے ساتھ یہ عموماً app/[lang]/layout.tsx ہوتا ہے۔

getLocale()

server پر موجودہ لوکیل resolve کریں۔ یہ وہ helper ہے جو آپ کو اس وقت استعمال کرنا چاہیے جب WaysRoot کے باہر locale state درکار ہو، مثلاً server-only SEO helpers میں یا request-bound دیگر server code میں۔

htmlAttrs()

htmlAttrs() resolves the current lang and dir values for the document element.

generateWaysMetadata()

Use generateWaysMetadata() inside generateMetadata() when you want translated titles, descriptions, and locale-aware canonical or alternate URLs.

proxy.ts

router: 'app' کے لیے، request-time locale redirects کے لیے proxy.ts تجویز کردہ entrypoint ہے۔ @18ways/next/proxy سے re-export کریں تاکہ / -> /{locale} اور domain canonicalization ہینڈل ہو سکے۔

ts
export { default, config } from '@18ways/next/proxy';

اگر آپ کے پاس پہلے سے اپنا project proxy.ts یا middleware.ts موجود ہے، تو getWaysProxyResponse(request) استعمال کریں اور اپنی باقی logic سے پہلے اسے return کریں۔

Client helpers

Import from @18ways/next/client.

useLocale()

Read and change the current locale. This is the hook you pair with LanguageSwitcher or your own custom selector UI.

useRouter()

Next navigation کے لیے لوکیل سے آگاہ wrapper۔ localized target force کرنے کے لیے locale="fr-FR" پاس کریں، یا unlocalized target force کرنے کے لیے locale={false}۔

next/link کے لیے لوکیل سے آگاہ wrapper، useRouter() کے اسی override model کے ساتھ۔

useUnlocalizedPathname()

locale prefix کے بغیر موجودہ pathname پڑھیں۔

useLocalizedHref()

اندرونی href کو موجودہ لوکیل سے آگاہ href میں تبدیل کرنے کے لیے lower-level helper۔

Path routing config

router: 'app' mode میں adapter آپ کے route tree کی پیروی کرتا ہے:

  • app/[lang]/... کے تحت routes localized ہوتے ہیں
  • اس segment سے باہر کے routes unlocalized رہتے ہیں

Link، useRouter()، اور setLocale() اندرونی routes کو بطورِ ڈیفالٹ localized سمجھتے ہیں۔ locale={false} صرف تب استعمال کریں جب آپ کو واضح طور پر کسی unlocalized route کو target کرنا ہو۔

Changing language
Next.js حوالہ