October 1st, 2024

Launch HN: Quetzal (YC S24) – Stripe for Internationalization

Quetzal, founded by John and Brendan, simplifies software translation using LLMs, automating string identification and ensuring rapid, accurate translations. They currently pilot for Next.js and seek feedback on challenges.

CuriosityExcitementSkepticism
Launch HN: Quetzal (YC S24) – Stripe for Internationalization

Quetzal, founded by John and Brendan, aims to simplify software translation using large language models (LLMs). They recognize the challenges of internationalization, which often involves tedious manual processes and can delay product launches. Their experiences at Slack and a retail startup highlighted the inefficiencies of traditional translation methods, which can lead to inconsistent and context-less translations. To address these issues, Quetzal employs a custom Babel plugin that automatically identifies user-facing strings needing translation, thus eliminating the need for manual searches. During the build process, the plugin provides context to LLMs, ensuring accurate translations based on usage scenarios. This approach allows for rapid translation, taking only seconds compared to the days required for human translators. Quetzal's solution not only enhances translation quality but also streamlines the integration of new strings into the codebase. They currently offer a pilot program for Next.js projects and are open to expanding support for other frameworks. The founders invite feedback on current translation challenges and are interested in exploring how businesses can effectively reach new markets.

- Quetzal simplifies software translation using LLMs to improve efficiency and accuracy.

- The platform automates the identification of strings needing translation, reducing manual effort.

- Translations are generated quickly, taking seconds instead of days, ensuring timely updates.

- Quetzal is currently piloting its solution for Next.js projects and is open to supporting other frameworks.

- The founders seek feedback on translation challenges and market expansion strategies.

AI: What people are saying
The comments on Quetzal's software translation tool reveal several key themes and inquiries from users.
  • Users express interest in the automatic translation setup during the build process, with requests for more information on this feature.
  • There are inquiries about support for various frameworks, including Svelte and Vue, as well as plans for mobile app integration.
  • Some commenters highlight the importance of context in translations, particularly for languages with formal and informal distinctions.
  • Concerns are raised about the challenges of change control in translation processes, emphasizing the need for robust systems to manage updates.
  • Overall, there is enthusiasm for the product, with users eager to test it and provide feedback.
Link Icon 16 comments
By @silverlight - 7 months
I think that ideally, every project would be setup from scratch in the beginning to use t() tags or something similar to have translation keys so that setting up translations is as easy as swapping out what t() returns (from e.g. a config file or the like).

Of course, we all know that this is very rarely how projects end up getting setup especially in the early stages, and then it's just massive amounts of work to go back and set it up later.

The thing that's the most intriguing to me about what you're describing is automatically setting up translations in the build step where you auto-detect strings to translate. But looking at the site, most of it seems to be focused around the VSCode extension which will just sort of find and replace strings in the source code with t() tags.

Can you talk more about the translations in the build step? Is there a reason you're not talking more about that on the site? (Is it just newer, not very reliable/good, or...)?

The idea that I could just throw something like this into my project, not have t() tags in my source code but still get translations, sounds like magic and I think it would be really neat.

By @jvanveen - 7 months
Interesting approach! I like the idea of using an ast to find translation strings and to generate source strings by an llm from the context. My experience is the same. Having to deal with 6 languages and a fast changing application is impossible for small teams, so I ended up with asimilar approach where developers only edit the source text, and target translations are automatically kept in sync using Deepl. This solves the whole i18n dilemma of outdated/missing translations, by just focussing on the source texts. It would be great to be able to even generate the source texts from the $t tag. I'm slowly turning this into an open source developer tool: https://garage44.org/posts/expressio/expressio-machine-trans...
By @primitivesuave - 7 months
This is a great idea. I have even hit this pain point when developing a healthcare app for hospitals that was primarily used in the United States. There are certain communities, even just within California, where it is common to have patients who only understand Spanish, Mandarin, or Japanese.

Any plans to extend this to iOS/Android development in the future? I assume it would already be easy to integrate this into React Native.

Also, is there a way for me to provide explicit additional context to the `t` function for the translation? Essentially a string that is appended to the LLM input for translation. For example, in Japanese there is often a significant difference between formal and informal language, and it is common to add post-positional particles such as や, が, and の to make titles and labels sound more natural. I see you have addressed many other special cases around numbers/dates/etc, so certain flags like formal/informal, regional dialect, etc may be valuable future additions.

Overall looks really nice and I look forward to trying this the next time the need arises.

By @fidotron - 7 months
I have been using a very similar approach for i18n of my eternally experimental web game https://luduxia.com/reversi/ which has an entertaining build process including this sort of thing. (I come from a game publishing background so have nightmares of when we all sent Excel sheets around motivating these things).

Does your result live update the strings in place if the device locale is changed?

Do you have any method for getting feedback from UI tests? I don’t now, but that is absolutely a feature I was used to previously. We used to OCR off expected areas to ensure things fit etc.

By @n_plus_1_acc - 7 months
What measures have you taken to prevent things like this https://github.com/microsoft/WSL/issues/7868
By @nextworddev - 7 months
for nextjs apps, localization with next-i18next was a breeze.

https://github.com/i18next/next-i18next

By @cheeseblubber - 7 months
Would be cool to see the Quetzal website internationalized itself and see what it looks like in different languages.
By @joshdavham - 7 months
I'm gonna be building a web app in the next month or so that's gonna need a ton of translation, but it's gonna be a SvelteKit app. Do you plan on supporting Svelte anytime soon?
By @ck_one - 7 months
Quetzal as a product is inevitable. It will make it even easier to target international markets from day one with a tiny team. Congrats on the launch! You rock! Greetings from section 4D!
By @XetiNA - 7 months
Maybe it doesn't recognize my language settings but it'd be nice if your website would be in my local language to show off that it works.
By @nadermx - 7 months
Funny I have a domain very similarly named been always debating on developing, quetal.com. Otherwise cool concept
By @JanSt - 7 months
Very nice. Is vue supported?
By @bcye - 7 months
I honestly don't get the need for an LLM here, the landing page translations feels unnatural and there are some translations that don't really work in the context - how does this actually perform better than DeepL for instance?

No pricing to be found in the header for an AI product (which you'd expect to be on the pricier side) isn't great either.

By @sidcool - 7 months
Congrats on launching. This looks promising
By @fakedang - 7 months
Just in time. Gonna try it right now. Will share feedback.
By @samuelstros - 7 months
Hm. Not convincing. Disclaimer: I am the founder of Opral (https://inlang.com/ && https://lix.opral.com/)

The idea of parsing source code to auto inject translations, especially while leveraging machine translations comes up every 2 months.

It’s not solving the problem.

The problem to be solved is change control. Doing translations is (surprise!) cheap compared to controlling changes. Changes referring to the marketing copy changed, the button label changed, a new screen has been added, etc. It needs one system that can track and control changes across apps, translations, files.

If change control is solved, localization boils down to managing CI/CD pipelines.