"""Offline lexicon for the Automatic (cloud) prompt box. Data only, no logic.

FOREIGN_TO_ENGLISH maps common non-English object words to the English token
the cloud model understands, covering the real demand ranking (buildings,
land cover, vegetation, roads, water, parcels, solar) plus common objects in
fr / es / pt / de / it. Keys MUST be accent-folded lowercase (see
prompt_guard._fold_ascii: 'batiment' not 'bâtiment'). Words that double as
common English words ('auto', 'boot', 'see', 'pin', 'arena', 'case', 'nave',
'grab', 'stall', 'court', 'tour', 'mare', 'prairie', 'strand', 'villa') are
deliberately absent so English prompts are never flagged or rewritten.
Loanwords whose English meaning matches ('chateau', 'autobahn', 'cabana')
are kept: rewriting them is correct for every audience.

ENGLISH_OBJECT_WORDS is the safety net for the typo corrector: a real
English object word listed here (or a catalogue token) is NEVER "corrected"
to something else, so 'cart' stays 'cart' while 'buildin' becomes 'building'.

The unknown long tail (other languages, rare words, phrases) is handled by
the server-side translation fallback at commit time; this file only has to
be instant and offline.
"""
from __future__ import annotations

# Function words that only exist in non-English languages (none of these is a
# common English word). Their presence marks the whole prompt as non-English
# even when every noun is ambiguous. fr / es / pt / de / it.
FOREIGN_STOPWORDS = {
    # French
    "le", "la", "les", "une", "des", "du", "dans", "sur", "avec", "sans",
    "tous", "toutes", "toute", "chaque", "et", "ou",
    # Spanish
    "el", "los", "las", "unos", "unas", "con", "sin", "todos", "todas",
    "cada", "para",
    # Portuguese
    "uma", "uns", "umas", "em", "com", "sem", "toda", "todo",
    # German
    "der", "die", "das", "ein", "eine", "und", "mit", "ohne", "alle",
    "jedes", "jede",
    # Italian
    "il", "gli", "uno", "ed", "senza", "tutti", "tutte", "ogni",
    "della", "dei", "delle", "nel", "nella",
}

FOREIGN_TO_ENGLISH = {
    # ---- multi-word phrases (checked against the whole prompt first) ----
    "panneau solaire": "solar panel", "panneaux solaires": "solar panel",
    "panel solar": "solar panel", "paneles solares": "solar panel",
    "placa solar": "solar panel", "placas solares": "solar panel",
    "painel solar": "solar panel", "paineis solares": "solar panel",
    "pannello solare": "solar panel", "pannelli solari": "solar panel",
    "plaque solaire": "solar panel",
    "pala eolica": "wind turbine", "turbina eolica": "wind turbine",
    "molino de viento": "windmill",
    "voie ferree": "railway", "via ferrea": "railway",
    "passage pieton": "crosswalk", "paso de cebra": "crosswalk",
    "cruce peatonal": "crosswalk", "faixa de pedestres": "crosswalk",
    "strisce pedonali": "crosswalk",
    "aire de jeux": "playground", "parque infantil": "playground",
    "parco giochi": "playground",
    "terrain de foot": "soccer field", "terrain de football": "soccer field",
    "campo de futbol": "soccer field", "campo de futebol": "soccer field",
    "campo da calcio": "soccer field",
    "court de tennis": "tennis court", "terrain de tennis": "tennis court",
    "pista de tenis": "tennis court", "quadra de tenis": "tennis court",
    "campo da tennis": "tennis court",
    "cerca viva": "hedge", "nave industrial": "warehouse",
    "poste de luz": "street light", "ligne electrique": "power line",
    "linea electrica": "power line",
    # ---- French ----
    "batiment": "building", "batiments": "building", "immeuble": "building",
    "immeubles": "building", "edifice": "building", "edifices": "building",
    "maison": "house", "maisons": "house", "pavillon": "house",
    "pavillons": "house", "cabane": "cabin", "cabanes": "cabin",
    "toit": "roof", "toits": "roof", "toiture": "roof", "toitures": "roof",
    "voiture": "car", "voitures": "car", "camion": "truck",
    "camions": "truck", "vehicule": "vehicle", "vehicules": "vehicle",
    "moto": "motorcycle", "motos": "motorcycle", "velo": "bicycle",
    "velos": "bicycle", "tracteur": "tractor", "tracteurs": "tractor",
    "caravane": "caravan", "caravanes": "caravan",
    "helicoptere": "helicopter", "helicopteres": "helicopter",
    "route": "road", "routes": "road", "rue": "road", "rues": "road",
    "chemin": "path", "chemins": "path", "sentier": "path",
    "sentiers": "path", "autoroute": "highway", "autoroutes": "highway",
    "trottoir": "sidewalk", "trottoirs": "sidewalk",
    "stationnement": "parking lot", "rond-point": "roundabout",
    "giratoire": "roundabout", "lampadaire": "street light",
    "lampadaires": "street light", "pieton": "pedestrian",
    "pietons": "pedestrian", "pylone": "pylon", "pylones": "pylon",
    "arbre": "tree", "arbres": "tree", "foret": "forest", "forets": "forest",
    "haie": "hedge", "haies": "hedge", "arbuste": "bush", "arbustes": "bush",
    "buisson": "bush", "buissons": "bush", "herbe": "grass",
    "pelouse": "grass", "pelouses": "grass", "gazon": "grass",
    "verger": "orchard", "vergers": "orchard", "olivier": "olive tree",
    "oliviers": "olive tree", "palmier": "palm tree",
    "palmiers": "palm tree", "sapin": "pine tree", "sapins": "pine tree",
    "chene": "oak tree", "chenes": "oak tree", "tournesol": "sunflower",
    "tournesols": "sunflower", "ble": "wheat", "riz": "rice",
    "lavande": "lavender", "pature": "pasture", "patures": "pasture",
    "eau": "water", "riviere": "river", "rivieres": "river",
    "fleuve": "river", "fleuves": "river", "lac": "lake", "lacs": "lake",
    "etang": "pond", "etangs": "pond", "marais": "wetland",
    "marecage": "wetland", "marecages": "wetland",
    "piscine": "swimming pool", "piscines": "swimming pool",
    "plage": "beach", "plages": "beach", "littoral": "coastline",
    "falaise": "cliff", "falaises": "cliff", "ile": "island",
    "iles": "island", "barrage": "dam", "barrages": "dam",
    "fontaine": "fountain", "fontaines": "fountain",
    "champ": "field", "champs": "field", "parcelle": "field",
    "parcelles": "field", "vigne": "vineyard", "vignes": "vineyard",
    "vignoble": "vineyard", "vignobles": "vineyard", "ferme": "farm",
    "fermes": "farm", "grange": "barn", "granges": "barn",
    "etable": "barn", "etables": "barn", "poulailler": "chicken coop",
    "serre": "greenhouse", "serres": "greenhouse", "ruche": "beehive",
    "ruches": "beehive", "vache": "cow", "vaches": "cow",
    "mouton": "sheep", "moutons": "sheep", "cheval": "horse",
    "chevaux": "horse",
    "bateau": "boat", "bateaux": "boat", "avion": "airplane",
    "avions": "airplane", "pont": "bridge", "ponts": "bridge",
    "quai": "pier", "quais": "pier", "ponton": "pier", "pontons": "pier",
    "eolienne": "wind turbine", "eoliennes": "wind turbine",
    "moulin": "windmill", "moulins": "windmill", "phare": "lighthouse",
    "phares": "lighthouse", "solaire": "solar panel",
    "cheminee": "chimney", "cheminees": "chimney", "mur": "wall",
    "murs": "wall", "cloture": "fence", "clotures": "fence",
    "citerne": "tank", "citernes": "tank", "conteneur": "shipping container",
    "conteneurs": "shipping container", "chantier": "construction site",
    "chantiers": "construction site", "carriere": "quarry",
    "carrieres": "quarry", "usine": "factory", "usines": "factory",
    "entrepot": "warehouse", "entrepots": "warehouse", "eglise": "church",
    "eglises": "church", "chateau": "castle", "chateaux": "castle",
    "stade": "stadium", "stades": "stadium", "cimetiere": "cemetery",
    "cimetieres": "cemetery", "tombe": "grave", "tombes": "grave",
    "jardin": "garden", "jardins": "garden", "parc": "park",
    "parcs": "park", "colline": "hill", "collines": "hill",
    "montagne": "mountain", "montagnes": "mountain", "rocher": "rock",
    "rochers": "rock", "sable": "sand", "neige": "snow",
    "nuage": "cloud", "nuages": "cloud", "ombres": "shadow",
    "tente": "tent", "tentes": "tent", "personne": "person",
    "personnes": "person",
    # ---- Spanish ----
    "edificio": "building", "edificios": "building",
    "construccion": "building", "construcciones": "building",
    "casa": "house", "casas": "house", "vivienda": "house",
    "viviendas": "house", "cabana": "cabin", "cabanas": "cabin",
    "tejado": "roof", "tejados": "roof", "techo": "roof", "techos": "roof",
    "azotea": "roof", "azoteas": "roof",
    "coche": "car", "coches": "car", "carro": "car", "carros": "car",
    "camiones": "truck", "vehiculo": "vehicle", "vehiculos": "vehicle",
    "bicicleta": "bicycle", "bicicletas": "bicycle",
    "caravana": "caravan", "caravanas": "caravan",
    "helicoptero": "helicopter", "helicopteros": "helicopter",
    "carretera": "road", "carreteras": "road", "calle": "road",
    "calles": "road", "avenida": "road", "avenidas": "road",
    "camino": "path", "caminos": "path", "sendero": "path",
    "senderos": "path", "autopista": "highway", "autopistas": "highway",
    "acera": "sidewalk", "aceras": "sidewalk",
    "aparcamiento": "parking lot", "aparcamientos": "parking lot",
    "estacionamiento": "parking lot", "estacionamientos": "parking lot",
    "rotonda": "roundabout", "rotondas": "roundabout",
    "glorieta": "roundabout", "glorietas": "roundabout",
    "farola": "street light", "farolas": "street light",
    "peaton": "pedestrian", "peatones": "pedestrian",
    "ferrocarril": "railway", "ferrocarriles": "railway",
    "tren": "train", "trenes": "train", "autobus": "bus",
    "autobuses": "bus",
    "arbol": "tree", "arboles": "tree", "bosque": "forest",
    "bosques": "forest", "selva": "forest", "selvas": "forest",
    "seto": "hedge", "setos": "hedge", "arbusto": "bush",
    "arbustos": "bush", "matorral": "bush", "matorrales": "bush",
    "cesped": "grass", "hierba": "grass", "pasto": "pasture",
    "pastos": "pasture", "pradera": "meadow", "praderas": "meadow",
    "prado": "meadow", "prados": "meadow",
    "huerto": "orchard", "huertos": "orchard", "huerta": "orchard",
    "huertas": "orchard", "olivo": "olive tree", "olivos": "olive tree",
    "palmera": "palm tree", "palmeras": "palm tree",
    "pino": "pine tree", "pinos": "pine tree", "roble": "oak tree",
    "robles": "oak tree", "girasol": "sunflower", "girasoles": "sunflower",
    "trigo": "wheat", "maiz": "corn", "arroz": "rice",
    "lavanda": "lavender", "cultivo": "crop field", "cultivos": "crop field",
    "vinedo": "vineyard", "vinedos": "vineyard", "vina": "vineyard",
    "vinas": "vineyard",
    "agua": "water", "rio": "river", "rios": "river", "lago": "lake",
    "lagos": "lake", "laguna": "lake", "lagunas": "lake",
    "estanque": "pond", "estanques": "pond", "charca": "pond",
    "charcas": "pond", "pantano": "wetland", "pantanos": "wetland",
    "humedal": "wetland", "humedales": "wetland",
    "piscina": "swimming pool", "piscinas": "swimming pool",
    "playa": "beach", "playas": "beach", "costa": "coastline",
    "costas": "coastline", "acantilado": "cliff", "acantilados": "cliff",
    "isla": "island", "islas": "island", "presa": "dam",
    "represa": "dam", "represas": "dam", "fuente": "fountain",
    "fuentes": "fountain",
    "campo": "field", "campos": "field", "parcela": "field",
    "parcelas": "field", "granja": "farm", "granjas": "farm",
    "finca": "farm", "fincas": "farm", "granero": "barn",
    "graneros": "barn", "establo": "barn", "establos": "barn",
    "gallinero": "chicken coop", "colmena": "beehive",
    "colmenas": "beehive", "invernadero": "greenhouse",
    "invernaderos": "greenhouse", "vaca": "cow", "vacas": "cow",
    "oveja": "sheep", "ovejas": "sheep", "caballo": "horse",
    "caballos": "horse",
    "barco": "boat", "barcos": "boat", "lancha": "boat",
    "lanchas": "boat", "aviones": "airplane", "puente": "bridge",
    "puentes": "bridge", "muelle": "pier", "muelles": "pier",
    "embarcadero": "pier", "embarcaderos": "pier",
    "aerogenerador": "wind turbine", "aerogeneradores": "wind turbine",
    "molino": "windmill", "molinos": "windmill", "faro": "lighthouse",
    "faros": "lighthouse", "chimenea": "chimney", "chimeneas": "chimney",
    "muro": "wall", "muros": "wall", "pared": "wall", "paredes": "wall",
    "valla": "fence", "vallas": "fence", "cerca": "fence",
    "cercas": "fence", "tanque": "tank", "tanques": "tank",
    "contenedor": "shipping container", "contenedores": "shipping container",
    "grua": "crane", "gruas": "crane", "cantera": "quarry",
    "canteras": "quarry", "fabrica": "factory", "fabricas": "factory",
    "almacen": "warehouse", "almacenes": "warehouse", "iglesia": "church",
    "iglesias": "church", "castillo": "castle", "castillos": "castle",
    "estadio": "stadium", "estadios": "stadium", "cancha": "sports field",
    "canchas": "sports field", "cementerio": "cemetery",
    "cementerios": "cemetery", "tumba": "grave", "tumbas": "grave",
    "parque": "park", "parques": "park", "colina": "hill",
    "colinas": "hill", "cerro": "hill", "cerros": "hill",
    "montana": "mountain", "montanas": "mountain", "roca": "rock",
    "rocas": "rock", "nieve": "snow", "nube": "cloud", "nubes": "cloud",
    "sombra": "shadow", "sombras": "shadow", "carpa": "tent",
    "carpas": "tent", "persona": "person", "personas": "person",
    "torre": "tower", "torres": "tower", "ruina": "ruins",
    "ruinas": "ruins",
    # ---- Portuguese (words shared with Spanish are listed once above) ----
    "predio": "building", "predios": "building", "construcao": "building",
    "construcoes": "building", "telhado": "roof", "telhados": "roof",
    "cobertura": "roof", "coberturas": "roof",
    "caminhao": "truck", "caminhoes": "truck", "veiculo": "vehicle",
    "veiculos": "vehicle", "trator": "tractor", "tratores": "tractor",
    "reboque": "caravan", "reboques": "caravan",
    "estrada": "road", "estradas": "road", "rua": "road", "ruas": "road",
    "rodovia": "highway", "rodovias": "highway", "caminho": "path",
    "caminhos": "path", "trilha": "path", "trilhas": "path",
    "calcada": "sidewalk", "calcadas": "sidewalk",
    "rotatoria": "roundabout", "rotatorias": "roundabout",
    "pedestre": "pedestrian", "pedestres": "pedestrian",
    "ferrovia": "railway", "ferrovias": "railway", "trem": "train",
    "trens": "train", "comboio": "train", "comboios": "train",
    "onibus": "bus",
    "arvore": "tree", "arvores": "tree", "floresta": "forest",
    "florestas": "forest", "mata": "forest", "matas": "forest",
    "sebe": "hedge", "sebes": "hedge", "grama": "grass",
    "gramado": "grass", "relva": "grass", "pastagem": "pasture",
    "pastagens": "pasture", "pomar": "orchard", "pomares": "orchard",
    "oliveira": "olive tree", "oliveiras": "olive tree",
    "palmeira": "palm tree", "palmeiras": "palm tree",
    "pinheiro": "pine tree", "pinheiros": "pine tree",
    "carvalho": "oak tree", "carvalhos": "oak tree",
    "girassol": "sunflower", "girassois": "sunflower", "milho": "corn",
    "plantacao": "crop field", "plantacoes": "crop field",
    "lavoura": "crop field", "lavouras": "crop field", "vinha": "vineyard",
    "vinhas": "vineyard", "vinhedo": "vineyard", "vinhedos": "vineyard",
    "lagoa": "lake", "lagoas": "lake", "brejo": "wetland",
    "brejos": "wetland", "praia": "beach", "praias": "beach",
    "penhasco": "cliff", "penhascos": "cliff", "ilha": "island",
    "ilhas": "island", "barragem": "dam", "barragens": "dam",
    "fazenda": "farm", "fazendas": "farm", "celeiro": "barn",
    "celeiros": "barn", "galinheiro": "chicken coop",
    "colmeia": "beehive", "colmeias": "beehive", "estufa": "greenhouse",
    "estufas": "greenhouse", "ovelha": "sheep", "ovelhas": "sheep",
    "cavalo": "horse", "cavalos": "horse",
    "navio": "ship", "navios": "ship", "aviao": "airplane",
    "avioes": "airplane", "ponte": "bridge", "pontes": "bridge",
    "cais": "pier", "moinho": "windmill", "moinhos": "windmill",
    "farol": "lighthouse", "farois": "lighthouse", "chamine": "chimney",
    "chamines": "chimney", "parede": "wall", "guindaste": "crane",
    "guindastes": "crane", "pedreira": "quarry", "pedreiras": "quarry",
    "armazem": "warehouse", "armazens": "warehouse", "galpao": "warehouse",
    "galpoes": "warehouse", "igreja": "church", "igrejas": "church",
    "castelo": "castle", "castelos": "castle", "quadra": "sports field",
    "quadras": "sports field", "cemiterio": "cemetery",
    "cemiterios": "cemetery", "tumulo": "grave", "tumulos": "grave",
    "jardim": "garden", "parquinho": "playground",
    "morro": "hill", "morros": "hill", "montanha": "mountain",
    "montanhas": "mountain", "rocha": "rock", "rochas": "rock",
    "areia": "sand", "neve": "snow", "nuvem": "cloud", "nuvens": "cloud",
    "barraca": "tent", "barracas": "tent", "pessoa": "person",
    "pessoas": "person",
    # ---- German -- (words that double as English ones - "auto", "boot",
    # "see", "stall", "grab", "strand", "burg" - are deliberately absent) ----
    "gebaude": "building", "haus": "house", "hauser": "house",
    "wohnhaus": "house", "hutte": "cabin", "hutten": "cabin",
    "dach": "roof", "dacher": "roof",
    "lastwagen": "truck", "lkw": "truck", "fahrzeug": "vehicle",
    "fahrzeuge": "vehicle", "motorrad": "motorcycle",
    "fahrrad": "bicycle", "fahrrader": "bicycle", "traktor": "tractor",
    "traktoren": "tractor", "wohnwagen": "caravan",
    "hubschrauber": "helicopter",
    "strasse": "road", "strassen": "road", "weg": "path", "wege": "path",
    "pfad": "path", "pfade": "path", "autobahn": "highway",
    "autobahnen": "highway", "gehweg": "sidewalk", "gehwege": "sidewalk",
    "parkplatz": "parking lot", "parkplatze": "parking lot",
    "kreisverkehr": "roundabout", "zebrastreifen": "crosswalk",
    "laterne": "street light", "laternen": "street light",
    "strassenlaterne": "street light", "fussganger": "pedestrian",
    "gleis": "railway", "gleise": "railway", "schienen": "railway",
    "zug": "train", "zuge": "train", "strommast": "pylon",
    "strommasten": "pylon",
    "baum": "tree", "baume": "tree", "wald": "forest", "walder": "forest",
    "hecke": "hedge", "hecken": "hedge", "strauch": "bush",
    "straucher": "bush", "busch": "bush", "busche": "bush",
    "rasen": "grass", "wiese": "meadow", "wiesen": "meadow",
    "weide": "pasture", "weiden": "pasture", "obstgarten": "orchard",
    "olivenbaum": "olive tree", "palme": "palm tree", "palmen": "palm tree",
    "kiefer": "pine tree", "kiefern": "pine tree", "tanne": "pine tree",
    "tannen": "pine tree", "eiche": "oak tree", "eichen": "oak tree",
    "sonnenblume": "sunflower", "sonnenblumen": "sunflower",
    "weizen": "wheat", "ackerland": "crop field", "weinberg": "vineyard",
    "weinberge": "vineyard", "acker": "field", "feld": "field",
    "felder": "field",
    "wasser": "water", "fluss": "river", "flusse": "river",
    "bach": "river", "bache": "river", "teich": "pond", "teiche": "pond",
    "weiher": "pond", "sumpf": "wetland", "schwimmbad": "swimming pool",
    "schwimmbecken": "swimming pool", "kuste": "coastline",
    "meer": "sea", "klippe": "cliff", "klippen": "cliff",
    "insel": "island", "inseln": "island", "staudamm": "dam",
    "brunnen": "fountain",
    "bauernhof": "farm", "scheune": "barn", "scheunen": "barn",
    "stalle": "barn", "huhnerstall": "chicken coop",
    "bienenstock": "beehive", "gewachshaus": "greenhouse",
    "treibhaus": "greenhouse", "kuh": "cow", "kuhe": "cow",
    "schaf": "sheep", "schafe": "sheep", "pferd": "horse",
    "pferde": "horse",
    "boote": "boat", "schiff": "ship", "schiffe": "ship",
    "flugzeug": "airplane", "flugzeuge": "airplane",
    "brucke": "bridge", "brucken": "bridge", "steg": "pier",
    "stege": "pier", "anlegestelle": "pier",
    "windrad": "wind turbine", "windrader": "wind turbine",
    "windkraftanlage": "wind turbine", "windmuhle": "windmill",
    "windmuhlen": "windmill", "leuchtturm": "lighthouse",
    "sonnenkollektor": "solar panel", "solarmodul": "solar panel",
    "solarmodule": "solar panel", "solaranlage": "solar panel",
    "schornstein": "chimney", "schornsteine": "chimney",
    "mauer": "wall", "mauern": "wall", "zaun": "fence", "zaune": "fence",
    "kran": "crane", "krane": "crane", "baustelle": "construction site",
    "baustellen": "construction site", "steinbruch": "quarry",
    "fabrik": "factory", "fabriken": "factory",
    "lagerhalle": "warehouse", "lagerhallen": "warehouse",
    "kirche": "church", "kirchen": "church", "schloss": "castle",
    "stadion": "stadium", "sportplatz": "sports field",
    "fussballplatz": "soccer field", "tennisplatz": "tennis court",
    "spielplatz": "playground", "friedhof": "cemetery",
    "friedhofe": "cemetery", "garten": "garden", "turm": "tower",
    "turme": "tower", "hugel": "hill", "berg": "mountain",
    "berge": "mountain", "fels": "rock", "felsen": "rock",
    "schnee": "snow", "wolke": "cloud", "wolken": "cloud",
    "schatten": "shadow", "zelt": "tent", "zelte": "tent",
    "mensch": "person", "menschen": "person", "personen": "person",
    "ruine": "ruins", "ruinen": "ruins",
    # ---- Italian (words shared with es/pt are listed once above) ----
    "edifici": "building", "palazzo": "building", "palazzi": "building",
    "capanna": "cabin", "capanne": "cabin", "tetto": "roof",
    "tetti": "roof", "tettoia": "roof",
    "macchina": "car", "macchine": "car", "veicoli": "vehicle",
    "trattore": "tractor", "trattori": "tractor",
    "rimorchio": "caravan", "rimorchi": "caravan", "roulotte": "caravan",
    "elicottero": "helicopter", "elicotteri": "helicopter",
    "strada": "road", "strade": "road", "viali": "road",
    "sentiero": "path", "sentieri": "path", "autostrada": "highway",
    "autostrade": "highway", "marciapiede": "sidewalk",
    "marciapiedi": "sidewalk", "parcheggio": "parking lot",
    "parcheggi": "parking lot", "lampione": "street light",
    "lampioni": "street light", "pedone": "pedestrian",
    "pedoni": "pedestrian", "ferrovie": "railway", "binario": "railway",
    "binari": "railway", "treno": "train", "treni": "train",
    "traliccio": "pylon", "tralicci": "pylon",
    "albero": "tree", "alberi": "tree", "bosco": "forest",
    "boschi": "forest", "foresta": "forest", "foreste": "forest",
    "siepe": "hedge", "siepi": "hedge", "cespuglio": "bush",
    "cespugli": "bush", "erba": "grass", "prati": "meadow",
    "prato": "meadow", "pascolo": "pasture", "pascoli": "pasture",
    "frutteto": "orchard", "frutteti": "orchard", "ulivo": "olive tree",
    "ulivi": "olive tree", "pini": "pine tree",
    "quercia": "oak tree", "querce": "oak tree", "girasole": "sunflower",
    "girasoli": "sunflower", "grano": "wheat", "riso": "rice",
    "vigneto": "vineyard", "vigneti": "vineyard", "vigna": "vineyard",
    "campi": "field", "terreno": "field", "terreni": "field",
    "acqua": "water", "fiume": "river", "fiumi": "river",
    "torrente": "river", "torrenti": "river", "laghi": "lake",
    "stagno": "pond", "stagni": "pond", "palude": "wetland",
    "paludi": "wetland", "spiaggia": "beach", "spiagge": "beach",
    "scogliera": "cliff", "scogliere": "cliff", "isola": "island",
    "isole": "island", "diga": "dam", "dighe": "dam",
    "fontana": "fountain", "fontane": "fountain",
    "fattoria": "farm", "fattorie": "farm", "fienile": "barn",
    "fienili": "barn", "stalla": "barn", "pollaio": "chicken coop",
    "arnia": "beehive", "arnie": "beehive", "serra": "greenhouse",
    "mucca": "cow", "mucche": "cow", "pecora": "sheep",
    "pecore": "sheep", "cavallo": "horse", "cavalli": "horse",
    "barca": "boat", "barche": "boat", "navi": "ship",
    "aereo": "airplane", "aerei": "airplane", "ponti": "bridge",
    "molo": "pier", "moli": "pier", "pontile": "pier", "pontili": "pier",
    "mulino": "windmill", "mulini": "windmill", "camini": "chimney",
    "muri": "wall", "recinzione": "fence", "recinzioni": "fence",
    "serbatoio": "tank", "serbatoi": "tank", "cisterna": "tank",
    "cisterne": "tank", "cantiere": "construction site",
    "cantieri": "construction site", "capannone": "warehouse",
    "capannoni": "warehouse", "magazzino": "warehouse",
    "magazzini": "warehouse", "chiesa": "church", "chiese": "church",
    "castello": "castle", "castelli": "castle", "stadio": "stadium",
    "cimitero": "cemetery", "cimiteri": "cemetery", "tomba": "grave",
    "giardino": "garden", "giardini": "garden",
    "parco": "park", "parchi": "park", "collina": "hill",
    "montagna": "mountain",
    "roccia": "rock", "rocce": "rock", "sabbia": "sand",
    "nuvola": "cloud", "nuvole": "cloud", "tenda": "tent",
    "tende": "tent", "rovina": "ruins", "rovine": "ruins",
}

# Real English object words the typo corrector must never rewrite, beyond the
# catalogue tokens and the values above (which are always protected). Short
# words near a known token are the danger zone: without this list "cart"
# would fuzzy-snap to "car" and "dock" to "duck"-grade nonsense.
ENGLISH_OBJECT_WORDS = {
    "animal", "antenna", "barn", "beach", "bike", "bird", "boat", "bridge",
    "bush", "cabin", "canal", "car", "cars", "cart", "cattle", "chimney",
    "church", "cliff", "cloud", "corn", "court", "crop", "crops", "dam",
    "ditch", "dock", "driveway", "farm", "fence", "field", "forest",
    "fountain", "garden", "gate", "grass", "grave", "harbor", "hedge",
    "hill", "horse", "house", "hut", "island", "jet", "lake", "lawn",
    "marina", "meadow", "mill", "mine", "mountain", "oak", "olive",
    "orchard", "palm", "panel", "park", "parking", "path", "pasture",
    "pavement", "people", "person", "pier", "pine", "pitch", "plane",
    "pole", "pond", "pool", "port", "rail", "railway", "rice", "river",
    "road", "rock", "roof", "rooftop", "runway", "sand", "sea", "shed",
    "sheep", "ship", "shrub", "sidewalk", "sign", "silo", "snow", "solar",
    "stadium", "statue", "stone", "street", "tank", "tent", "tower",
    "track", "tractor", "trail", "train", "tree", "truck", "turbine",
    "van", "vehicle", "wall", "warehouse", "water", "well", "wheat",
    "wood", "woods", "yacht",
}
