1.0.2 • Published 1 year ago

tongues v1.0.2

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

Tongues

KCV dictionary parser intended for i18n. Written in TS.

because that's not what JSON is for

Usage

const en = `
key // comment
	value!

another.key
	another
	value!
`;

const dictionaries = { en };

// create tongues instance by providing dictionaries
const instance = tongues(dictionaries);

// get t function for available dictionary
const t = instance.getMap("en");

t("key");
// value!
t("undefined key", "default value");
// default value

For demonstration purposes, the dictionary is stored as string literal.

Build systems usually allow to import files as strings. In Vite, for example, you can use ?raw suffix:

import en from "./assets/en.kcv.txt?raw";
import es from "./assets/es.kcv.txt?raw";

const dictionaries = { en, es };
const instance = tongues(dictionaries);

Import

Tongues is an ES6 module, so:

import tongues from "tongues";
// if you need a type of t-function:
import type { LocaleMap } from "tongues";

Dictionary format

Provided dictionary is split into lines. Lines that start with tabulation (\t) character are value lines, lines that don't are key lines. Key lines are read until // or end of the line, whitespaces are trimmed, resulting string is then considered a key for the following lines, until another key is found.

  • \r\n is automatically replaced with \n
  • 4 spaces in the beggining of a line are replaced with tabulation character
  • first tabulation character is removed from value lines, multiline values ar joined with \n
  • empty or whitespace-only lines are ignored, unless they start with \t

Syntax highlighting

You can use vscode extension to highlight dictionaries stored in .kcv.txt files, check releases.

License

Shared under WTFPL license.

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago