1.4.2 • Published 1 month ago

tira-translate v1.4.2

Weekly downloads
-
License
MIT
Repository
github
Last release
1 month ago

Tira - Translate

Simple yet powerful typescript internationalization (i18n) library. Maximal type safety with minimal effort

Links:

About:

Advantages:

  • 🚀 Maximal typesafety
  • 🤝 Really easy to use.
  • 📂 Tiny (~5KB gzip, zero deps)
  • 🕙 Performant
Maximal typesafety

Tira provides you The Best Typesafety compared to any other typescript lib

You don't need to repeat yourself defining translation and interface separately. All types are automatically collected from data model

You don't need to run background service to sync types like you would do with typesafe-i18n and some other libs. All code you write is automatically checked

Really easy to use

Minimal boilerplate. It takes few lines to setup library. All simplest as possible for user

Installation:

npm install tira-translate

Important: your typescript version should be >= ~4.7.2

Usage:

Simple

const enLocale = new BaseLocale({
  hello: token("Hello"),
})

const frLocale = enLocale.createChild({
  hello: token("Bonjour"),
})

// Tokens tree just as you defined above
const tokens = enLocale.tokens

const translations = {
  en: new Translation(enLocale),
  fr: new Translation(frLocale),
}

translations.en.get(tokens.hello) // Hello
translations.fr.get(tokens.hello) // Bonjour

Advanced

const enLocale = new BaseLocale({
  //  Simple translation
  hi: token("Hi"),
  // Nested translation
  user: {
    // Functional translation
    greet: token((options: { name: string }) => {
      return `Hi ${options.name}`
    }),
  },
})

// Use in your files
export const translateTokens = enLocale.tokens

const frLocale = enLocale.createChild({
  /**
    Use default translations if you don't have all
    (Completely optional)
  */
  ...translateTokens,
  // Override only required
  user: {
    // Options type is automatically detected from base locale
    greet: token(options => {
      return `Bonjour ${options.name}`
    }),
  },
})

const translations = {
  en: new Translation(enLocale),
  fr: new Translation(frLocale),
}

/*
Select translation based on your app logic. 
Simple example for demonstration
*/
const translation = translations.fr

// For simple translations second argument is not used
translation.get(translateTokens.hi)

// Automatically checks type of passed object
translation.get(translateTokens.user.greet, { name: "Ashley" })

/*
Returns an error because object {name: string} is missing. 
You are safe ^..^! 
*/
translation.get(translateTokens.user.greet)
1.4.2

1 month ago

1.4.1

1 month ago

1.4.0

1 month ago

1.3.4

1 month ago

1.3.3

1 month ago

1.3.2

1 month ago

1.3.1

1 month ago

1.3.0

1 month ago

1.2.0

1 month ago

1.1.3

1 month ago

1.1.2

1 month ago

1.1.1

2 months ago

1.1.0

2 months ago

1.0.0

2 months ago