Skip to content

Commit

Permalink
Enable Name_Multilingual in Spain osm-fr#1285
Browse files Browse the repository at this point in the history
  • Loading branch information
frodrigo committed Jul 12, 2021
1 parent 71f2526 commit 6d2efce
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 7 deletions.
8 changes: 4 additions & 4 deletions osmose_config.py
Expand Up @@ -1503,19 +1503,19 @@ class gen(default_country):

es_comm("andalucia", 349044, "ES-AN", proj=32629)
es_comm("aragon", 349045, "ES-AR", proj=32630)
es_comm("asturias", 349033, "ES-AS", proj=32629, language=["es", "ast"])
es_comm("asturias", 349033, "ES-AS", proj=32629, language=["es", "ast"], multilingual_style='sp_ast')
es_comm("illes_balears", 348981, "ES-IB", proj=32630, language="ca")
es_comm("cantabria", 349013, "ES-CB", proj=32630)
es_comm("castilla_la_mancha", 349052, "ES-CM", proj=32630)
es_comm("castilla_y_leon", 349041, "ES-CL", proj=32629)
es_comm("catalunya", 349053, "ES-CT", proj=32630, language="ca")
es_comm("comunitat_valenciana", 349043, "ES-VC", proj=32630, language=["ca", "es"])
es_comm("extremadura", 349050, "ES-EX", proj=32629)
es_comm("galicia", 349036, "ES-GA", proj=32629, language=["es", "gl"])
es_comm("galicia", 349036, "ES-GA", proj=32629, language=["gl", "es"])
es_comm("la_rioja", 348991, "ES-RI", proj=32630)
es_comm("comunidad_de_madrid", 349055, "ES-MD", proj=32630)
es_comm("comunidad_foral_de_navarra", 349027, "ES-NC", proj=32630, language=["es", "eu"])
es_comm("euskadi", 349042, "ES-PV", proj=32630, language=["eu", "es"])
es_comm("comunidad_foral_de_navarra", 349027, "ES-NC", proj=32630, language=["es", "eu"], multilingual_style='sp_eu')
es_comm("euskadi", 349042, "ES-PV", proj=32630, language=["eu", "es"], multilingual_style='sp_eu')
es_comm("region_de_murcia", 349047, "ES-MC", proj=32630)

es_comm("canarias", 349048, "ES-CN", proj=32628, area="africa")
Expand Down
44 changes: 41 additions & 3 deletions plugins/Name_Multilingual.py
Expand Up @@ -45,6 +45,33 @@ def init(self, logger):
{"name": tags["name:"+lang[1]].strip() + " - " + tags["name:"+lang[0].strip()]},
] if tags.get("name:"+lang[0]) and tags.get("name:"+lang[1]) and tags["name:"+lang[0]].strip() != tags["name:"+lang[1]].strip() else [{"name": tags.get("name:"+lang[0], tags.get("name:"+lang[1])).strip()}]
self.split = self.split_be
elif style == "sp_eu":
def aggregator(tags):
name = tags.get("name")
if name is not None and ("-" in name or "(" in name):
return []
separator = " / " if name is None or " / " in name else "/"
return [
{"name": tags["name:"+lang[0]].strip()},
{"name": tags["name:"+lang[1]].strip()},
{"name": tags["name:"+lang[0]].strip() + separator + tags["name:"+lang[1].strip()]},
{"name": tags["name:"+lang[1]].strip() + separator + tags["name:"+lang[0].strip()]},
] if tags.get("name:"+lang[0]) and tags.get("name:"+lang[1]) and tags["name:"+lang[0]].strip() != tags["name:"+lang[1]].strip() else [{"name": tags.get("name:"+lang[0], tags.get("name:"+lang[1])).strip()}]
self.aggregator = aggregator
self.split = self.split_sp_eu
elif style == "sp_ast":
def aggregator(tags):
name = tags.get("name")
if name is not None and ("-" in name or "(" in name):
return []
separator = " / " if name is None or " / " in name else "/"
return [
{"name": tags["name:"+lang[0]].strip()},
{"name": tags["name:"+lang[1]].strip()},
{"name": tags["name:"+lang[0]].strip() + separator + tags["name:"+lang[1].strip()]},
] if tags.get("name:"+lang[0]) and tags.get("name:"+lang[1]) and tags["name:"+lang[0]].strip() != tags["name:"+lang[1]].strip() else [{"name": tags.get("name:"+lang[0], tags.get("name:"+lang[1])).strip()}]
self.aggregator = aggregator
self.split = self.split_sp_ast
elif style == "xk":
self.aggregator = lambda tags: [
{"name": tags["name:"+lang[0]].strip()},
Expand Down Expand Up @@ -128,8 +155,8 @@ def way(self, data, tags, nds):
def relation(self, data, tags, members):
return self.node(data, tags)

def split_be(self, name):
s = list(map(lambda a: a.strip(), name.split(' - ')))
def split_delimitor(self, name, delimitor, ordered):
s = list(map(lambda a: a.strip(), name.split(delimitor)))
ret = []
if len(s) == 1:
for (lang, regex_) in self.lang_regex_script:
Expand All @@ -138,10 +165,21 @@ def split_be(self, name):
elif len(s) == 2:
if self.lang_regex_script[0][1].match(s[0]) and self.lang_regex_script[1][1].match(s[1]):
ret.append({"name:" + self.lang[0]: s[0], "name:" + self.lang[1]: s[1]})
if self.lang_regex_script[1][1].match(s[0]) and self.lang_regex_script[0][1].match(s[1]):
if not ordered and self.lang_regex_script[1][1].match(s[0]) and self.lang_regex_script[0][1].match(s[1]):
ret.append({"name:" + self.lang[0]: s[1], "name:" + self.lang[1]: s[0]})
return ret

def split_be(self, name):
return self.split_delimitor(name, ' - ', False)

def split_sp_eu(self, name):
if "-" not in name and "(" not in name:
return self.split_delimitor(name, '/', False)

def split_sp_ast(self, name):
if "-" not in name and "(" not in name:
return self.split_delimitor(name, '/', True)

char_common = regex.compile(r"[\p{Common}]", flags=regex.V1)
char_ma = {
'fr': regex.compile(r"[{0}]".format(gen_regex(language2scripts['fr'])), flags=regex.V1),
Expand Down

0 comments on commit 6d2efce

Please sign in to comment.