Sorunuzu sorun ve bu sayfaya ve seçtiğiniz AI sağlayıcısına referans vererek belgenin bir özetini alın
Bu belge güncel değil, temel sürüm şu tarihte güncellendi 3 Nisan 2026.
İngilizce dökümana gitSürüm Geçmişi
- "routing.domains yapılandırması aracılığıyla alan adı tabanlı yerel ayar yönlendirmesi eklendi."v8.5.002.04.2026
Bu sayfanın içeriği bir yapay zeka kullanılarak çevrildi.
Orijinal içeriğin İngilizce son sürümünü görüntüleyinIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Özel Alan Adları
Intlayer, belirli yerel ayarları özel ana makine adlarından sunmanıza olanak tanıyan alan adı tabanlı yerel ayar yönlendirmesini destekler. Örneğin, Çinli ziyaretçiler intlayer.org/zh yerine intlayer.zh adresine yönlendirilebilir.
Nasıl Çalışır?
routing içindeki domains eşlemesi, her yerel ayarı bir ana makine adıyla ilişkilendirir. Intlayer bu eşlemeyi iki yerde kullanır:
- URL oluşturma (
getLocalizedUrl): Hedef yerel ayar mevcut sayfadan farklı bir alan adındaysa, mutlak bir URL döndürülür (örneğinhttps://intlayer.zh/about). Her iki alan adı da eşleştiğinde, göreli bir URL döndürülür (örneğin/fr/about). - Sunucu proxy'si (Next.js ve Vite): Gelen istekler, ulaştıkları alan adına göre yeniden yönlendirilir veya yeniden yazılır.
Özel ve paylaşılan alan adları
Temel ayrım münhasırlıktır:
- Özel alan adı - Bu ana makine adına yalnızca bir yerel ayar eşlenir (örneğin
zh → intlayer.zh). Alan adının kendisi yerel ayarı tanımlar, bu nedenle yola herhangi bir yerel ayar öneki eklenmez.https://intlayer.zh/aboutÇince içerik sunar. - Paylaşılan alan adı - Birden fazla yerel ayar aynı ana makine adına eşlenir (örneğin hem
enhem defrintlayer.orgadresine eşlenir). Normal önek tabanlı yönlendirme uygulanır.intlayer.org/fr/aboutFransızca içerik sunar.
Yapılandırma
Kodu panoya kopyala
import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, Locales.CHINESE, ], defaultLocale: Locales.ENGLISH, }, routing: { mode: "prefix-no-default", domains: { // Paylaşılan alan adı - en ve fr, intlayer.org'da önek yönlendirmesini kullanır en: "intlayer.org", // Özel alan adı - zh'nin kendi ana makine adı vardır, /zh/ önekine gerek yoktur zh: "intlayer.zh", }, },};export default config;domains içinde listelenmeyen yerel ayarlar, herhangi bir alan adı geçersiz kılma olmaksızın standart önek yönlendirmesini kullanmaya devam eder.
URL Oluşturma
getLocalizedUrl, çağırma bağlamına bağlı olarak otomatik olarak doğru URL türünü oluşturur.
Aynı alan adı yerel ayarı (göreli URL)
Kodu panoya kopyala
// Mevcut sayfa: intlayer.org/aboutgetLocalizedUrl("/about", "fr", { currentDomain: "intlayer.org" });// → "/fr/about"getLocalizedUrl("/about", "en", { currentDomain: "intlayer.org" });// → "/about" (varsayılan yerel ayar, önek yok)Alan adları arası yerel ayar (mutlak URL)
Kodu panoya kopyala
// Mevcut sayfa: intlayer.org/aboutgetLocalizedUrl("/about", "zh", { currentDomain: "intlayer.org" });// → "https://intlayer.zh/about" (özel alan adı, /zh/ öneki yok)Yerel ayarın kendi alan adından sunulması
Kodu panoya kopyala
// Mevcut sayfa: intlayer.zh/aboutgetLocalizedUrl("/about", "zh", { currentDomain: "intlayer.zh" });// → "/about" (zaten doğru alan adında - göreli URL)getLocalizedUrl("/about", "fr", { currentDomain: "intlayer.zh" });// → "https://intlayer.org/fr/about" (intlayer.org'a geri dönen alan adları arası bağlantı)Mevcut alan adını otomatik algılama
currentDomain isteğe bağlıdır. Atlandığında, getLocalizedUrl bunu şu sırayla çözer:
- Mutlak bir giriş URL'sinin ana makine adı (örneğin
https://intlayer.org/about→intlayer.org). - Tarayıcı ortamlarında
window.location.hostname. - Hiçbiri mevcut değilse (açık seçenek olmadan SSR), aynı alan adı yerel ayarları için göreli bir URL döndürülür ve mutlak bir URL oluşturulmaz - bu güvenli geri dönüştür.
Kodu panoya kopyala
// Tarayıcı - window.location.hostname === 'intlayer.org'getLocalizedUrl("/about", "zh");// → "https://intlayer.zh/about" (pencereden otomatik algılandı)// Mutlak bir URL'den - alan adı otomatik olarak algılandıgetLocalizedUrl("https://intlayer.org/about", "zh");// → "https://intlayer.zh/about"Alan adları ile getMultilingualUrls
getMultilingualUrls, her yerel ayar için getLocalizedUrl çağırır, bu nedenle çağıranın alan adına bağlı olarak göreli ve mutlak URL'lerin bir karışımını oluşturur:
Kodu panoya kopyala
// currentDomain: 'intlayer.org'getMultilingualUrls("/about", { currentDomain: "intlayer.org" });// {// en: "/about",// fr: "/fr/about",// es: "/es/about",// zh: "https://intlayer.zh/about",// }Bu mutlak URL'ler, SEO için <link rel="alternate" hreflang="..."> etiketlerinde kullanılmaya hazırdır.
Proxy Davranışı
Next.js
intlayerProxy ara katman yazılımı, alan adı yönlendirmesini otomatik olarak yönetir. middleware.ts dosyanıza ekleyin:
Kodu panoya kopyala
export { intlayerProxy as default } from "next-intlayer/proxy";export const config = { matcher: "/((?!api|static|assets|robots|sitemap|.*\\..*|_next).*)",};Yeniden Yönlendirme (Redirect) - İstek, belirli bir yerel ayar öneki için yanlış alan adına ulaşır:
Kodu panoya kopyala
GET intlayer.org/zh/about→ 301 https://intlayer.zh/aboutYeniden Yazma (Rewrite) - İstek, önek olmadan yerel ayarın özel alan adına ulaşır:
Kodu panoya kopyala
GET intlayer.zh/about→ /zh/about adresine yeniden yaz (yalnızca dahili Next.js yönlendirmesi, URL temiz kalır)Vite
intlayerProxy Vite eklentisi, geliştirme sırasında aynı mantığı uygular:
Kodu panoya kopyala
import { defineConfig } from "vite";import { intlayerProxy } from "vite-intlayer";export default defineConfig({ plugins: [intlayerProxy()],});Not: Yerel geliştirmede genelliklelocalhostüzerindesinizdir, bu nedenle alan adları arası yeniden yönlendirmeler başka bir yerel bağlantı noktası yerine canlı alan adlarını işaret edecektir. Çoklu alan adı yönlendirmesini yerel olarak test etmeniz gerekiyorsa, bir hosts dosyası geçersiz kılması (örneğin127.0.0.1 intlayer.zh) veya bir ters proxy kullanın.
Yerel Ayar Değiştirici (Locale Switcher)
next-intlayer paketindeki useLocale kancası, alan adına duyarlı gezinmeyi otomatik olarak yönetir. Bir kullanıcı farklı bir alan adındaki bir yerel ayara geçtiğinde, kanca istemci tarafı yönlendirici itmesi yerine tam sayfa gezinme (window.location.href) gerçekleştirir; çünkü Next.js yönlendiricisi kaynakları (origins) aşamaz.
Kodu panoya kopyala
"use client";import { useLocale } from "next-intlayer";export const LocaleSwitcher = () => { const { availableLocales, locale, setLocale } = useLocale(); return ( <ul> {availableLocales.map((localeEl) => ( <li key={localeEl}> <button onClick={() => setLocale(localeEl)} aria-current={localeEl === locale ? "true" : undefined} > {l.toUpperCase()} </button> </li> ))} </ul> );};Ek yapılandırma gerekmez - useLocale dahili olarak window.location.hostname algılar ve router.replace (aynı alan adı) ile window.location.href (alan adları arası) arasında karar verir.
SEO: hreflang Alternatif Bağlantılar
Alan adı tabanlı yönlendirme, arama motorlarına her dil için hangi URL'yi dizine ekleyeceklerini söylemek için genellikle hreflang ile birlikte kullanılır. Tam alternatif URL setini oluşturmak için getMultilingualUrls kullanın:
Kodu panoya kopyala
import { getMultilingualUrls } from "intlayer";import type { Metadata } from "next";export const generateMetadata = (): Metadata => { const alternates = getMultilingualUrls("/", { currentDomain: process.env.NEXT_PUBLIC_DOMAIN, // örneğin "intlayer.org" }); return { alternates: { languages: alternates, }, };};Bu şunları oluşturur:
Kodu panoya kopyala
<link rel="alternate" hreflang="en" href="https://intlayer.org/" /><link rel="alternate" hreflang="fr" href="https://intlayer.org/fr/" /><link rel="alternate" hreflang="es" href="https://intlayer.org/es/" /><link rel="alternate" hreflang="zh" href="https://intlayer.zh/" />Temel Yardımcı Programlar
Tüm veri içeriğini net bir şekilde görmek için tabloyu modalde açın
| Yardımcı Program | Açıklama |
|---|---|
getLocalizedUrl(url, locale, { currentDomain }) | Hedef yerel ayarın mevcut alan adında olup olmadığına bağlı olarak göreli veya mutlak URL döndürür. |
getMultilingualUrls(url, { currentDomain }) | Gerektiğinde göreli ve mutlak URL'leri karıştırarak yerel ayarlı bir yerelleştirilmiş URL haritası döndürür. |
getPrefix(locale, { domains }) | Özel alan adı yerel ayarları için boş bir önek, aksi takdirde normal önek döndürür. |