0.0.6 • Published 1 year ago

zykie v0.0.6

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

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

0.0.5

1 year ago

0.0.6

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago