npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

sammich

v1.0.0

Published

typesafe UI internationalization, done right, with 0 overhead

Downloads

165

Readme

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.