<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet type="text/xsl" href="/feed.xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>I18n on jvalol</title><link>https://jva.lol/tags/i18n/</link><description>Recent content in I18n on jvalol</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 02 Aug 2026 14:44:13 -0600</lastBuildDate><atom:link href="https://jva.lol/tags/i18n/index.xml" rel="self" type="application/rss+xml"/><item><title>23 languages, one I can check</title><link>https://jva.lol/weblog/23-languages-one-i-can-check/</link><pubDate>Sun, 02 Aug 2026 14:44:13 -0600</pubDate><guid>https://jva.lol/weblog/23-languages-one-i-can-check/</guid><description>In which I ship translations I can’t read, on the strength of the one I can</description><content:encoded>&lt;p&gt;&lt;a href="https://popsicleboat.com"&gt;Popsicle Boat&lt;/a&gt; is available in 23 languages besides English now. I speak two of them: English and German.&lt;/p&gt;
&lt;p&gt;I wired gettext in early, so every visible string in the app has been going through a translation function from the beginning. That part was just discipline. What I never had was the translations themselves. There are about 1,500 strings in there. Getting those into Arabic, Thai, Korean, Ukrainian, and twenty more is not something I was ever going to do myself, and paying 23 translators for a hobby project was never going to happen either. So it just sat there, one language, waiting.&lt;/p&gt;
&lt;p&gt;The AI did it. All of them, in an afternoon.&lt;/p&gt;
&lt;p&gt;&lt;video autoplay loop muted playsinline preload="metadata" class="flavor" src="https://jva.lol/weblog/23-languages-one-i-can-check/solari-board.mp4" aria-label="A split-flap train board clattering through garbled characters until each word lands"&gt;&lt;/video&gt;&lt;span class="flavor-caption"&gt;It lands on the right word. Usually.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="the-part-that-should-bother-you"&gt;
The part that should bother you
&lt;a class="anchor" href="#the-part-that-should-bother-you"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;You can&amp;rsquo;t check the work. That&amp;rsquo;s the whole problem. I can look at the Thai file and tell you it&amp;rsquo;s Thai, and that&amp;rsquo;s the end of what I know. If it&amp;rsquo;s stiff, or wrong, or accidentally rude, I have no way to find out until a person who speaks it tells me. Shipping a thing you can&amp;rsquo;t read to people who can read it is a little terrifying.&lt;/p&gt;
&lt;h2 id="why-i-shipped-it-anyway"&gt;
Why I shipped it anyway
&lt;a class="anchor" href="#why-i-shipped-it-anyway"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;German. I read it, write it, and speak it fluently, and it happens to be one of the 23.&lt;/p&gt;
&lt;p&gt;So I read the German. I didn&amp;rsquo;t skim, I read. I scoured. And it&amp;rsquo;s good. Not &amp;ldquo;technically correct&amp;rdquo; good, actually good. The tone matches, the informal tonality is consistent, the UI strings are the ones a German app would use instead of the literal translation of the English. A few things I&amp;rsquo;d have phrased differently, which is also true of things I write in English. So in general, it&amp;rsquo;s been a good exercise in reviewing copy that faces users. Probably (almost certainly) still rough edges especially in languages I don&amp;rsquo;t know, but also the two I do. But AI brought me a &lt;em&gt;loooooooong&lt;/em&gt; way to supporting languages I simply don&amp;rsquo;t know.&lt;/p&gt;
&lt;h2 id="what-id-tell-you-to-do"&gt;
What I&amp;rsquo;d tell you to do
&lt;a class="anchor" href="#what-id-tell-you-to-do"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;This has been an experiment, mostly. Of course I&amp;rsquo;d love a global audience, but this was not an anticipatory effort. It was more like &amp;ldquo;Can AI do this?&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re interested in trying, I&amp;rsquo;d say this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ship translations for languages nobody uses yet and you learn nothing&lt;/li&gt;
&lt;li&gt;Check the one you know, honestly, all the way through&lt;/li&gt;
&lt;li&gt;Then decide about the rest&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If I didn&amp;rsquo;t know German, I don&amp;rsquo;t think I&amp;rsquo;d have pushed this. But because I know my own fluency, I could spot check the german translation and it was &lt;em&gt;good&lt;/em&gt;. It was like, &lt;em&gt;really good&lt;/em&gt;. So that gave me confidence on all the languages I do &lt;em&gt;not&lt;/em&gt; know.&lt;/p&gt;
&lt;p&gt;Way cool, friends. This technology is not just a toy. It&amp;rsquo;s massively powerful.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a feedback link in the sidebar and it goes to me. If something reads wrong in your language, that&amp;rsquo;s the fastest way to fix it, and honestly I&amp;rsquo;d rather hear it from you than not know.&lt;/p&gt;
&lt;p&gt;Cheers
Jake&lt;/p&gt;</content:encoded></item></channel></rss>