Roadmap
T18S is not done. There is still a lot we want to add. Here are some of our ideas for the future in no particular order.
Robustness
T18S is still relatively new, and hasn’t handled all the edge cases yet. This causes occasional problems with the dev-server, reloading translations and other inconveniences. We want to make sure that t18s is as robust as possible.
Locale Switching with granular updates
Currently when switching locales messages that have been rendered do not automatically update. Instead the developer needs to manually cause a rerender. This is commonly done by wrapping the entire app in a key
block that reacts to locale changes.
src/routes/+layout.svelte
{#key $locale}
<slot/>
{/key}
In future we want messages to automatically update when switching locales. That way component state can be preserved across locale switches. Unfortunately, due to the nature of Svelte’s current reactivity, this will likely only be possible in Svelte 5 (at least without a horrible API).
Support more File Formats
There exists a wide range of file formats for translations. We want to support as many of them as possible in order to allow developers and translators to use the tools they are most comfortable with.
Built in Internationalized Routing
SvelteKit currently doesn’t offer a built in way to internationalize routes. It’s left to the developer to implement this. We want to provide a standard and straight forward way to do this. Due to the complexity of the problem there are still a lot of open questions here, and there is a lot of experimenting left to be done.
Interactive Translation
There are a few proof-of-concept tools & sites out there that push the boundary of how we interact with the things we build. One of those is better-i18n-for-svelte. It’s a proof of concept for editing translations in your dev-browser directly, instead of in files.
We want to experiment with implementing features like this in t18s. There are a lot of open questions with this though. How do we determine which text came from a translation? How do we handle variable interpolation in the editor, how do we add new translations?
Until we have answers to these questions, this will remain relatively low priority.