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
- "Kılavuzu Elysia şablonuyla hizalar (context tipleme, Bun kurulumu, scriptler)"v9.4.024.08.2026
- "init Elysia plugin"v9.4.023.08.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 Elysia Backend Web Sitenizi Çevirme | Uluslararasılaştırma (i18n)
elysia-intlayer Elysia uygulamaları için güçlü bir uluslararasılaştırma (i18n) eklentisidir ve istemcinin tercihlerine dayalı olarak yerelleştirilmiş yanıtlar sağlayarak backend hizmetlerinizi küresel olarak erişilebilir hale getirmeye yönelik tasarlanmıştır.
GitHub'da paket uygulamasını görüntüleyin: https://github.com/aymericzip/intlayer/tree/main/packages/elysia-intlayer
Pratik Kullanım Senaryoları
- Backend Hatalarını Kullanıcının Dilinde Görüntüleme: Bir hata oluştuğunda, mesajları kullanıcının ana dilinde görüntülemek anlayışı iyileştirir ve hayal kırıklığını azaltır. Bu, toast veya modal gibi ön-uç bileşenlerinde gösterilebilecek dinamik hata mesajları için özellikle faydalıdır.
- Çok Dilli İçerik Alma: Bir veritabanından içerik çeken uygulamalar için uluslararasılaştırma, bu içeriği birden fazla dilde sunabileceğinizi sağlar. Bu, ürün açıklamaları, makaleler ve diğer içeriği kullanıcı tarafından tercih edilen dilde görüntülemesi gereken e-ticaret siteleri veya içerik yönetim sistemleri gibi platformlar için çok önemlidir.
- Çok Dilli E-posta Gönderme: İşlemsel e-postalar, pazarlama kampanyaları veya bildirimler olsun, alıcının dilinde e-posta göndermek katılımı ve etkinliği önemli ölçüde artırabilir.
- Çok Dilli Push Bildirimleri: Mobil uygulamalar için, push bildirimlerini kullanıcının tercih ettiği dilde göndermek etkileşimi ve tutunduğunu artırabilir. Bu kişisel dokunuş, bildirimleri daha ilgili ve işlem yapılabilir hissettirebilir.
- Diğer İletişimler: Backend'den gelen SMS mesajları, sistem uyarıları veya kullanıcı arayüzü güncellemeleri gibi her türlü iletişim, kullanıcının dilinde olmasından fayda sağlar, netliği sağlar ve genel kullanıcı deneyimini iyileştirir.
Backend'i uluslararasılaştırarak, uygulamanız yalnızca kültürel farklılıklara saygı göstermekle kalmaz, aynı zamanda global pazar ihtiyaçlarıyla daha iyi uyumlanır ve bu, hizmetlerinizi dünya çapında ölçeklendirmenin önemli bir adımıdır.
Başlangıç
Bkz. Uygulama Şablonu GitHub'da.
Kurulum
elysia-intlayer kullanmaya başlamak için npm kullanarak paketi kurun:
Kodu panoya kopyala
--interactivebayrağı isteğe bağlıdır. Bir AI ajanı isenizintlayer-cli initkomutunu kullanın.
Bu komut ortamınızı algılayacak ve gerekli paketleri kuracaktır. Örneğin:
Kodu panoya kopyala
Elysia Bun runtime'ını hedefler.elysia-intlayer, Node tabanlı Intlayer pluginlerinin kullandığıcls-hookedkütüphanesi yerineAsyncLocalStorage'a dayanır; çünkü Bunasync_hooks.createHookfonksiyonunu implemente etmez.
Kurulum
Proje kök dizininde intlayer.config.ts dosyası oluşturarak uluslararasılaştırma ayarlarını yapılandırın:
Kodu panoya kopyala
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
/**
* İstenen locale bulunamazsa fallback olarak kullanılan varsayılan locale.
*/
defaultLocale: Locales.ENGLISH,
},
};
export default config;
İçeriğinizi Bildirin
Çevirileri depolamak için içerik bildirimlerini oluşturun ve yönetin:
Kodu panoya kopyala
import { t, type Dictionary } from "intlayer";
const indexContent = {
key: "index",
content: {
exampleOfContent: t({
tr: "İngilizce'de döndürülen içerik örneği",
en: "Example of returned content in English",
fr: "Exemple de contenu renvoyé en français",
es: "Ejemplo de contenido devuelto en español",
}),
},
} satisfies Dictionary;
export default indexContent;
İçerik bildirimleriniz,contentDirdizinine dahil oldukları sürece (varsayılan olarak./src) uygulamanızın herhangi bir yerinde tanımlanabilir. Ve içerik bildirimi dosya uzantısıyla eşleşmelidir (varsayılan olarak.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).
Daha fazla ayrıntı için içerik bildirimi belgelerine bakın.
Elysia Uygulaması Kurulumu
Elysia uygulamanızı elysia-intlayer kullanacak şekilde kurun:
Kodu panoya kopyala
import { Elysia } from "elysia";
import { intlayer } from "elysia-intlayer";
const app = new Elysia()
// Uluslararasılaştırma eklentisini yükle
.use(intlayer())
// Rotalar
.get("/", ({ intlayer }) => ({
// Bu istek için kullanılan locale, `Accept-Language` üzerinden anlaşıldı veya depolamadan okundu
locale: intlayer!.locale,
greeting: intlayer!.t({
tr: "Merhaba",
en: "Hello",
fr: "Bonjour",
es: "Hola",
}),
content: intlayer!.getIntlayer("index").exampleOfContent,
}))
.listen(3000);
console.log(
`🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}`
);
Plugin, context'ini global birderiveüzerinden kaydeder ve Elysia bunuPartial<{ intlayer: IntlayerContext }>olarak tipler..use(intlayer())sonrasında kaydedilen route'larda değer çalışma zamanında her zaman mevcuttur; bu yüzdenstrictmodda TypeScript'i memnun etmek için non-null assertion (intlayer!.locale) veya optional chaining kullanın.
Route context şunları sunar:
Tüm veri içeriğini net bir şekilde görmek için tabloyu modalde açın
| Özellik | Açıklama |
|---|---|
locale | Bu istek için kullanılacak locale; locale_storage, locale_detected'a göre önceliklidir. |
locale_storage | İstemcinin bir çerez veya başlık aracılığıyla açıkça talep ettiği locale. |
locale_detected | İstek başlıklarından müzakere edilen locale. |
defaultLocale | intlayer.config.ts içinde fallback olarak yapılandırılan locale. |
t | Bir çeviri fonksiyonu. |
getIntlayer | Sözlükleri anahtarına göre almak için bir fonksiyon. |
getDictionary | Sözlük nesnelerini işlemek için bir fonksiyon. |
Aynı helper'lar standalone export olarak da sunulur. Mevcut isteği AsyncLocalStorage üzerinden çözdükleri için context'i destructure etmeden çağırabilirsiniz:
Kodu panoya kopyala
import { Elysia } from "elysia";
import { intlayer, t, getDictionary, getIntlayer } from "elysia-intlayer";
import dictionaryExample from "./index.content";
const app = new Elysia()
.use(intlayer())
.get("/t_example", () =>
t({
tr: "İngilizce'de döndürülen içerik örneği",
en: "Example of returned content in English",
fr: "Exemple de contenu renvoyé en français",
es: "Ejemplo de contenido devuelto en español",
})
)
.get("/getIntlayer_example", () => getIntlayer("index").exampleOfContent)
.get(
"/getDictionary_example",
() => getDictionary(dictionaryExample).exampleOfContent
)
.listen(3000);
İstek bağlamı, yanıt map'lendiği anda serbest bırakılır; böylece bağımsız helper'lar hiçbir zaman sonlanmış bir isteğe karşı çözümlenmez. Eklentinin işlediği bir isteğin dışında çağrıldıklarında, yapılandırılmış varsayılan locale'e geri dönerler.
Uygulamanızı Çalıştırın
Intlayer scriptlerini package.json dosyanıza ekleyin. intlayer build, içerik bildirimlerinizi .intlayer dizinine derler ve TypeScript tiplerini üretir:
Kodu panoya kopyala
Ardından sunucuyu başlatın:
Kodu panoya kopyala
Accept-Language ile locale müzakeresini test edin:
Kodu panoya kopyala
bun run src/index.tsöncesindeintlayer buildkesinlikle zorunlu değildir: plugin, Elysia uygulaması açılırken de sözlükleri hazırlar. Önceden çalıştırmak, üretilen tipleri editörünüz için güncel tutar ve ilk istekteki build maliyetinden kaçınmanızı sağlar.
Uyumluluk
elysia-intlayer tamamen uyumludur:
react-intlayerReact uygulamaları içinnext-intlayerNext.js uygulamaları içinvite-intlayerVite uygulamaları için
Ayrıca, tarayıcılar ve API istekleri dahil olmak üzere çeşitli ortamlarda herhangi bir uluslararasılaştırma çözümüyle sorunsuz bir şekilde çalışır.
Varsayılan olarak plugin, locale'i şu sırayla çözer:
INTLAYER_LOCALEçerezi.x-intlayer-localeheader'ı.Accept-Languageheader müzakeresi.
Locale tespiti için kullanılan çerezi ve header’ı özelleştirebilirsiniz:
Kodu panoya kopyala
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
// ... Diğer yapılandırma seçenekleri
routing: {
storage: [
{ type: "header", name: "my-locale-header" },
{ type: "cookie", name: "my-locale-cookie" },
],
},
};
export default config;
Yapılandırma ve ileri konular hakkında daha fazla bilgi için lütfen dokumentasyonumuzu ziyaret edin.
TypeScript'i Yapılandırma
elysia-intlayer, uluslararasılaştırma sürecini geliştirmek için TypeScript'in güçlü yeteneklerinden yararlanır. TypeScript'in statik yazı sistemi, her çeviri anahtarının dikkate alınmasını sağlayarak eksik çevirilerin riskini azaltır ve bakımlanabilirliği artırır.
Otomatik olarak oluşturulan türlerin (varsayılan olarak ./types/intlayer.d.ts konumunda) tsconfig.json dosyanıza dahil edildiğinden emin olun.
Kodu panoya kopyala
VS Code Extension
Intlayer ile geliştirme deneyiminizi iyileştirmek için, resmi Intlayer VS Code Extension'ı yükleyebilirsiniz.
Bu extension şunları sağlar:
- Autocompletion çeviri anahtarları için.
- Real-time hata tespiti eksik çeviriler için.
- Inline previews çevrilen içeriğin.
- Quick actions çevirileri kolayca oluşturmak ve güncellemek için.
Extension'ın nasıl kullanılacağı hakkında daha fazla bilgi için, Intlayer VS Code Extension dokumentasyonuna bakınız.
Git Yapılandırması
Intlayer tarafından oluşturulan dosyaları yoksaymak önerilir. Bu, bunları Git deponuza işlemekten kaçınmanızı sağlar.
Bunu yapmak için, .gitignore dosyanıza aşağıdaki yönergeleri ekleyebilirsiniz:
Kodu panoya kopyala
