Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Historia wersji
- "Wprowadzono treść opartą na wyborze (select)"v9.1.030.07.2026
Treść tej strony została przetłumaczona przy użyciu sztucznej inteligencji.
Zobacz ostatnią wersję oryginalnej treści w języku angielskimJeśli masz pomysł na ulepszenie tej dokumentacji, zachęcamy do przesłania pull requesta na GitHubie.
Link do dokumentacji na GitHubieKopiuj dokument Markdown do schowka
Treść Oparta na Wyborze (Select) / Intlayer
Jak Działa Select
W Intlayer treść oparta na wyborze jest osiągana za pomocą funkcji select, która mapuje dowolne wartości znakowe na odpowiadającą im treść. Jest to odpowiednik komunikatu ICU {value, select, …} lub podobne do instrukcji switch w kodzie Twojej aplikacji.
Używaj select, gdy dyskryminatorem (discriminant) jest dowolny ciąg znaków (string): status, plan, platforma lub rola (role). Dla innych dyskryminatorów Intlayer udostępnia dedykowane węzły:
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Dyskryminator | Węzeł |
|---|---|
| Ilość (Quantity) | enu() |
| Logiczny (Boolean) | cond() |
| Płeć (Gender) | gender() |
| Dowolny inny ciąg | select() |
Konfigurowanie Treści Opartej na Wyborze
Aby skonfigurować treść opartą na wyborze w projekcie Intlayer, utwórz moduł treści zawierający Twoje definicje wyboru. Poniżej znajdują się przykłady w różnych formatach.
Skopiuj kod do schowka
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", // opcjonalne
}),
},
} satisfies Dictionary;
export default myPostContent;
Jeśli nie zostanie zadeklarowany żadenfallback, ostatni zadeklarowany klucz jest uważany za wariant rezerwowy, gdy dostarczona wartość nie pasuje do żadnego z zadeklarowanych przypadków: dokładnie tak samo jak w kontraktachcond()igender().
Bezpieczeństwo Typów (Type Safety)
Akceptowany argument jest wnioskowany z zadeklarowanych przypadków:
- Bez
fallback, akceptowane są tylko zadeklarowane przypadki: literówka spowoduje błąd typu (type error). - Z
fallback, każdy ciąg znaków (string) jest akceptowany (ponieważ fallback pokrywa niedopasowane wartości), podczas gdy zadeklarowane przypadki nadal zapewniają autouzupełnianie.
Dlaczego Nie Używać Zwykłego Obiektu?
Kuszące może być zadeklarowanie zwykłego obiektu i indeksowanie go za pomocą wartości w czasie wykonywania (runtime value):
Skopiuj kod do schowka
Kompilator Intlayer analizuje Twój kod źródłowy, aby wyeliminować nieużywane treści i zminifikować pozostałe klucze. Dynamicznie obliczany dostęp (obj[expr]) nie może zostać rozwiązany statycznie, dlatego cała gałąź zostanie oznaczona jako nieprzezroczysta (opaque): zostanie zachowana w bundle'u, a jej klucze nie zostaną zminifikowane.
Korzystając z select(), rozwiązywanie przypadków (case resolution) odbywa się wewnątrz wywołania funkcji, a nie poprzez dostęp do właściwości. Kompilator widzi to jako pojedynczy, statyczny dostęp do pola i optymalizuje ten węzeł dokładnie tak, jak robi to z enu(), cond() lub gender():
Skopiuj kod do schowka
Używanie Treści Opartej na Wyborze
Aby wykorzystać treść opartą na wyborze w komponencie React, zaimportuj i użyj hooka useIntlayer z pakietu react-intlayer. Ten hook pobiera treść dla podanego klucza i pozwala przekazać wartość w celu wybrania odpowiedniego wyniku.
Skopiuj kod do schowka
import type { FC } from "react";
import { useIntlayer } from "react-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>
{
/* Wynik: This post is a draft */
publishStatus("draft")
}
</p>
<p>
{
/* Wynik: This post is live */
publishStatus("published")
}
</p>
<p>
{
/* Wynik: Unknown status */
publishStatus("Archived")
}
</p>
</div>
);
};
export default PostStatus;
Aby wykorzystać treść opartą na wyborze w Next.js Client Components, pobierz zawartość za pomocą hooka useIntlayer. Oto przykład:
Skopiuj kod do schowka
"use client";
import type { FC } from "react";
import { useIntlayer } from "next-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>{publishStatus("draft")}</p>
<p>{publishStatus("published")}</p>
</div>
);
};
export default PostStatus;
Aby wykorzystać treść opartą na wyborze w komponentach Vue, pobierz zawartość za pomocą hooka useIntlayer. Oto przykład:
Skopiuj kod do schowka
Aby wykorzystać treść opartą na wyborze w komponentach Svelte, pobierz zawartość za pomocą hooka useIntlayer. Dostęp do store uzyskuje się za pomocą znaku $. Oto przykład:
Skopiuj kod do schowka
Aby wykorzystać treść opartą na wyborze w komponentach Preact, pobierz zawartość za pomocą hooka useIntlayer. Oto przykład:
Skopiuj kod do schowka
import type { FC } from "preact";
import { useIntlayer } from "preact-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>{publishStatus("draft")}</p>
<p>{publishStatus("published")}</p>
</div>
);
};
export default PostStatus;
Aby wykorzystać treść opartą na wyborze w komponentach SolidJS, pobierz zawartość za pomocą hooka useIntlayer. Oto przykład:
Skopiuj kod do schowka
import type { Component } from "solid-js";
import { useIntlayer } from "solid-intlayer";
const PostStatus: Component = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>{publishStatus("draft")}</p>
<p>{publishStatus("published")}</p>
</div>
);
};
export default PostStatus;
Aby wykorzystać treść opartą na wyborze w komponentach Angular, pobierz zawartość za pomocą hooka useIntlayer. Oto przykład:
Skopiuj kod do schowka
Aby wykorzystać treść opartą na wyborze w vanilla-intlayer, pobierz zawartość za pomocą funkcji useIntlayer. Oto przykład:
Skopiuj kod do schowka
import { installIntlayer, useIntlayer } from "vanilla-intlayer";
installIntlayer();
const content = useIntlayer("my_key").onChange((newContent) => {
document.getElementById("status")!.textContent =
newContent.publishStatus("draft");
});
// Wstępne renderowanie (Initial render)
document.getElementById("status")!.textContent = content.publishStatus("draft");
Łączenie Select z Innymi Węzłami
Ponieważ każdy przypadek (case) zawiera pełny węzeł treści, select można łączyć z t(), insert(), md() itp.:
Skopiuj kod do schowka
Skopiuj kod do schowka
Migracja z ICU select
Wiadomości wykorzystujące argument ICU select są importowane jako węzeł select:
Skopiuj kod do schowka
Zostaną przekształcone na:
Skopiuj kod do schowka
Przypadek (case) other z ICU jest zmieniany na fallback, co jest kanoniczną nazwą w Intlayer dla wszystkich ogólnych przypadków typu catch-all. Drugi argument przechowuje nazwę zmiennej ICU, dzięki czemu przy eksporcie wiadomość przekształca się dokładnie w ten sam ciąg znaków ICU.
Pamiętaj, że komunikaty ICUselect, w których przypadkami są wartości płci (male/female/other), są importowane jako węzełgender.
Dodatkowe Zasoby
Aby uzyskać bardziej szczegółowe informacje na temat konfiguracji i użytkowania, zapoznaj się z poniższymi zasobami:
Powyższe zasoby dostarczają dalszych spostrzeżeń dotyczących konfiguracji i używania Intlayer w różnych środowiskach i frameworkach.