Hallelujah!
Hallelujah!
and I mostly work on my own projects
Then your opinion is absolutely understandable.
It’s also frustrating b/c types don’t guarantee that the system does-the-thing, only that the type-system and compiler are happy, so it’s like pleasing the wrong boss, or some metaphor like that.
Types help you refactoring and communicating with other team members about expected inputs/outputs. Did you ever try debugging a number that should’ve been a string in a codebase that you didn’t write? Example from today: jsforce will throw an exception when you pass a number instead of string due to the fact that the Salesforce server will complain that the type is incorrect. If the method had correct typing of “string”, it would save me a few hours of debugging a huge library without visibility inside of it…
Have you heard about our lord and savior, TypeScript?
Quite a lot of IDEs will key you just click “add missing properties” action on the translation object to create a language file.
deleted by creator
It’s also quite ready to transform this file to JSON and send it to translators through any service that supports his format.
If you are using TypeScript it’s quite easy to create a system where the type system will enforce the existence of all translations. I think it should be possible to create a similar solution for other languages as well.
For example:
const enTranslations = { MENU: ‘’ };
const plTranslations: typeof enTranslations = { MENU: ‘’ } as const;
const t = (key: keyof typeof enTranslations) => get language() == ‘pl’ ? plTranslations[key] : enTranslations[key];
Missing keys will fail compilation. If you want to skip check you can always use //@ts-ignore
Additionally the type system will enforce only valid translation keys so you won’t be able to make a typo it forget to add English translation.
Nix is amazing. I’m using nix btw 🤣 on my steam deck 😃