Forthwith is a cross-platform localization CLI that finds issues before users do. Run a free, local check—no account, upload, or configuration—to catch missing keys, malformed files, placeholder mismatches, plural gaps, duplicates, and untranslated values. When you’re ready, Forthwith translates only new or changed strings, validates framework-specific structure, and writes reviewable diffs for iOS, Android, Flutter, React Native, React, Phoenix, and go-i18n.
No reviews yetBe the first to leave a review for Forthwith · Forthwith
Maker
📌
Hi Product Hunt! I built Forthwith to make localization feel like a reliable part of the development workflow instead of a fragile, manual release task.
The free `forthwith check` command runs entirely on your machine—no account, upload, or config—and points to concrete problems in your existing localization files. If you want the full workflow, Forthwith detects only new and changed strings, translates them with framework context, validates placeholders, plurals, keys, and structure, then writes a clean diff for review.
It works across iOS, Android, Flutter, React Native, React, Phoenix, and go-i18n. I’d love to hear how your team handles localization today, and which framework or workflow you’d like us to support next.
Report
Maker
Today I strategically shortened the translation prompts I use in three ways:
- Only send relevant examples to help the model (I was sending all of the examples in all cases)
- Remove duplicate instructions (including some output instructions that were already covered by previous instructions - Send a shorter retry prompt if the model makes mistakes with the initial prompt, instead of sending the entire prompt + the retry prompt
I did this, because I want Forthwith users to get the best bang for their buck, and prompt words count towards the total billable words. This will enable you to get more translations with the same subscription. Enjoy!
Report
Maker
Forthwith now supports Phoenix apps using Cldr.Gettext.Plural 🎉
Forthwith automatically detects CLDR-backed Gettext configuration and correctly handles each locale’s plural
categories and .po slot mapping—including Russian’s one, few, many, and other forms.
Safer, more accurate Phoenix localization with no extra configuration required.
Report
Maker
I just posted a new article on the Forthwith blog. It's super nerdy, but I think it will be a very interesting read for anyone who does Elixir/Phoenix development, or who uses CLDR. It's called "Why CLDR Plural Rules and Gettext Don’t Agree (and Why It Matters for AI Localization)" and you can find it here: https://forthwith.dev/blog/cldr-plural-rules-vs-gettext
Today I strategically shortened the translation prompts I use in three ways:
- Only send relevant examples to help the model (I was sending all of the examples in all cases)
- Remove duplicate instructions (including some output instructions that were already covered by previous instructions - Send a shorter retry prompt if the model makes mistakes with the initial prompt, instead of sending the entire prompt + the retry prompt
I did this, because I want Forthwith users to get the best bang for their buck, and prompt words count towards the total billable words. This will enable you to get more translations with the same subscription. Enjoy!
Forthwith now supports Phoenix apps using Cldr.Gettext.Plural 🎉
Forthwith automatically detects CLDR-backed Gettext configuration and correctly handles each locale’s plural
categories and .po slot mapping—including Russian’s one, few, many, and other forms.
Safer, more accurate Phoenix localization with no extra configuration required.
I just posted a new article on the Forthwith blog. It's super nerdy, but I think it will be a very interesting read for anyone who does Elixir/Phoenix development, or who uses CLDR. It's called "Why CLDR Plural Rules and Gettext Don’t Agree (and Why It Matters for AI Localization)" and you can find it here: https://forthwith.dev/blog/cldr-plural-rules-vs-gettext