cartesapp / cartes

L'appli Web de cartes grand public
https://cartes.app
GNU Affero General Public License v3.0
208 stars 24 forks source link

Tag "capital" avec plusieurs valeurs à traduire #534

Open kevinvennitti opened 2 months ago

kevinvennitti commented 2 months ago

Le tag capital (ici) peut avoir une valeur admin_level-number :

screencapture-2024-08-10-12 34 29

Dans osmTagLabels.ts, faudrait-il passer le tagName à la fonction tagValueCorrespondance() afin de permettre une traduction spécifique des valeurs en fonction du tagName ?

kevinvennitti commented 2 months ago

Pour info, j'ai modifié la fonction tagValueCorrespondance() dans mon fork pour avoir une liste des traductions spécifiques (lorsqu'une valeur peut se traduire différemment en fonction du contexte/tagName) et une liste de fonctions de formattage pour transformer la valeur d'une clé (par exemple : ajouter un suffixe, mieux afficher une liste, etc) :

export const tagValueCorrespondance = (key: string, tagName: string) => {
    const translations = {
        children: 'Enfant',
        only: 'Uniquement',
        subway: 'Métro',
        metro: 'Métro',
    }

    const specificTranslations = {
        'seamark:type': {
            'harbour': 'Port',
        },
        'type:RATP': {
            'rer': 'RER',
        }
    }

    const formats = {
        'route_ref': (v) => v.split(';').join(', '),
        'Population': (v) => v + ' habitants',
    }

    return formats[tagName] 
        ? formats[tagName](key) 
        : (
            specificTranslations[tagName] 
            ? (specificTranslations[tagName][key] ?? (translations[key] ?? key)) 
            : (translations[key] ?? key))
}