How exactly would it help to have a commit that introduces a problem and then another one that fixes it? How does leaving in a bad refactor, failed attempt, or typo help the AI tool with anything?
How exactly would it help to have a commit that introduces a problem and then another one that fixes it? How does leaving in a bad refactor, failed attempt, or typo help the AI tool with anything?
Disclaimer: I have a connection to one of these companies, just want to share some knowledge. I strive to be as neutral as possible.
Fun fact: I'm German and know the challenges with the UI. It's a love/hate relationship!
The problem with i18n (internationalization) is that many developers and product owners believe it’s only about implementing a library and letting Google Translate, DeepL, or even ChatGPT do the rest. As most of you already know, that approach doesn't work well for German speakers. My language will break/destroy your UI design.
The real issue with i18n is that it involves many stakeholders throughout the process. Here are the most important ones to start with:
Developers: These folks need to implement a library and want a good DX (Developer Experience). It means You should choose a library with an IDE extension (e.g., VS Code's Sherlock i18n, i18n Ally). - Libraries: Please use something that utilizes .json files. Formats like .po are cumbersome and will cause many issues. - Use tooling that supports an ecosystem around it, like lint rules, to save time and effort.
Translators: Ideally, your preferred solution includes a TMS (Translation Management System) or a CAT (Computer-Assisted Translation) tool.
Designers: If your designers can't see the translations in tools like Figma, your UI will break, and users will complain. Figma plugins like Parrot, Phrase, or Weblate can help (just search for 'i18n' in Figma's marketplace).
All the apps mentioned are just a few examples among many tools available.
Conclusion: The important stakeholders in this process are Developers, Translators, and Designers. i18n is an ongoing process, not a one-time task. If you start your app or project with i18n from the beginning, the annoying parts are manageable, and it won’t cost you all your nerves.
Version history is only interesting if you’re doing archeology. And I would prefer seeing a squashed commit that introduce a complete change instead of going back and forth to get the complete picture (anyone with such messy history will introduce unrelated changes too).
As for failure, put that in some tracker, with an “abandoned” status.
Sure, that makes sense, if you’re just interested in the internals, the history doesn’t matter. I get that.
But what do you think about the idea of keeping two views of history? One that’s clean and human-readable, and another that preserves all the detailed commits. With the right filters, you could switch between the simple view and the full story.
EDIT: By the way, I just want to discuss a theory/some thoughts here. There are always pros and cons, and perhaps my text is a little too harshly worded.