Skip to content

Latest commit

 

History

History
62 lines (45 loc) · 2.03 KB

README.md

File metadata and controls

62 lines (45 loc) · 2.03 KB

sammich

Typesafe UI internationalization, done right:

  • 0kb runtime weight
  • 0ms build-time overhead
  • instead of mere string interpolation, do anything you can code

TOC


Usage

npx sammich path/to/i18n [--dynamic] [--jsx] [--omit-ext] --- en de fr

Note the triple dash to work around npx's arguments handling. Alternatively, use two double dashes.

Then in your code:

import { i18n } from "./path/to/i18n"

const t = i18n("en")

print(t.simple.text)
print(t.arbitrary.functions("with", "arbitrary", "arguments"))

const Render = t.even.ReactComponents.if.you.want
print(<Render prop={value} />)

Parameters

--dynamic

Generate dynamic imports instead of static ones, so that only the requested Locale is imported.

Use this for large data sets.

--jsx

Generate .tsx/.jsx files.

--omit-ext

Generate extension-less imports.

By default, the imports use .js/.jsx file extensions, as per TypeScript defaults.

What does it do, how does it work?

TypeScript does the heavy lifting, sammich is just a little helper to set you up correctly.

You could easily do all this without a package, there is no runtime dependency because nobody needs that. This package exists to take care of boilerplate, enhance ease of repetition, and documentation.

What's with the name?

A sandwich is simple but nourishing and you can have it your way in almost every way. You need nothing special for it – some bread and whatever you like to put in the middle.

A sammich, as the UD tells us, is a sandwich done just right.

sammich gives you the same features for UI internationalization.