Sorunuzu sorun ve bu sayfaya ve seçtiğiniz AI sağlayıcısına referans vererek belgenin bir özetini alın
Sürüm Geçmişi
- "remix-intlayer ara yazılımı ve hook'larının kullanımı"v9.5.519.09.2026
- "Remix 3 için ilk dokümantasyon"v9.5.009.09.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üleyinBu dokümantasyonu geliştirmek için bir fikriniz varsa, lütfen GitHub'da bir çekme isteği göndererek katkıda bulunmaktan çekinmeyin.
Dokümantasyon için GitHub bağlantısıBelge Markdown'ını panoya kopyala
Intlayer Kullanarak Remix 3 Web Sitenizi Çevirin
Bu kılavuz, yerel ayara duyarlı yönlendirme, tip güvenli içerik bildirimleri, sunucu taraflı işlenen JSX bileşenleri ve Node.js, Bun, Deno ve Cloudflare Workers üzerinde çoklu çalışma zamanı desteği ile Remix 3 uygulamalarında sorunsuz uluslararasılaştırma için Intlayer'ın nasıl entegre edileceğini göstermektedir.
Remix 3 Nedir?
Remix 3, tamamen web standartları üzerine inşa edilmiş, çalışma zamanından bağımsız, modüler bir web çatısına doğru temel bir mimari değişimi temsil eder. Belirli paketleyicilere veya özel sunucu API'lerine bağlı kalmak yerine Remix 3, tek amaçlı modüler paketler olarak dağıtılır:
remix/fetch-router(veyaremix/router): Fetch API (RequestveResponse) üzerine inşa edilmiş hafif, standartlara uygun yönlendirme.remix/ui: Bir JSX bileşen modeli (jsxImportSource: "remix/ui"). Bir bileşen, tipli bir tanıtıcı (handle) aracılığıyla propları alan ve bir render işlevi döndüren bir kurulum (setup) işlevidir.remix/middleware/render: Her istektecontext.render(<Page />)kurulumu yaparak JSX ağacını bir HTMLResponsenesnesine aktarır (streaming).remix/node-fetch-server: Node.js için sunucu bağdaştırıcıları ile Bun, Deno ve uç (edge) çalışma zamanları için yerel destek.remix/cookie: Kriptografik olarak imzalanmış çerez ayrıştırma ve serileştirme.
Intlayer ve remix-intlayer paketi (Remix istek bağlamına bağlı bir yerel ayar ara yazılımı ve react-intlayer ile aynı useIntlayer / useDictionary / useLocale hook'ları) ile birleştiğinde derleme zamanı güvenliği, yapay zeka ile otomatik çeviriler, sıfır ek yüklü sunucu oluşturma ve sorunsuz yerel ayar yönlendirmesi sunan eksiksiz bir uluslararasılaştırma sistemine sahip olursunuz.
İçindekiler
Neden Alternatifler Yerine Intlayer?
i18next veya özel çeviri yükleyicileri gibi geleneksel çözümlerle karşılaştırıldığında Intlayer, modern web mimarisi için optimize edilmiş entegre bir geliştirici deneyimi sunar:
Intlayer, web standartlarıyla (Request, Response, Headers ve URL) sorunsuz çalışacak şekilde tasarlanmıştır. remix-intlayer, hafif bir ara yazılım olarak Remix 3'ün Fetch yönlendiricisine bağlanır; URL yollarından, çerezlerden veya Accept-Language başlıklarından yerel ayarı çıkarır ve bunu elden ele aktarmaya gerek kalmadan isteğin geri kalanına, işleyicilere, görünümlere ve remix/ui bileşenlerine sunar.
Gevşek JSON anahtarlarına ve çalışma zamanındaki eksik anahtar çökmelerine veda edin. Intlayer, bildirilen tüm dillerde TypeScript denetimlerini zorunlu kılar ve bir çeviri eksik veya geçersiz olduğunda sizi derleme zamanında uyarır.
Remix 3'ün sunucu taraflı işlenen JSX bileşenlerini kullanırken, çıktı akışına yalnızca istenen yerel ayar için çözümlenmiş metin yazılır. Bir clientEntry aracılığıyla istemci hidrasyonunu açıkça yapılandırmadığınız sürece bileşenler tamamen sunucuda çalışır. Varsayılan olarak istemciye hiçbir çeviri kataloğu veya hidrasyon çalışma zamanı gönderilmez.
Intlayer, içerik bildirimlerini (.content.ts) doğrudan rota mantığınızla aynı yere yerleştirerek Büyük Dil Modelleri (LLM) için gereken belirteç (token) bağlamını azaltır. intlayer fill ve intlayer test gibi yerleşik CLI komutları, CI/CD süreçlerinde çevirileri doğrudan kendi yapay zeka sağlayıcınızın maliyetiyle otomatikleştirmenizi sağlar.
Kod odaklı iş akışlarının ötesinde Intlayer, kendi kendine barındırılabilen bir Görsel Editör ve bir Uzak CMS sunarak teknik olmayan editörlerin ve çevirmenlerin kodu yeniden dağıtmadan içeriği güncellemesine olanak tanır.
Adım Adım Kılavuz
GitHub üzerindeki Uygulama Şablonu bağlantısına göz atın.
Bağımlılıkları Yükleyin
Tercih ettiğiniz paket yöneticisini kullanarak
intlayer,remix-intlayerveremix(sürüm 3) paketlerini yükleyin:bashKodu kopyalaKodu panoya kopyala
intlayer: Yapılandırma yönetimi, sözlük bildirimi (t(),Dictionary), CLI araçları ve çalışma zamanı yorumlayıcısı sağlayan çekirdek uluslararasılaştırma motoru.remix-intlayer: Remix 3 entegrasyonu: her isteğin yerel ayarını çözümleyenintlayer()yönlendirici ara yazılımı ve bunu sonraki herhangi bir aşamada okuyanuseIntlayer,useDictionaryveuseLocalehook'ları.remix:remix/router,remix/routes,remix/ui,remix/middleware/renderveremix/node-fetch-serverdışa aktaran birleşik Remix 3 çatı paketi.
Intlayer'ı Yapılandırın
Mimari
Bu mimaride,
remix-intlayerkütüphanesininintlayer()ara yazılımıcreateRouter()içinderender()ara yazılımından önce kaydedilir. Yönlendirici eşleşmesinden önce yerel ayar ön ekini kaldırır, böylece rotalarsrc/routes.tsiçinde:localesegmenti olmadan bir kez bildirilir ve isteğin geri kalanını birAsyncLocalStoragekapsamında çalıştırır; bu dauseIntlayer/useLocalekancalarının rota işleyicilerinde veremix/uigörünümlerinde bağımsız değişken olmadan yerel ayarı okumasını sağlar. İçerik bildirimlerisrc/içinde görünümlerinizin yanında yer alır:bashKodu kopyalaKodu panoya kopyala
Yapılandırma
Desteklenen dillerinizi ve uluslararasılaştırma ayarlarınızı bildirmek için projenizin kök dizininde bir
intlayer.config.tsdosyası oluşturun:intlayer.config.tsKodu kopyalaKodu panoya kopyala
import { Locales, type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, Locales.TURKISH, ], defaultLocale: Locales.ENGLISH, }, }; export default config;Ek yapılandırma seçenekleri için yapılandırma belgelerine başvurun.
Çok Dilli İçeriğinizi Bildirin
Yerelleştirilmiş içeriğinizi bir
.content.tsdosyasında bildirin:src/home.content.tsKodu kopyalaKodu panoya kopyala
import { t, type Dictionary } from "intlayer"; const homeContent = { key: "home", content: { title: t({ tr: "Remix 3'e Hoş Geldiniz", en: "Welcome to Remix 3", fr: "Bienvenue sur Remix 3", es: "Bienvenido a Remix 3", }), description: t({ tr: "Yerel i18n desteğine sahip, web standartlarına dayalı modüler bir uygulama.", en: "A composable, web-standard application with native i18n.", fr: "Une application composable basée sur les standards web avec i18n native.", es: "Una aplicación componible basada en estándares web con i18n nativa.", }), switchLanguage: t({ tr: "Dili değiştir:", en: "Switch language:", fr: "Changer de langue :", es: "Cambiar idioma:", }), }, } satisfies Dictionary; export default homeContent;Intlayer ayrıca JSON, YAML ve CommonJS formatlarını da destekler. İçerik Bildirimi Dokümantasyonuna bakın.
Intlayer Sözlüklerini Derleyin
TypeScript türlerini ve çalışma zamanı kayıtlarını oluşturmak için sözlük tanımlarını derleyin:
bashKodu kopyalaKodu panoya kopyala
Bu işlem içeriğinizi
.intlayerdizininde derleyerek tam TypeScript otomatik tamamlamasını ve hızlı sözlük aramasını etkinleştirir.Intlayer Ara Yazılımını Ekleme
Remix 3,
createRouter({ middleware: [...] })aracılığıyla birleştirilebilir bir ara yazılım ardışık düzeni sunar.remix-intlayer,intlayer()ara yazılımını sağlar. Gelen her istek için yerel ayarı şunları kullanarak çözümler:no-prefixdışındaki tüm yönlendirme modlarında URL: yol ön eki (ör./trveya/en) veya?locale=arama parametresi.- İstemci tarafından kalıcı hale getirilen yerel ayar: depolama çerezi (
INTLAYER_LOCALE) veya özel başlık (x-intlayer-locale). - Yapılandırdığınız
defaultLocaledeğerine geri dönen standartAccept-Languageanlaşması.
Sonuç,
locale,defaultLocaleveavailableLocalesile birlikte Remix istek bağlamındacontext.intlayer(veyacontext.get(Intlayer)) olarak saklanır. Ara yazılım ardından isteğin geri kalanını bu bağlama bağlı birAsyncLocalStoragekapsamında çalıştırır; bu da paketin hook'larının rota işleyicilerinde, görünümlerde veremix/uibileşenlerinde bağımsız değişken olmadan yerel ayarı okumasını sağlar:typescriptKodu kopyalaKodu panoya kopyala
useIntlayer("home", "fr")veyauseIntlayer("faq", { item: 2 })tek bir çağrı için istek yerel ayarını geçersiz kılar veuseDictionary(homeContent)bir anahtar yerine içe aktarılan bir sözlüğü okur. Bir isteğin dışındayken hook'lar varsayılan yerel ayara döner.Ara yazılım ayrıca sunucu başladığında Intlayer sözlüklerini hazırlar, böylece eksik bir
intlayer buildkaydı boş bırakmaz.Yalnızca locale çözümlemesini korumak ve yönlendirmeyi kendiniz yönetmek için
intlayer.config.tsiçinderouting.enableProxy: falseayarlayın.intlayer({ ignore })eşleşen istekleri olduğu gibi bırakır (örneğin bir API öneki),intlayer({ isDevServer })ise varsayılanenableProxyotomatik modunda saklanan locale'in yönlendirmeleri belirleyip belirlemeyeceğini kontrol eder.Tip Güvenli Rotalar Tanımlayın
remix/routesiçindenroute()kullanarak uygulama rotalarınızı tanımlayın:src/routes.tsKodu kopyalaKodu panoya kopyala
import { route } from "remix/routes"; export const routes = route({ // Varsayılan yerel ayar rotası home: "/", // Dinamik :locale segmentine sahip yerelleştirilmiş rota localizedHome: "/:locale", });route()kullanımı uygulamanız genelinde tip güvenli URL üretimi sağlar:typescriptKodu kopyalaKodu panoya kopyala
JSX ile Yerelleştirilmiş Sayfaları İşleyin
Remix 3, JSX bileşenleri için
remix/uikullanır. Bir bileşen, bir render işlevi döndüren bir kurulum (setup) işlevidir. Proplar, tipli birhandlearacılığıyla iletilir (örneğin,handle.props.locale):Ara yazılım tarafından çözümlenen yerel ayardan
<html lang="..." dir="...">niteliklerini ayarlayan paylaşılan birDocumentkabuğu ile başlayın:src/views/document.tsxKodu kopyalaKodu panoya kopyala
import { getHTMLTextDir } from "intlayer"; import { useLocale } from "remix-intlayer"; import type { Handle, RemixNode } from "remix/ui"; type DocumentProps = { title: string; children?: RemixNode; }; export const Document = (handle: Handle<DocumentProps>) => () => { const { title, children } = handle.props; const { locale } = useLocale(); return ( <html lang={locale} dir={getHTMLTextDir(locale)}> <head> <meta charSet="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>{title}</title> </head> <body>{children}</body> </html> ); };Ardından ana sayfayı oluşturun.
useIntlayerile yerelleştirilmiş sözlüğü okur ve bir dil değiştirici oluşturur:src/views/home.tsxKodu kopyalaKodu panoya kopyala
import { getLocaleName, getLocalizedUrl, getPathWithoutLocale } from "intlayer"; import { useIntlayer, useLocale } from "remix-intlayer"; import { Document } from "./document"; export const HomePage = () => () => { const { locale, availableLocales } = useLocale(); const home = useIntlayer("home"); const pathWithoutLocale = getPathWithoutLocale(); return ( <Document title={home.title}> <header> <nav aria-label="Languages"> <span>{home.switchLanguage}</span> <ul> {availableLocales.map((localeItem) => { const isActive = localeItem === locale; return ( <li key={localeItem} class="p-1"> <a href={getLocalizedUrl(pathWithoutLocale, localeItem)} class={isActive ? "active" : undefined} aria-current={isActive ? "page" : undefined} > {getLocaleName(localeItem, locale)} </a> </li> ); })} </ul> </nav> </header> <main> <h1>{home.title}</h1> <p>{home.description}</p> </main> </Document> ); };Remix JSX, React değildir:
classolduğu gibi yazılır (classNamede kabul edilir) ve yeniden oluşturmalarhandle.update()ile açıkça tetiklenir. İnterpole edilen değerler otomatik olarak kaçış karakteriyle korunur. Intlayer hook'ları istek kapsamını okuyan düz işlevlerdir, bu nedenle hem setup işlevinden hem de render işlevinden çağrılabilirler.Yönlendiriciyi ve Sunucuyu Bağlayın
Ara yazılımları kaydetmek ve rota eylemlerini tanımlamak için
src/router.tsxdosyasını oluşturun.context.render()yardımcısını yüklemek içinremix/middleware/renderkullanın ve JSX bileşeninizi doğrudan iletin:src/router.tsxKodu kopyalaKodu panoya kopyala
import { isDeclaredLocale } from "intlayer"; import { intlayer } from "remix-intlayer"; import { render } from "remix/middleware/render"; import { createRouter } from "remix/router"; import { routes } from "./routes"; import { HomePage } from "./views/home"; // 1. Initialize router with Intlayer + render middleware export const router = createRouter({ middleware: [intlayer(), render()], }); // 2. Map route handlers router.map(routes, { actions: { // Default locale route home(context) { return context.render(<HomePage />); }, // Localized route localizedHome(context) { if (!isDeclaredLocale(context.params.locale)) { return new Response("Not Found", { status: 404 }); } return context.render(<HomePage />); }, }, });context.render, ikinci bağımsız değişken olarak isteğe bağlı birResponseInitkabul eder (ör.context.render(<NotFoundPage />, { status: 404 })). Çözümlenen yerel ayar, örneğin birResponse.jsonyükü oluşturmak için işleyicidencontext.intlayer.localeolarak erişilebilir kalır.Şimdi Node.js için
remix/node-fetch-serverkullanaraksrc/server.tsdosyasını bağlayın (veya Bun, Deno ya da Cloudflare Workers içinfetchişleyicisini doğrudan dışa aktarın):src/server.tsKodu kopyalaKodu panoya kopyala
import * as http from "node:http"; import { createRequestListener } from "remix/node-fetch-server"; import { router } from "./router"; const PORT = Number(process.env.PORT || 3000); // Node.js HTTP sunucusu const server = http.createServer( createRequestListener((request) => router.fetch(request)) ); server.listen(PORT, () => { console.log(`Sunucu http://localhost:${PORT} adresinde çalışıyor`); }); // Bun / Deno / Cloudflare Workers dışa aktarımı export default { port: PORT, fetch(request: Request) { return router.fetch(request); }, };Çevirileri Denetleyin ve Otomatik Doldurun
Intlayer, eksik çevirileri denetlemek ve bunları yapay zeka kullanarak otomatik doldurmak için bir CLI sağlar:
bashKodu kopyalaKodu panoya kopyala
TypeScript Yapılandırması
JSX'i remix/ui çalışma zamanına yönlendirmek ve oluşturulan .intlayer türlerini dahil etmek için tsconfig.json dosyasını yapılandırın:
Kodu panoya kopyala
jsxImportSource: "remix/ui",<HomePage />ifadesinin React yerine Remix'increateElementişlevine çözümlenmesini sağlayan şeydir. Hiçbir React çalışma zamanı yüklenmez.
Sonuç
Remix 3 ve Intlayer ile açık web standartlarına uyan yalın, tam tip korumalı ve çalışma zamanı taşınabilir bir teknoloji yığınına sahip olursunuz. Uygulamanız, basit yerelleştirilmiş pazarlama sayfalarından küresel olarak dağıtılmış ve uçta işlenen hizmetlere kadar zahmetsizce ölçeklenebilir.
