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
- "Seçime dayalı (select) içerik eklendi"v9.1.030.07.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
Seçime Dayalı İçerik (Select) / Intlayer
Select Nasıl Çalışır
Intlayer'da seçime dayalı içerik, rastgele dize değerlerini karşılık gelen içeriklerle eşleştiren select işlevi aracılığıyla elde edilir. Bu, ICU {value, select, …} mesajına eşdeğerdir veya uygulamanızın kodundaki bir switch ifadesine benzer.
Ayırt edici (discriminant) rastgele bir dize olduğunda select kullanın: durum (status), plan, platform veya rol (role) gibi. Diğer ayırt ediciler için Intlayer özel düğümler sunar:
Tüm veri içeriğini net bir şekilde görmek için tabloyu modalde açın
| Ayırt Edici (Discriminant) | Düğüm |
|---|---|
| Miktar (Quantity) | enu() |
| Boolean | cond() |
| Cinsiyet (Gender) | gender() |
| Diğer herhangi bir dize | select() |
Seçime Dayalı İçeriği Ayarlama
Intlayer projenizde seçime dayalı içeriği ayarlamak için, seçim (select) tanımlarınızı içeren bir içerik modülü oluşturun. Aşağıda farklı formatlarda örnekler verilmiştir.
Kodu panoya kopyala
import { select, type Dictionary } from "intlayer";
const myPostContent = {
key: "my_key",
content: {
publishStatus: select({
draft: "This post is a draft",
published: "This post is live",
scheduled: "This post is scheduled",
fallback: "Unknown status", // isteğe bağlı
}),
},
} satisfies Dictionary;
export default myPostContent;Eğer hiçbirfallbackbildirilmezse, sağlanan değer bildirilen durumların hiçbiriyle eşleşmediğinde, son bildirilen anahtar yedek (fallback) olarak kabul edilir: tıpkıcond()vegender()sözleşmelerinde olduğu gibi.
Tür Güvenliği (Type Safety)
Kabul edilen argüman, bildirilen durumlardan (cases) çıkarılır:
- Hiçbir
fallbackyoksa, yalnızca bildirilen durumlar kabul edilir: bir yazım hatası tür hatasına (type error) neden olur. - Bir
fallbackvarsa, bildirilen durumlar hala otomatik tamamlama sağlarken herhangi bir dize kabul edilir (çünkü fallback eşleşmeyen değerleri kapsar).
Neden düzenli bir nesne kullanılmamalı?
Düzenli (regular) bir nesne bildirmek ve çalışma zamanı (runtime) değerini kullanarak onu dizinlemek cazip gelebilir:
Kodu panoya kopyala
// ❌ Bunu yapmayınconst { publishStatus } = useIntlayer("my_key");return <p>{publishStatus[publishType]}</p>;Intlayer derleyicisi (compiler), kullanılmayan içeriği kaldırmak ve kalan anahtarları küçültmek (minify) için kaynak kodunuzu ayrıştırır. Dinamik olarak hesaplanan erişim (obj[expr]) statik olarak çözümlenemez, bu nedenle tüm dal opak olarak işaretlenir: pakette tutulacak ve anahtarları küçültülmeyecektir.
select() kullanarak, durum çözümü (case resolution) bir özellik erişimi yerine bir işlev çağrısı içinde gerçekleşir. Derleyici bunu tek bir statik alan erişimi olarak görür ve tıpkı enu(), cond() veya gender() ile yaptığı gibi düğümü doğru bir şekilde optimize eder:
Kodu panoya kopyala
// ✅ Bunu yapınconst { publishStatus } = useIntlayer("my_key");return <p>{publishStatus(publishType)}</p>;Seçime Dayalı İçeriği Kullanma
React bileşeninde seçime dayalı içeriği kullanmak için, react-intlayer paketinden useIntlayer kancasını (hook) içe aktarın ve kullanın. Bu kanca, belirtilen anahtar için içeriği getirir ve uygun çıktıyı seçmek üzere bir değer iletmenizi sağlar.
Kodu panoya kopyala
import type { FC } from "react";
import { useIntlayer } from "react-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>
{
/* Çıktı: This post is a draft */
publishStatus("draft")
}
</p>
<p>
{
/* Çıktı: This post is live */
publishStatus("published")
}
</p>
<p>
{
/* Çıktı: Unknown status */
publishStatus("Archived")
}
</p>
</div>
);
};
export default PostStatus;Select ile Diğer Düğümleri Birleştirme
Her durum tam bir içerik düğümü barındırdığından, select t(), insert(), md() vb. ile birleştirilebilir:
Kodu panoya kopyala
import { insert, select, t, type Dictionary } from "intlayer";const myPostContent = { key: "my_key", content: { publishStatus: select({ draft: insert( t({ en: "{{name}} saved a draft", fr: "{{name}} a enregistré un brouillon", tr: "{{name}} bir taslak kaydetti", }) ), published: insert( t({ en: "{{name}} published the post", fr: "{{name}} a publié l’article", tr: "{{name}} gönderiyi yayınladı", }) ), fallback: insert( t({ en: "{{name}} updated the post", fr: "{{name}} a mis à jour l’article", tr: "{{name}} gönderiyi güncelledi", }) ), }), },} satisfies Dictionary;export default myPostContent;Kodu panoya kopyala
publishStatus("draft")({ name: "Alice" }); // Çıktı: Alice bir taslak kaydettiICU select 'ten Geçiş
ICU select argümanını kullanan mesajlar select düğümü olarak içe aktarılır:
Kodu panoya kopyala
{publishType, select, draft {draft} published {published} other {Unknown}}Şuna dönüşür:
Kodu panoya kopyala
select( { draft: "draft", published: "published", fallback: "Unknown", }, "publishType");ICU other durumu, Intlayer'da her şeyi yakalayan durumların (catch-all cases) standart adı olan fallback olarak yeniden adlandırılır. İkinci argüman ICU değişken adını tutar, böylece mesaj dışa aktarıldığında (export) tekrar aynı ICU dizesine dönüştürülür.
Lütfen dikkat edin; durumların cinsiyet değerleri (male/female/other) olduğu ICUselectmesajları bunun yerine birgenderdüğümü olarak içe aktarılır.
Ek Kaynaklar
Yapılandırma ve kullanım hakkında daha ayrıntılı bilgi için aşağıdaki kaynaklara bakın:
Bu kaynaklar, Intlayer'ın kurulumu ve kullanımı hakkında çeşitli ortamlarda ve framework'lerde daha fazla bilgi sağlar.