संदेश स्वरूपण

18ways डिफ़ॉल्ट रूप से waysParser का उपयोग करता है। वही पार्सर है जो आपको सोर्स कॉपी को पठनीय बनाए रखने देता है और साथ ही variables तथा locale-aware formatting को संभालता है.

चर

वेरिएबल्स के लिए ब्रेसेज़ का उपयोग करें। <T> के साथ, आप मान को संदेश के साथ इनलाइन रख सकते हैं।

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

बहुवचन

जब वाक्य का रूप सचमुच बदलता हो, तब ICU-शैली के बहुवचन ब्लॉक इस्तेमाल करें.

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

तारीख़ें और पैसे

यदि आप एक असली Date या amount और currency वाला धन-समान ऑब्जेक्ट पास करते हैं, तो 18ways उसे अपने-आप फ़ॉर्मैट करेगा यहाँ तक कि {publishedAt} या {renewalTotal} जैसे साधारण प्लेसहोल्डर के साथ भी।

आउटपुट पर नियंत्रण रखना चाहें, तभी explicit formatter का उपयोग करें, जैसे dateStyle:long या एक कस्टम money divisor.

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 },
});

डिफ़ॉल्ट रूप से, धनराशियों को लघु इकाइयों के रूप में माना जाता है। यदि आपके पास पहले से ही प्रमुख इकाइयाँ हैं, तो divisor: 1 के साथ स्पष्ट मनी फ़ॉर्मैटर का उपयोग करें।

ब्लॉक चुनें

जब कॉपी कुछ चुनिंदा, अलग-अलग मानों के छोटे सेट पर निर्भर हो, तब select का उपयोग करें।

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',
    },
  }
);

घटक संरचना

@18ways/core स्ट्रिंग्स लौटाता है। अगर आपको रिच टेक्स्ट चाहिए, तो वाक्य को पूरा रखें और मार्कअप को अपने अपने रेंडरर में संभालें।

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

अगर आपके ऐप को स्वचालित JSX संयोजन की ज़रूरत है, तो @18ways/react या @18ways/next पर अपग्रेड करें।

व्यावहारिक नियम

अगर वाक्य को कुछ variables के साथ एक पूरे वाक्यांश के रूप में लिखा जा सकता है, तो उसे एक ही message में रखें। इससे translation quality code में fragments को जोड़कर बनाने की तुलना में बहुत ज़्यादा बेहतर हो जाती है.

संदेश फ़ॉर्मेटिंग