Sign in

Jan

@amann.work
230 followers 351 following 289 posts

Author of next-intl.dev, building eloqnt.dev

PostsRepliesMedia
Jan @amann.work · 09/09/2026
Yeah, absolutely! I've heard a couple of times that people (still) struggle with this, I might look into it … I wonder if it should work similar to automated code reviews on GitHub, where the author of a PR gets notified, but can choose to fix or not fix a reported finding.
010
Jan @amann.work · 09/09/2026
Were hardcoded strings a problem you had in a codebase?
100
Jan @amann.work · 09/09/2026
It depends. There is react/jsx-no-literals, which covers this well. But many strings also live in props, where it's trickier to detect. And then you might have toast.show('Hello!'), which is also a hardcoded string. So it depends on where you draw the line, this might need AI analysis.
100
Jan @amann.work · 09/09/2026
Would you like eloqnt/cli to catch hardcoded strings in your components? Does your agent get this wrong sometimes?
100
Jan @amann.work · 01/09/2026
cli.eloqnt.dev
cli.eloqnt.dev
eloqnt/cli — AI-powered translations for developers
Use AST-level analysis, context enrichment, styleguides, and integrated checks to translate your app—so quality holds up in languages you don’t speak. All from the command line.
000
Jan @amann.work · 01/09/2026
Seems like eloqnt/cli is helpful to you! Anything it could do that it doesn't today?
111
Jan @amann.work · 27/08/2026
github.com/amannn/next-...
github.com
Release v4.14.0 · amannn/next-intl
4.14.0 (2026-08-27) Features useExtracted improvements (#2346) (4ccf3b8) – by @amannn ⚠️ If you're using useExtracted and the po format, this requires an update to your messages. Please see #2393...
010
Jan @amann.work · 27/08/2026
next-intl 4.14 is out with 𝚞𝚜𝚎𝙴𝚡𝚝𝚛𝚊𝚌𝚝𝚎𝚍 improvements! → Switch 𝚖𝚜𝚐𝚒𝚍 of .𝚙𝚘 codec to source string → Support 𝙿𝚛𝚘𝚖𝚒𝚜𝚎.𝚊𝚕𝚕 with 𝚐𝚎𝚝𝙴𝚡𝚝𝚛𝚊𝚌𝚝𝚎𝚍 → Update 𝚜𝚠𝚌_𝚌𝚘𝚛𝚎 to 77
120
Jan @amann.work · 17/08/2026
next-intl.dev/blog/nextjs-...
next-intl.dev
Using next/root-params in Next.js 16.3 – Internationalization (i18n) for Next.js
Internationalization (i18n) for Next.js
030
Jan @amann.work · 17/08/2026
With 𝚗𝚎𝚡𝚝/𝚛𝚘𝚘𝚝-𝚙𝚊𝚛𝚊𝚖𝚜, you can cache more of your app. If you read a locale from 𝚌𝚘𝚘𝚔𝚒𝚎𝚜() or 𝚑𝚎𝚊𝚍𝚎𝚛𝚜(), this is request data. A locale from [𝚕𝚘𝚌𝚊𝚕𝚎] is a cache key. Your routing strategy becomes a caching decision.
120
Jan @amann.work · 12/08/2026
nextjs.org/blog/next-16...
nextjs.org
https://nextjs.org/blog/next-16-3#better-incremental-static-regeneration-isr
010
Jan @amann.work · 12/08/2026
Next.js 16.3 includes better ISR: Pages can now show an instant loading shell on first visit, and then upgrade to a fully prerendered page in the background (cached). This comes in handy for apps with a large number of locales!
183
Jan @amann.work · 06/08/2026
𝚎𝚕𝚘𝚚𝚗𝚝 𝚕𝚒𝚗𝚝 now links to rule details, so agents can get more guidance when fixing issues.
000
Jan @amann.work · 04/08/2026
Read all about it here → next-intl.dev/blog/nextjs-...
020
Jan @amann.work · 04/08/2026
Next.js 16.3 is out with next/root-params 🥹🥹🥹 I've literally waited years for this! Use it today with next-intl 🔗↓
140
Jan @amann.work · 03/08/2026
studio.eloqnt.dev/docs/lint-ru...
000
Jan @amann.work · 03/08/2026
With the number of lint rules for eloqnt/cli growing continuously, I've now added dedicated pages for each one. Is this helpful? Anything to add/change?
100
Jan @amann.work · 27/07/2026
studio.eloqnt.dev/docs/cli/cro...
studio.eloqnt.dev
eloqnt crowdin — eloqnt/studio
Sync messages with an existing Crowdin project.
010
Jan @amann.work · 27/07/2026
eloqnt/studio now has built-in Crowdin synchronization
100
Jan @amann.work · 27/07/2026
before/after
010
Jan @amann.work · 27/07/2026
MDX components in eloqnt/studio now render twice: → React for humans → Markdown for agents
110
Jan @amann.work · 27/07/2026
code.claude.com/docs/en/memory
code.claude.com
How Claude remembers your project - Claude Code Docs
Give Claude persistent instructions with CLAUDE.md files, and let Claude accumulate learnings automatically with auto memory.
000
Jan @amann.work · 27/07/2026
TIL in monorepos you can split 𝙲𝙻𝙰𝚄𝙳𝙴.𝚖𝚍 files by package, much tidier 💡 𝚎𝚕𝚘𝚚𝚗𝚝/ ─ 𝙲𝙻𝙰𝚄𝙳𝙴.𝚖𝚍 ─ 𝚊𝚙𝚙𝚜/ ─ 𝚜𝚝𝚞𝚍𝚒𝚘-𝚠𝚎𝚋/𝙲𝙻𝙰𝚄𝙳𝙴.𝚖𝚍 ─ 𝚙𝚊𝚌𝚔𝚊𝚐𝚎𝚜/ ─ 𝚌𝚕𝚒/𝙲𝙻𝙰𝚄𝙳𝙴.𝚖𝚍 ─ 𝚜𝚍𝚔/𝙲𝙻𝙰𝚄𝙳𝙴.𝚖𝚍
110
Jan @amann.work · 24/07/2026
studio.eloqnt.dev/docs
studio.eloqnt.dev
Introduction — eloqnt/studio
eloqnt/studio is an AI-based toolchain that helps you ship high-quality translations. Its primary entry point is a CLI, configured through local project files.
000
Jan @amann.work · 24/07/2026
Shipped a much-needed docs revamp for eloqnt/studio. → Zero-to-lint quickstart (with a prompt) → Copyable .𝚖𝚍 links → Support for 𝙰𝚌𝚌𝚎𝚙𝚝: 𝚝𝚎𝚡𝚝/𝚖𝚊𝚛𝚔𝚍𝚘𝚠𝚗 → Split into multiple pages → Public changelogs → It looks just a lot nicer :D
100
Jan @amann.work · 21/07/2026
next-intl@4.13.3 is out with a compatibility fix for the upcoming Next.js 16.3 release! github.com/amannn/next-...
github.com
Release v4.13.3 · amannn/next-intl
4.13.3 (2026-07-21) Bug Fixes Next.js 16.3 compatibility preparation (only update locale cookie for document requests and not prefetches) (#2355) (0555ace) – by @amannn
000
Jan @amann.work · 17/07/2026
studio.eloqnt.dev/docs#guides-...
studio.eloqnt.dev
Docs — eloqnt/studio
Reference documentation for eloqnt/studio.
000
Jan @amann.work · 17/07/2026
When should you translate your app? After every change? Before a commit, after a commit? What about the moment you switch the PR from "draft" to "ready for review"? bsky.app/profile/aman...
110
Jan @amann.work · 16/07/2026
What makes eloqnt/cli somewhat special, is that it understands not only your i18n strings, but also your source code. Helpful for quality checks, but also for updates. bsky.app/profile/aman...
000
Jan @amann.work · 15/07/2026
Have you tried linting your i18n strings yet? > npm install @eloqnt/cli --save-dev
010
Jan @amann.work · 14/07/2026
studio.eloqnt.dev
studio.eloqnt.dev
eloqnt/studio — AI-powered translations for developers
Use AST-level analysis, context enrichment, styleguides, and integrated checks to translate your app—so quality holds up in languages you don’t speak. All from the command line.
000
Jan @amann.work · 14/07/2026
Start linting your strings today. 𝚗𝚙𝚖 𝚒 @𝚎𝚕𝚘𝚚𝚗𝚝/𝚌𝚕𝚒 --𝚜𝚊𝚟𝚎-𝚍𝚎𝚟 Add .𝚎𝚕𝚘𝚚𝚗𝚝/𝚌𝚘𝚗𝚏𝚒𝚐.𝚝𝚜 and run: 𝚗𝚙𝚡 𝚎𝚕𝚘𝚚𝚗𝚝 𝚕𝚒𝚗𝚝 Docs → studio.eloqnt.dev/docs
100
Jan @amann.work · 14/07/2026
Localization outgrowing your repo? eloqnt/studio is modular—keep it for linting and source review, and swap out the translation layer for your favorite translation management system. Crowdin support is built in, so upgrading is a config file away—unlocking reviews, 3rd party integrations, and more.
100
Jan @amann.work · 14/07/2026
The backbone of eloqnt/studio is its AI engine. You can either use a hosted version, or bring your own model—anything supported by the AI SDK. This also includes 3rd-party plugins for using your Claude Code or Codex sub (subject to their latest terms).
100
Jan @amann.work · 14/07/2026
And it all lives in your repo. Config, styleguides, messages—versioned and branched with your code. Nothing to sync, nothing drifting apart on a feature branch.
100
Jan @amann.work · 14/07/2026
What makes your product or service unique? Terms to keep, tone to hold, a glossary—all placed in simple markdown styleguides. Easy to set up and maintain, and the format your agent already speaks. It's AGENTS.md, but for translations.
100
Jan @amann.work · 14/07/2026
After maintaining next-intl for years, I've seen every way translations break. eloqnt/studio matches strings to their references in source code. This not only enables additional quality guardrails—it pulls in all the relevant context your agent has always silently guessed at.
100
Jan @amann.work · 14/07/2026
So eloqnt/studio is different. It's not a model, but a pipeline. Every string moves through well-defined steps: ① Static analysis ② Source text review ③ Context enrichment ④ Translate
100
Jan @amann.work · 14/07/2026
AI translation is "good enough"—right up until it isn't. I kept hearing: "We have this duct-taped Claude Code skill that does it for us." "But honestly, we have no idea if the output is any good." bsky.app/profile/aman...
bsky.app
Jan (@amann.work)
AI will translate your app in seconds. It'll also confidently mistranslate, break a plural, flatten your tone—and you'll ship it, because you can't review what you can't read. [contains quote post or…
100
Jan @amann.work · 14/07/2026
Get early access → studio.eloqnt.dev Small batches rolling out soon. Full story below 🧵
studio.eloqnt.dev
eloqnt/studio — AI-powered translations for developers
Use AST-level analysis, context enrichment, styleguides, and integrated checks to translate your app—so quality holds up in languages you don’t speak. All from the command line.
100
Jan @amann.work · 14/07/2026
Today, I'm launching eloqnt/studio. An AI-based toolchain that helps you ship high-quality translations. All from the command line. 𝚎𝚕𝚘𝚚𝚗𝚝 𝚕𝚒𝚗𝚝 𝚎𝚕𝚘𝚚𝚗𝚝 𝚛𝚎𝚟𝚒𝚎𝚠 𝚎𝚕𝚘𝚚𝚗𝚝 𝚝𝚛𝚊𝚗𝚜𝚕𝚊𝚝𝚎 With our hosted model, or bring your own. 🔗↓
110
Jan @amann.work · 14/07/2026
Launch day.
010
Jan @amann.work · 09/07/2026
What if your linter caught translation bugs the way it catches code bugs? Missing translations. Unused keys. Broken ICU args. The list goes on.
050
Jan @amann.work · 07/07/2026
Would you merge code nobody reviewed? Then why does everyone ship AI translations nobody reviewed?
bsky.app
Jan (@amann.work)
AI will translate your app in seconds. It'll also confidently mistranslate, break a plural, flatten your tone—and you'll ship it, because you can't review what you can't read. [contains quote post or…
010
Jan @amann.work · 02/07/2026
AI will translate your app in seconds. It'll also confidently mistranslate, break a plural, flatten your tone—and you'll ship it, because you can't review what you can't read.
010
Jan @amann.work · 01/07/2026
Seems to be what many developers are doing, from as far as I can tell! Maaaybe I have something in the works in this regard 👀
010
Jan @amann.work · 30/06/2026
How do you keep translations in sync when you're coding with agents?
220
Jan @amann.work · 19/05/2026
A new Payload CMS template is available for members of 🌐 learn.next-intl.dev — let me know if you find it helpful!
010
Jan @amann.work · 15/05/2026
Many thanks to Alexander Tzitamidis (@Dragate) for the donation on GitHub! ❤️ github.com/sponsors/ama...
github.com
Sponsor @amannn on GitHub Sponsors
My passion is to create web-based products where design, usability and performance matter. I’m specialised in developing with React.
000
Jan @amann.work · 13/05/2026
🌐 next-intl 4.12 is out with useExtracted improvements! → Improved monorepo support → Stacked .po descriptions → Path-only references by default → Deferred one-off extraction → Another message ordering fix See the release notes for details: github.com/amannn/next-...
github.com
Release v4.12.0 · amannn/next-intl
4.12.0 (2026-05-13) Features Improvements for useExtracted (#2316) (bff2f96) – by @amannn ⚠️ A small config change is required for useExtracted users to upgrade, please see #2316 for details.
020