@garage44/expressio v1.5.1
Expressio
Multi-lingual applications by default
Quickstart
Expressio is a lightning fast i18n tool, built upon Bun and I18Next. Releases are available from npm, and can be run using bunx.
# Create or open an expressio project in the current directory:
bunx @garage44/expressio start
# Go to localhost:3000 to start translating
About
The translation process for software is typically slow and expensive, often requiring a professional translator. What makes it slow is that software engineers add new features and change existing ones all the time. This means that the source texts are constantly changing, and the translation process quickly becomes a bottleneck. The more languages you add, the more time it takes to keep your translations in sync.
Expressio is designed to address this issue; it allows multi-lingual functionality for any size software project, supporting a wide range of source and target languages through the use of machine translation. Adding a language in Expressio means ticking a checkbox of your required target translation in settings; not hours of coordination and manual translation time.
What sets Expressio aside, is that it is built around authoring source texts instead of target translations. This makes the whole authoring process alot simpler to keep in sync; there is no longer the need to check which target translations need to be updated, and which ones to be kept intact. When the source changes, all target translations will simply be updated. Expressio currently uses the Deepl API for this. A free Deepl API key for 500k characters per month can be requested with a credit card, but consider to use a paid plan when you're satisfied with the results. It's a small price to pay for the time saved.
Deepl's machine translation quality is currently unmatched, but Expressio is built not to rely too heavily on any particular service, so future alternative backends may be an option.
Usage
I scream, you scream, we all scream for ice cream
Native speakers or professional translators are not necessarily required for the translation process, although they can be used to assess and further improve the quality of the target translations, by adapting the source string.
The quality of the translations depends on the Deepl service. Producing quality translations with Expressio means focusing on writing commonly used source texts. A Cart may be translated as something that you drive into, but is also a familiar concept in any web shop. Using Your cart as source instead, may produce a different translation context. Rule of thumb is that if one target language translates well, all other target languages follow.
Placeholders
Deepl supports ignoring parts of the source for translation using XML tags. Expressio replaces i18next placeholders ({{}}) before sending them over for translation. After translation, the original placeholders are safely restored to the target translations, so these are safe to use.
Development
Tooling & common libraries for Expressio are currently in flux. To make development easier, Expressio is part of a mono repo workspace, which includes all the needed dependencies.
git clone https://codeberg.org/garage44/workspace.git
cd workspace
bun install
cd packages/expressio
# Start the Expressio service in development mode using Bunchy
BUN_ENV=development bun run app.ts start
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago