Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Zykie allows you to easily build & consume fully typesafe translations in your app.

Contraboi/zykie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

frame-1.gif frame-2.gif

Build Size Version

Intro

Zykie allows you to easily build & consume fully typesafe translations in your app. It's a small, fast and scalable internationalization library with high focus on the type safety and developer experience.

Features

  • ✅  Well-tested and production ready.
  • 🧙‍♂️  Full static typesafety & autocompletion
  • 🐎  Snappy DX - No code generation, run-time bloat, or build pipeline.
  • 🍃  Light - zykie has zero deps and a tiny client-side footprint.
  • 🐻  Easy to add to your existing brownfield project.

You can try a live demo here.

npm install zykie # or yarn add zykie or pnpm add zykie

First create an instance

import { Zykie } from "zykie";

const locales = ["en", "ba"] as const;
const currentLocale = "en";
const fallbackLocale = "en";

const zykie = new Zykie({
  locales,
  currentLocale,
  fallbackLocale,
});

Then create a translation

const hello = zykie.create({
  en: "Hello",
  ba: "Zdravo",
});

console.log(hello.get()); // Hello

Variables

If you want to use variables in your translations, you can use the var{variable} syntax.

const greet = zykie.create({
  en: "Hello, var{name}",
  ba: "Zdravo, var{name}",
});

console.log(greet.get({ name: "John" })); // Hello, John

Dynamic locales

You can also use change the current locale dynamically.

const locales = ["en", "ba"] as const;
const currentLocale = "en";
const fallbackLocale = "en";

const zykie = new Zykie({
  locales,
  currentLocale,
  fallbackLocale,
});

const greet = zykie.create({
  en: "Hello, var{name}",
  ba: "Zdravo, var{name}",
});

console.log(greet.get({ name: "John" })); // Hello, John

zykie.changeLocale("ba");

console.log(greet.get({ name: "John" })); // Zdravo, John

Locales can also be passed as an option to the get method. This is useful for cases where you want to use a different locale for a specific translation, but don't want to change the current locale.

console.log(
  greet.get(
    { name: "John" },
    {
      locale: "ba",
    },
  ),
); // Zdravo, John

Variations

Zykie supports variations, which are useful for pluralization. To use variations, you can use the variation method. Variations are evaluated in the order they are defined, and the first one that matches the condition is used.

const dollarAmount = zykie
  .create({
    en: "Hello, var{name} You have var{amount} dollars",
    ba: "Zdravo, var{name} imate var{amount} dolara",
  })
  .variation(({ amount }) => parseInt(amount) === 1, {
    en: "Hello, var{name} You have var{amount} dollar",
    ba: "Zdravo, var{name} Imate var{amount} dolar",
  })
  .variation(
    ({ amount }) => {
      const number = parseInt(amount);
      return number > 20 && number % 10 === 1;
    },
    { ba: "Zdravo, var{name} imate var{amount} dolar" },
  );

console.log(dollarAmount.get({ name: "John", amount: "1" })); // Hello, John You have 1 dollar

frame-3.gif

About

Zykie allows you to easily build & consume fully typesafe translations in your app.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published