spb/valoplex Public
ValoPlex — moteur d'évaluation spécialisé pour les plex au Québec, petit frère de Vrai-Prix.
TypeScript 90.3%
Python 7.1%
CSS 2.5%
1// Auteur : Simon-Pierre Boucher — contact@spboucher.ai2export type Lang = "fr" | "en";34const dict = {5 fr: {6 tagline: "La vraie valeur de votre plex, porte par porte",7 sub: "ValoPlex est le moteur d'évaluation spécialisé plex du Québec : 393 865 immeubles de 2 logements et plus, 94 000 ventes réelles de plex (2021-2026), un modèle hédonique avancé dédié. Pas de boîte noire : on vous montre le calcul.",8 searchPlaceholder: "Entrez l'adresse du plex (ex. 4562 rue Chabot, Montréal)",9 estimateBtn: "Évaluer",10 manualTitle: "Pas d'adresse ? Décrivez le plex",11 municipality: "Municipalité",12 propertyType: "Type de propriété",13 portes: "Nombre de logements (portes)",14 floorArea: "Superficie habitable (m²)",15 yearBuilt: "Année de construction",16 landArea: "Superficie du terrain (m²)",17 estimatedValue: "Valeur estimée",18 valeurParPorte: "Valeur par porte",19 range: "Fourchette calibrée (80 %)",20 confidence: "Indice de confiance",21 whyTitle: "Pourquoi ce prix ? Le calcul, sans boîte noire",22 modelPart: "Modèle hédonique plex en ratio (LightGBM, 91 000 ventes)",23 compsPart: "Plex comparables ajustés (médiane pondérée)",24 weightModel: "poids du modèle",25 weightComps: "poids des comparables",26 compsTitle: "Ventes de plex comparables",27 adjTime: "Ajust. marché",28 adjArea: "Ajust. superficie",29 adjAge: "Ajust. âge",30 adjPortes: "Ajust. portes",31 adjusted: "Prix ajusté",32 sold: "Vendu",33 distance: "Distance",34 weight: "Poids",35 history: "Valeur estimée par année",36 assessed: "Évaluation municipale (rôle 2026)",37 leadTitle: "Recevoir le rapport détaillé (PDF)",38 leadBtn: "M'envoyer le rapport",39 leadOk: "Merci ! Votre rapport sera envoyé sous peu.",40 emailPlaceholder: "votre@courriel.com",41 disclaimer: "Estimation statistique à titre indicatif — ne remplace pas une évaluation professionnelle.",42 unifamilial: "Unifamiliale",43 plex: "Plex",44 condo_ou_multi: "Condo / multirésidentiel",45 chalet: "Chalet",46 maison_mobile: "Maison mobile",47 terrain: "Terrain",48 autre: "Autre",49 notFound: "Plex introuvable",50 dataNote: "Données : rôles d'évaluation foncière du Québec (MAMH) et ventes de plex publiées.",51 confA: "Très fiable",52 confB: "Fiable",53 confC: "Indicative",54 confD: "Peu fiable — marché mince",55 searchNoResult: "Aucun plex trouvé — essayez « numéro rue municipalité »",56 loading: "Calcul en cours…",57 },58 en: {59 tagline: "Your plex's true value, door by door",60 sub: "ValoPlex is Québec's plex-specialized valuation engine: 393,865 buildings of 2+ dwellings, 94,000 real plex sales (2021-2026), a dedicated advanced hedonic model. No black box: we show the math.",61 searchPlaceholder: "Enter the plex address (e.g. 4562 rue Chabot, Montréal)",62 estimateBtn: "Value it",63 manualTitle: "No address? Describe the plex",64 municipality: "Municipality",65 propertyType: "Property type",66 portes: "Number of dwellings (doors)",67 floorArea: "Living area (m²)",68 yearBuilt: "Year built",69 landArea: "Lot area (m²)",70 estimatedValue: "Estimated value",71 valeurParPorte: "Value per door",72 range: "Calibrated range (80%)",73 confidence: "Confidence index",74 whyTitle: "Why this price? The math, no black box",75 modelPart: "Ratio-based plex hedonic model (LightGBM, 91k sales)",76 compsPart: "Adjusted comparable plexes (weighted median)",77 weightModel: "model weight",78 weightComps: "comparables weight",79 compsTitle: "Comparable plex sales",80 adjTime: "Market adj.",81 adjArea: "Area adj.",82 adjAge: "Age adj.",83 adjPortes: "Doors adj.",84 adjusted: "Adjusted price",85 sold: "Sold",86 distance: "Distance",87 weight: "Weight",88 history: "Estimated value by year",89 assessed: "Municipal assessment (2026 roll)",90 leadTitle: "Get the detailed report (PDF)",91 leadBtn: "Send me the report",92 leadOk: "Thanks! Your report is on its way.",93 emailPlaceholder: "you@email.com",94 disclaimer: "Statistical estimate for information only — not a substitute for a professional appraisal.",95 unifamilial: "Single-family",96 plex: "Plex",97 condo_ou_multi: "Condo / multi-residential",98 chalet: "Cottage",99 maison_mobile: "Mobile home",100 terrain: "Land",101 autre: "Other",102 notFound: "Plex not found",103 dataNote: "Data: Québec property assessment rolls (MAMH) and published plex sales.",104 confA: "Very reliable",105 confB: "Reliable",106 confC: "Indicative",107 confD: "Low reliability — thin market",108 searchNoResult: "No plex found — try “number street municipality”",109 loading: "Computing…",110 },111} as const;112113export type TKey = keyof (typeof dict)["fr"];114115export function t(lang: Lang, key: TKey): string {116 return dict[lang][key] ?? dict.fr[key];117}118