<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: NewtTheWolf</title>
    <description>The latest articles on DEV Community by NewtTheWolf (@newtthewolf).</description>
    <link>https://dev.to/newtthewolf</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F723821%2F49d56b7a-4d42-4a59-8a88-673355a29d75.png</url>
      <title>DEV Community: NewtTheWolf</title>
      <link>https://dev.to/newtthewolf</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/newtthewolf"/>
    <language>en</language>
    <item>
      <title>Why we picked Tolgee to localize an open-source database client</title>
      <dc:creator>NewtTheWolf</dc:creator>
      <pubDate>Fri, 19 Jun 2026 16:33:22 +0000</pubDate>
      <link>https://dev.to/newtthewolf/why-we-picked-tolgee-to-localize-an-open-source-database-client-2lem</link>
      <guid>https://dev.to/newtthewolf/why-we-picked-tolgee-to-localize-an-open-source-database-client-2lem</guid>
      <description>&lt;p&gt;Localization is invisible. Nobody opens an app and thinks "wow, great&lt;br&gt;
translation infrastructure." They only notice when a button is cut off, a&lt;br&gt;
date is wrong, or half the menu is suddenly in English again. It's&lt;br&gt;
unglamorous work that quietly decides whether someone outside your own&lt;br&gt;
language ever sticks with your tool.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tabularis.dev" rel="noopener noreferrer"&gt;Tabularis&lt;/a&gt;, our open-source database client, ships&lt;br&gt;
in &lt;strong&gt;8 languages&lt;/strong&gt; today: English, Italian, Spanish, Chinese, French, German,&lt;br&gt;
Japanese and Russian. Under the hood that's &lt;code&gt;i18next&lt;/code&gt; and a folder of JSON&lt;br&gt;
locale files (we're mid-migration to &lt;a href="https://lingui.dev" rel="noopener noreferrer"&gt;Lingui&lt;/a&gt; for the&lt;br&gt;
runtime — more on why below). It works, but the contributor experience was&lt;br&gt;
rough: if you wanted to help translate, you were editing raw JSON keys in a Git&lt;br&gt;
diff, with no idea where each string actually shows up.&lt;/p&gt;

&lt;p&gt;So we've decided to move our localization onto &lt;a href="https://tolgee.io" rel="noopener noreferrer"&gt;Tolgee&lt;/a&gt;,&lt;br&gt;
who have also stepped up to back the project while we do it. To be clear: this&lt;br&gt;
is the plan, not a shipped feature. The migration is ahead of us, not behind&lt;br&gt;
us. More on the sponsorship below, but a sponsor only matters if the tool&lt;br&gt;
underneath earns it, so here's the honest reasoning first, because it wasn't&lt;br&gt;
the first result on Google.&lt;/p&gt;

&lt;h3&gt;
  
  
  It actually fits an open-source, privacy-first project
&lt;/h3&gt;

&lt;p&gt;Tabularis is open source and built so it doesn't need an account or phone&lt;br&gt;
home. Wiring a closed SaaS into the translation pipeline always felt slightly&lt;br&gt;
at odds with that. Tolgee is open source and self-hostable, so the values&lt;br&gt;
line up instead of fighting each other.&lt;/p&gt;

&lt;h3&gt;
  
  
  Context-rich translating is the real unlock
&lt;/h3&gt;

&lt;p&gt;The feature that sold me: Tolgee shows translators each string &lt;strong&gt;with the&lt;br&gt;
screen it belongs to&lt;/strong&gt;, a screenshot of where it actually appears, rather&lt;br&gt;
than a blind list of JSON keys. Context is everything in translation. "Open"&lt;br&gt;
as a verb and "Open" as a status are the same four letters in English and&lt;br&gt;
completely different words in German, Japanese or Russian. Seeing the string&lt;br&gt;
where it lives is how you get good translations instead of merely literal&lt;br&gt;
ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  It isn't welded to our i18n library, which matters right now
&lt;/h3&gt;

&lt;p&gt;We're mid-migration from &lt;code&gt;i18next&lt;/code&gt; to &lt;a href="https://lingui.dev" rel="noopener noreferrer"&gt;Lingui&lt;/a&gt; for the&lt;br&gt;
runtime: Lingui is ICU-native, with compile-time extraction and type-safe&lt;br&gt;
macros, which is a cleaner foundation than hand-maintained i18next JSON keys. A&lt;br&gt;
platform bolted to one specific library would be a liability mid-move. Tolgee&lt;br&gt;
isn't, it manages strings as ICU messages and exports whatever the runtime&lt;br&gt;
needs (i18next JSON today, Lingui catalogs as we cut over), so it removes&lt;br&gt;
friction instead of becoming a third thing to migrate. And because Lingui is&lt;br&gt;
ICU-native, it fits Tolgee's internal model more tightly than i18next ever did.&lt;br&gt;
Going from 8 languages to "a lot more" becomes a throughput problem instead of&lt;br&gt;
a daunting one.&lt;/p&gt;

&lt;h3&gt;
  
  
  The part we're really here for: community translations
&lt;/h3&gt;

&lt;p&gt;This is what I'm most excited about. &lt;strong&gt;Community translations are on&lt;br&gt;
&lt;a href="https://tolgee.io/roadmap" rel="noopener noreferrer"&gt;Tolgee's own roadmap&lt;/a&gt;, tracked in&lt;br&gt;
&lt;a href="https://github.com/tolgee/tolgee-platform/issues/1360" rel="noopener noreferrer"&gt;issue #1360&lt;/a&gt;,&lt;/strong&gt; and we&lt;br&gt;
want to use it. We're not building this ourselves; we're adopting&lt;br&gt;
Tolgee now so that the moment the feature lands, the door opens.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/tolgee/tolgee-platform/issues/1360" rel="noopener noreferrer"&gt;roadmap issue&lt;/a&gt;&lt;br&gt;
describes almost exactly what we want: public projects, community members who&lt;br&gt;
can &lt;em&gt;propose&lt;/em&gt; translations, maintainers who &lt;em&gt;review and merge&lt;/em&gt;, and a focused&lt;br&gt;
"one string + a big screenshot" translate UI. Contributors get context, the&lt;br&gt;
maintainer keeps a quality gate, and nobody touches Git.&lt;/p&gt;

&lt;p&gt;How we see it rolling out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;First, from the web.&lt;/strong&gt; Pick your language, see what's missing, propose fixes
in context. Maintainers review and merge. No clone, no JSON, no Git.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delivered over the air.&lt;/strong&gt; With Tolgee's Content Delivery, an approved
translation can reach you &lt;em&gt;without waiting for the next app release&lt;/em&gt;. Every
language still ships bundled in the app as an offline fallback, with no account
and no API key in the build, but when you're online, improvements land on top.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eventually, in-app.&lt;/strong&gt; The long-term goal: fix an awkward label right where
you spotted it, inside Tabularis, and send it upstream. We're not there yet,
because doing it while staying offline-first and account-free is the hard part,
but that's the direction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've ever wanted to see your favorite tool in your language and were put&lt;br&gt;
off by the "submit a PR editing this JSON" barrier, that barrier is on its way&lt;br&gt;
out.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thanks
&lt;/h3&gt;

&lt;p&gt;And the part I said I'd come back to: &lt;strong&gt;Tolgee is backing Tabularis.&lt;/strong&gt; Not a&lt;br&gt;
logo on a sponsors page, but real support for an independent, out-of-pocket&lt;br&gt;
open-source project, which is what lets us do localization properly instead of&lt;br&gt;
squeezing it between bug fixes. It's one thing to build good developer tools;&lt;br&gt;
it's another to put your weight behind the people building open software with&lt;br&gt;
them. The fact that they're open source themselves is exactly why it reads as a&lt;br&gt;
fit and not a transaction. If you're shipping a multi-language app and still&lt;br&gt;
hand-editing JSON, go take a look at what they've built.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tabularis is free, open source, and already speaks 8 languages.&lt;/strong&gt; Want it in&lt;br&gt;
yours? &lt;a href="https://tabularis.dev/download" rel="noopener noreferrer"&gt;Download it&lt;/a&gt;, switch the language in&lt;br&gt;
settings, and tell us what reads wrong. Community translations are coming, and&lt;br&gt;
when they land, your language is going to need you.&lt;/p&gt;

&lt;p&gt;⭐ &lt;a href="https://github.com/TabularisDB/tabularis" rel="noopener noreferrer"&gt;Star us on GitHub&lt;/a&gt; ·&lt;br&gt;
📓 &lt;a href="https://tabularis.dev/blog" rel="noopener noreferrer"&gt;Read the blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>i18n</category>
      <category>lingui</category>
      <category>devtool</category>
    </item>
  </channel>
</rss>
