[OSM-talk-fr] Osmose "Missing object kind" sur Piste de ski

Philippe Verdy verdy_p at wanadoo.fr
Sam 18 Oct 12:47:16 UTC 2014


Apparemment dans ce que j'ai vu, si on a une clé name=* pour le nom par
défaut, et d'autres clés name:<lang>=* pour des traductions et qu'aucune
d'elle ne correspond au nom par défaut, Os,ose considère que le no, donné
dans name=* est dans une langue ambiguë (car la résolution des langues peut
très bien vouloir utiliser une des traductions au lieu d'utiliser le nom
par défaut plus pertinent correspondant à une langue non explicitement
mentionnée.

Par exemple si on a name=* avec le nom effectif en français (mais pas
indiqué) et name:en=* avec une traduction anglaise (lange explicite) et
qu'un utilisateur breton fait une recherche de nom avec ses préférences de
langues établies dans l'ordre : breton, français, anglais, alors la
recherche ne trouvera pas la langue française (puisqu'elle n'est pas
mentionnée) mais utilisera le nom anglais (name=* n'est utilisé qu'en
dernier ressort).

Il apparaît donc que si on a une clé name=* et des clés name:lang=* alors
une de ces clés doit prendre en valeur le nom indiqué dans name=*.

Exception: name=* est parfois multilingue parce qu'on ne peut pas faire le
choix de la traduction; les deux langues sont co-officielles (on a le cas
en Belgique, en Suisse, au Luxembourg; et dans certaines communautés
autonomes espagnoles...) et name=* mentionne ces différents noms, mais
chaque nom dans chaque langue officielle dvrait être listé individuellement
dans un name:<lang>=* (et aucun d'eux ne correspondra exactement à la
valeur par défaut, multilingue, donnée dans name=* (dans ce cas Osmose
signale l'ano,alie à traiter comme faux positif si on a bien ajouté aussi
les noms individuels pour chaque langue explicite, ce qui ne posera
cependant pas de problème pour la résolution des traductions).

Ce cas est d'ailleurs signalé avec un autre avertissement ("deux noms") sur
la valeur de name=* (quand elle contient certains séparateurs comme "/",la
virgule, le point-virgule ou le "signe "+" (qui fait aussi des faus
positifs sur les noms de parking "P+R" par exemple dans plusieurs pays
européens y compris la France, la Suisse, la Belgique...), tout bonnement
car les noms multiples sont présents sur la clé name=* de la valeur par
défaut (cette valeur par défaut ne sera pas utilisé quand on recherche ue
traduction dans une des langues utilisées pour ce no, puisqu'on a pris soin
aussi de donner des noms séparés pour chacune d'elle dans name:<lang>=*, il
n'y a aucun problème donc pour résoudre les traductions: ce no, ne
s'affichera que pour les recherches dans d'autres langues (par exemple pour
des recherche en russe; en chinois, en arabe... alors qu'aucune des
traductions proposées ne convient à la recherche dans ces langues
"exotiques" et uniquement si l'utilisateur n'a pas mentionné dans la liste
des langues alternatives de repli ou "fallback" une des langues dont on a
une traduction explicite et individuelle).

En revanche l'avertissement "deux noms" ne devrait pas être ignoré sur une
clé "name:<lang>=*".

Exception faite dans ce dernier cas de noms comme "P+R xxxxx" (il n'y a
qu'un seul nom, pas deux), ou des noms dépendant du côté de la rue pour une
rue ou une rivière frontalière; mais dans ce cas on devrait aussi avoir
"name:left=*" et "name:right=*" pour préciser le nom applicable à chaque
côté ("name:left:<lang>=*" et "name:right:<lang>=*" pour préciser selon la
langue explicite, par exempel quand on a deux noms français indiqués dans
"name:fr=*", explicités séparément dans "name:left:fr=*" et
"name:fr:rightt=*".






Le 18 octobre 2014 11:30, Yves Pratter <yves.pratter at gmail.com> a écrit :

>
> Le 18 oct. 2014 à 10:02, Jean-Baptiste Holcroft <jb.holcroft at gmail.com> a
> écrit :
>
>
> Dans le code, l'erreur serait là :
>
> https://github.com/osm-fr/osmose-backend/blob/649db8ac4e642e0fdbf065c1012744e627c8e906/plugins/TagFix_MultipleTag.py#L35
>
>
> J’essai de comprendre le code mais ce n’est pas très clair (en comparaison
> à d’autres erreurs):
> Donc si l’objet à l’attribut « name » et que son parent ne serait pas
> nommé ?? (je ne pige pas la seconde condition)
>
> if tags.get("name") and len(key_set & self.name_parent) == 0: err.append((
> 21101, 1, {}))
>
> (si vous parlez des langues étrangères, n'hésitez pas à aider à la
> traduction d’osmose)
>
> Osmose ne semble pas utiliser de bibliothèque de code i18n
> <http://fr.wikipedia.org/wiki/Internationalisation_(informatique)> (la
> traduction est faite dans le code source, pas dans des fichiers ressources
> séparés).
> Bref ça rend la traduction plus difficile à faire et ça explique peut-être
> pourquoi certaines erreurs apparaissent dans une langue, mais pas dans une
> autre… ?
>
> La bibliothèque gtext existe en Python :
> https://docs.python.org/2/library/i18n.html
>
> Est-ce que son utilisation à été envisagée ?
> C’est un gros chantier que de modifier le code source et d’extraire les
> messages, mais vu l’importance d’Osmose et son utilisation qui semble
> mondiale, ce travail sera un gain de temps pour le futur.
> Et avec plein de petites fourmis, il n’est peut-être pas si difficile et
> long à faire.
>
>> Yves
>
> _______________________________________________
> Talk-fr mailing list
> Talk-fr at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-fr
>
>
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/talk-fr/attachments/20141018/bee53884/attachment.htm>


Plus d'informations sur la liste de diffusion Talk-fr