We know from the Accept-Language headers what the human in front of the screen expects, and can pre-generate some languages, or generate the tiles dynamically for more complex requests (like mine, en-GB,en;q=0.9,fr;q=0.8,de;q=0.7,lb;q=0.6).
We can send a Vary: Accept-Language header to prevent the wrong language from getting cached.
We can pre-embed all available translations in a tile, creating attributes like name:de-CH. This might produce big tiles, and would have to be understood by clients.
We can generate tiles per language, e.g. 7/42/42-en-GB.geojson. This means that a client would have to download as many duplicate tiles as the human understands.
We can generate translation tiles that would contain only the translated strings, e.g. 7/42/42-en-GB.json. A client would download the 'normal' scapegoat tile and the translation tile for all wanted languages.
We can use the translations from JOSM, from iD, or both.
We know from the Accept-Language headers what the human in front of the screen expects, and can pre-generate some languages, or generate the tiles dynamically for more complex requests (like mine, en-GB,en;q=0.9,fr;q=0.8,de;q=0.7,lb;q=0.6).
We can send a Vary: Accept-Language header to prevent the wrong language from getting cached.
We can pre-embed all available translations in a tile, creating attributes like
name:de-CH
. This might produce big tiles, and would have to be understood by clients.We can generate tiles per language, e.g. 7/42/42-en-GB.geojson. This means that a client would have to download as many duplicate tiles as the human understands.
We can generate translation tiles that would contain only the translated strings, e.g. 7/42/42-en-GB.json. A client would download the 'normal' scapegoat tile and the translation tile for all wanted languages.
We can use the translations from JOSM, from iD, or both.