[OSM-dev-fr] [OSM-talk-fr] Osmose et les tags wikipedia
Philippe Verdy
verdy_p at wanadoo.fr
Lun 7 Jan 16:49:27 GMT 2013
Déjà un tag comme "wikipedia:name" ne devrait pas pouvoir être
interprété comme contenant un code langue valide ("name" n'est pas un
code langue ISO 639 ou même BCP47 valide).
Pour tous tags traduits comme "<tag>:<lang>=*" une chose à faire avant
est de vérifier qu'il s'agit bien d'un code langue valide.
Note : pour Wikipedia, les codes langue ne sont pas tout à fait
conformes à BCP 47, puisque ce sont en fait des labels de
sous-domaines dans le domaine wikipedia.org. Normalement maintenant
tous les codes langues Wikipedia devraient être conformes à BCP 47
(préférablement un code ISO 639-1, sinon ISO 639-2T, sinon ISO 639-3;
mais on a parfois des extensions à ces codes, qui devraient être
conformes à BCP 47 pour indiquer une écriture ISO 15924, une région
ISO 3166-1 ou UN-M.49, ou un code variante enregistré dans la base
IANA pour BCP47). Cependant il persiste encore quelques codes langues
utilisés sur Wikipédia qui ne sont pas conformes à BCP47
- par exemple "nrm" pour le normand, qui n'a pas de code dans BCP 47
ni dans ISO 639, mais est utilisé pourtant pour coder le jériais ou le
guernésiais qui sont considérés comme des langues avec un statut
officiel à Jersey et Guernesey ; ces langues sont en fait des variétés
dialectales du normand, lequel est encore considéré comme une variante
du français, ce qui ferais du jériais ou du guernésiais des variantes
du français, ce que réfute les Etats de ces îles ; malheureusement au
lieu d'utiliser un code privé sur Wikipédia, le normand a été codé
"nrm" et est en conflit avec une autre langue codée dans ISO 639-3 et
dans BCP 47.
- autres exemples avec le serbo-croate, qui a été déprécié dans ISO
639, persiste encore n'est plus recommandé dans BCP47, mais y est
conservé et encore utilisé pour Wikipédia. Techniquement ce n'est pas
incompatible et ne crée pas de conflit.
Bref le code langue à mettre dans "wikipedia:lang=*" doit être un
label de sous-domaine existant dans Wikipedia. Il serait bon qu'Osmose
en maintienne une liste exhaustive (ce n'est pas une longue liste).
Mais tous les autres codes langue des autres tags (par exemple
"name:lang=*") doivent être conformes à BCP 47, si possible non
dépréciés (utiliser le code recommandé dans la base IANA, qu'Osmose
devrait apprendre à lire et décoder correctement), mais on accepte les
aussi les codes de macrolangues (comme "zh" pour le chinois, sans
préciser la langue individuelle), et les extensions pour mentionner
d'autres écritures (par exemple "zh-Bpmf" pour une translitération en
alphabet Bopomofo, ou "zh-Latn" utilisé pour une romanisation à priori
en "pinyin" en Rép. Pop. de Chine, ou "ja-Kana" pour mentionner une
translitération dans les syllabaires Hiragana/Katakana, de noms
préférablement écrits en sinogrammes Kanji, ou "ja-Hani" pour
mentionner une orthographe traditionnelle en sinogrammes Kanjis de
noms aujourd'hui plutôt écrit en Hiragan/Katakana voir romanisés).
Mais pour qu'Osmose vérifie les codes langues de ces derniers tags
(sauf wikipedia:lang=*) il lui télécharger et utiliser la base IANA
pour BCP 47, afin que d'une part il les décode correctement (selon RFC
5446) pour en vérifier d'abord la syntaxe (sinon ce n'est pas un code
langue valide), puis pour vérifier dans la base IANA les codes
inexistants (à signaler), et les codes dépréciés à remplacer par ceux
indiqués dans la base IANA (attention tous les codes langues
dépréciés, y compris les anciens codes n'ont pas toujours un code de
remplacement comme "jw"->"jv" ou "iw"->"'he", car le remplacement est
ambigu entre plusieurs codes candidats). Osmose devrait aussi signaler
les codes langues d'usage spécial (comme "mul" ou "und") ou privés
("x-*") dont on n'a pas défini de règle d'usage sur OSM. Il devrait
aussi signaler les codes de familles/collections de langues (dans ISO
639-2 la plupart, plus un seul dans ISO 639-1) qui ne sont PAS des
"macro-langues" (par exemple le code pour "apache" n'est pas assez
précis).
Les codes qui n'ont pas de traduction claire dans BCP 47, bien que
partiellement conformes, mais qui ont un usage défini dans Wikipédia
(tels que "roa-rup" pour le francique ripuaire) devraient aussi être
remplacés par le code préféré et standard dans BCP 47 pour tous les
tags AUTRES que "wikipedia:lang=*".
Petit à petit, Wikipédia met à jour ses codes pour les mettre en
conformité avec BCP 47 (pour ne pas casser les liens externes, il
transforme ces anciens codes en alias CNAME sur ses noms de domaines,
et il met à jour sa liste de préfixes interwikis pour traduire les
alias ; cela fonctionne pendant un certain temps, jusqu'à ce qu'il n'y
ait pratiquement plus d'accès visible de l'ancien domaine sur ses
serveurs Squid, et jusqu'à ce que les bots aient traduits tous les
codes langue qui trainent encore dans les articles et modèles ; la
transition peut être assez longue avant que le support de l'ancien
usage non conforme soit supprimé, mais cela va plus vite sur les codes
langues peu utilisés).
Osmose pourrait apprendre ces règles et donc faire un meilleur
travail. J'ai bien peut que le seul patch n'ai concerné que
l'exception "name" (non conforme BCP 47, mais réservé, et il aurait
mieux valu utiliser "wikipedia::name=*" et "wikipedia::name:lang=*"
pour que la chaine vide entre les deux ":" soit bien identifié comme
purement local et incompatible avec un code langue, et "name" soit
alors bien interprété comme un nom de tag OSM. Ou encore
"wikipedia_name=*" et "wikipedia_name:lang=*" (bien que je préférais
plutôt "name_wikipedia=*" et "name_wikipedia:lang=*") afin d'éviter
toute confusion avec un article Wikipédia traitant de l'objet
géographique nommé dans "name=*" ou "name:lang=*".
Le but étant aussi de fournir un autre lien donnant des informations
associées (relatives mais mais directement liées à l'objet
géographique), je pense même que ces tags destinés à fournir des liens
additionnels vers d'autres infos (de type "Voir aussi", "related" en
anglais) devraient être à part dans une série de tags "related:*" (ou
"see_also:*=*. Par exemple "related:website=*",
"related:website:name=*", "related:website:name:lang=*" ;
"related:wikipedia=lang:article", "related:wikipedia:lang=article".
Le 6 janvier 2013 15:37, Black Myst <Black.myst at free.fr> a écrit :
> Le 2 janvier 2013 16:25, Christian Quest <cquest at openstreetmap.fr> a écrit :
>
>> Je te confirme que c'est du faux positif...
>>
>> J'ai signalé le problème à freed... et je suis un peu à l'origine du
>> problème avec mes tags wikipedia:name que je n'ai qu'ajouté à la liste
>> de ceux déjà proposés sur le wiki.
>
>
> Je viens de faire un patch osmose pour supprimer ces faux-positifs.
> Vue la complexité du code, j'ai rajouté une bonne couche de test unitaires.
>
> Pour ceux qui voudrait jeter un oeil, les tests sont à la fin du fichier.
> https://gitorious.org/~blackmyst/osmose/blackmyst-osmose-backend/blobs/4c0d06ae1bc6c8073645cc8010662994dec00834/plugins/TagFix_Wikipedia.py
>
>
> Lien vers le commit:
> https://gitorious.org/~blackmyst/osmose/blackmyst-osmose-backend/commit/4c0d06ae1bc6c8073645cc8010662994dec00834
> Dites moi si vous préférez un push request.
>
> ++
> BlackMyst
>
> _______________________________________________
> dev-fr mailing list
> dev-fr at openstreetmap.org
> http://lists.openstreetmap.org/listinfo/dev-fr
>
Plus d'informations sur la liste de diffusion dev-fr