Imagine writing the first few lines of a message, then deciding you would rather use the site in French. The labels change. Your message disappears.
That is an example of what a language switch can get wrong even when every translation is correct. The words have moved to the new language, but the person's work has been left behind.
On yesid.dev, the language versions use different addresses. English uses the main route, French adds /fr, and Spanish adds /es. That makes each version directly accessible, but the interface also has to deal with moving between them.
The implementation keeps a temporary record of registered page state during a language change. That can include an entered value, a selected item, a reading position, or an open section. The new page can then restore the relevant state. It is a transfer for that change of language, not a promise that the site saves an unfinished message forever.
There is an important distinction here. The interface text should change language. A message someone wrote should remain theirs. Translating a field label and translating the visitor's own words are different actions.
The same thinking applies to an article. A reader who has reached the middle of a page should not automatically be treated as someone arriving at the top for the first time. When an article has a different title and address in another language, the site needs to recognise that the two pages belong to the same article.
These are small details until someone loses their place.
They are also behaviours to demonstrate, not just describe in source code. A useful check is to enter harmless example text without submitting it, change language, and inspect what stayed. Repeat with an open section or a selected filter. Check the behaviour when a translation is missing. A screenshot of a translated page cannot answer all of those questions.
The mechanism only knows about the values a page registers. Adding another field means deciding what should travel with it. It also cannot supply a translation that does not exist. These limits matter when choosing what a language switch should promise.
For me, this is a useful way to think about a multilingual site. Translation includes the words, but the visitor still has a task to finish.
Need a system that stays editable?