Pag-format ng mensahe

Gumagamit ang 18ways ng waysParser bilang default. Ang parser na iyon ang nagbibigay-daan para manatiling madaling basahin ang source copy habang hinahawakan pa rin ang mga variable at pag-format na alam ang locale.

Mga Variable

Gumamit ng braces para sa mga variable. Sa <T>, puwede mong panatilihing inline ang value katabi ng mensahe.

ts
const label = await engine.t('Welcome back, {name}', {
  vars: { name: 'Ada' },
});

Pagpaparami ng isahan sa maramihan

Gamitin ang mga plural block na estilo ng ICU kapag tunay na nag-iiba ang anyo ng pangungusap.

ts
const summary = await engine.t(
  '{count, plural, =0{No messages} =1{One message} other{{count} messages}}',
  {
    vars: { count: 3 },
  }
);

Mga petsa at pera

Kung magpapasa ka ng tunay na Date o ng object na parang pera na may amount at currency, awtomatikong ite-text format ng 18ways ito kahit may simpleng placeholder lang tulad ng {publishedAt} o {renewalTotal}.

Gamitin ang explicit formatter lang kapag gusto mong kontrolin ang output, tulad ng dateStyle:long o isang custom na divisor ng pera.

ts
const publishedAt = new Date('2026-03-14T09:00:00Z');
const renewalTotal = {
  amount: 1900,
  currency: 'USD',
};
 
const updatedLabel = await engine.t('Last updated {publishedAt}', {
  vars: { publishedAt },
});
 
const totalLabel = await engine.t('Renewal total {renewalTotal}', {
  vars: { renewalTotal },
});
 
const detailedDate = await engine.t('Detailed date: {publishedAt, date, dateStyle:long}', {
  vars: { publishedAt },
});

Bilang default, itinuturing ang mga halaga ng pera bilang mga minor unit. Kung mayroon ka nang mga major unit, gamitin ang explicit na money formatter na may divisor: 1.

Pumili ng mga bloke

Gamitin ang select kapag nakadepende ang kopya sa maliit na hanay ng magkakahiwalay na mga halaga.

ts
const banner = await engine.t(
  '{isSignedIn, select, true{Welcome back, {name}} false{Sign in to continue} other{Sign in to continue}}',
  {
    vars: {
      isSignedIn: true,
      name: 'Ada',
    },
  }
);

Komposisyon ng bahagi

@18ways/core returns strings. If you need rich text, keep the sentence whole and handle markup in your own renderer.

ts
const cta = await engine.t('Click here to see more');

If your app needs automatic JSX composition, move up to @18ways/react or @18ways/next.

Praktikal na tuntunin

Kung ang pangungusap ay puwedeng isulat bilang isang buong parirala na may ilang variable, panatilihin ito sa isang mensahe. Mas napapaganda nito nang malaki ang kalidad ng salin kaysa sa pagdugtung-dugtong ng mga pira-piraso sa code.

Pinapalitan ang wika
Pag-format ng Mensahe