@kartotherian/babel
Version:
Tile source to support multilingual maps
61 lines (45 loc) • 2.26 kB
Markdown
[](https://travis-ci.org/kartotherian/babel)
[](https://coveralls.io/github/kartotherian/babel)
Tile source to restructure vector PBFs for multilingual usecases, such as convert a single JSON object into multiple key/values, or to replace all language key/value names with a single one.
Tile is generated with 'name_' field set a JSON-encoded key-value object.
Babel can be used to convert that tile to a tile, with each value in the object becoming
a tag of its own, e.g. 'name_en', 'name_fr', ... . Also, babel can be used to replace
multiple 'name_lang' tags with a single 'name_' tag right before rendering it, choosing the best
language based on the fallback rules, but only if it is different from the 'name' tag.
```yaml
json2tags:
uri: json2tags://
params:
source: {ref: gen}
tag: name
```
```yaml
babel:
uri: babel://
params:
source: {ref: store}
tag: name
defaultLanguage: 'en'
languageMap: '/my/path/fallback.json'
languageMap:
en: ['fr', 'es', 'de']
ru: ['be']
```
For `babel://`, the language of the `name_` is chosen based on these rules:
`getAsync({z,x,y, lang:'xx')`:
* `name_xx`
* Use explicitly set fallbacks from the languageMap
* Use any `name_yy-Script` where `Script` is the script of `xx`. E.g. if `lang=ru`, pick any `lang_yy-Cyrl`.
* If `xx` uses the Latin script, use any `name_zz_rm`
* `name`
Babel gets the CLDR defined script name (Latn, Cyrl, ... ) based on the language code. It also uses a few overrides from the `overrides.json`. This file should be updated with any language IDs found in OSM data.