TypeScript 90.1%
JavaScript 3.2%
Python 3.2%
CSS 1.8%
HTML 1.8%
1// UQO Éval — laboratoire pédagogique d'évaluation immobilière2export type Lang = "fr" | "en";34const dict = {5 fr: {6 tagline: "Comprendre comment une propriété est évaluée",7 sub: "Laboratoire pédagogique d'évaluation immobilière : 3,7 millions d'unités d'évaluation et 745 000 ventes réelles au Québec (2021-2026). Chaque estimation montre son calcul en entier — comparables, ajustements, pondérations, intervalle de confiance.",8 searchPlaceholder: "Entrez une adresse (ex. 861 route Elgin, Saint-Pamphile)",9 estimateBtn: "Analyser",10 manualTitle: "Pas d'adresse ? Décrivez la propriété",11 municipality: "Municipalité",12 propertyType: "Type de propriété",13 floorArea: "Superficie habitable (m²)",14 yearBuilt: "Année de construction",15 landArea: "Superficie du terrain (m²)",16 estimatedValue: "Valeur estimée",17 range: "Intervalle de confiance (P10-P90)",18 confidence: "Indice de confiance",19 whyTitle: "Comment cette valeur est calculée",20 modelPart: "Modèle hédonique (LightGBM, 690 000 ventes QC)",21 compsPart: "Comparables ajustés (médiane pondérée)",22 weightModel: "poids du modèle",23 weightComps: "poids des comparables",24 compsTitle: "Comparables utilisés",25 adjTime: "Ajust. marché",26 adjArea: "Ajust. superficie",27 adjAge: "Ajust. âge",28 adjusted: "Prix ajusté",29 sold: "Vendu",30 distance: "Distance",31 weight: "Poids",32 history: "Valeur estimée par année",33 assessed: "Évaluation municipale (rôle 2026)",34 disclaimer:35 "Plateforme à vocation pédagogique, universitaire et expérimentale — cette estimation statistique ne constitue pas une évaluation immobilière professionnelle certifiée (OEAQ).",36 unifamilial: "Unifamiliale",37 plex: "Plex (2-5 logements)",38 condo_ou_multi: "Condo / multirésidentiel",39 chalet: "Chalet",40 maison_mobile: "Maison mobile",41 terrain: "Terrain",42 autre: "Autre",43 notFound: "Adresse introuvable",44 dataNote: "Données : rôles d'évaluation foncière du Québec (MAMH) et transactions publiques.",45 confA: "Très fiable",46 confB: "Fiable",47 confC: "Indicative",48 confD: "Peu fiable — marché mince",49 searchNoResult: "Aucun résultat — essayez « numéro rue municipalité »",50 loading: "Calcul en cours…",51 /* ---- couche pédagogique (mode étudiant) ---- */52 studentMode: "Mode étudiant",53 seeAnalysis: "Voir l'analyse",54 hideAnalysis: "Masquer l'analyse",55 pedIntro:56 "Le mode étudiant révèle les mécanismes du calcul : critères de sélection des comparables, formules d'ajustement, pondérations et construction de l'indice de confiance.",57 pedWhyCompsTitle: "Pourquoi ces comparables ?",58 pedWhyComps:59 "Les ventes candidates sont cherchées dans un rayon adaptatif (2,2 km, élargi si le marché est mince), puis filtrées : même famille de type de propriété, superficie habitable à ±20 % (relâchée à ±40 % si moins de 6 candidates). Les 12 meilleures selon leur poids sont retenues.",60 pedWeightTitle: "Comment le poids de chaque comparable est calculé",61 pedWeight:62 "Le poids est le produit de trois gaussiennes : proximité (σ = 1 500 m), récence (σ = 24 mois) et similarité de superficie (σ = 25 %). Une vente proche, récente et de taille semblable pèse donc beaucoup plus lourd dans la médiane pondérée.",63 pedAdjTitle: "Les trois ajustements, en dollars",64 pedAdjTime:65 "Ajustement de marché : le prix de vente est ramené aux conditions actuelles via l'indice mensuel du type de propriété (une vente de 2023 est « revalorisée » au niveau du marché d'aujourd'hui).",66 pedAdjArea:67 "Ajustement de superficie : 50 % du prix au m² du comparable par m² d'écart avec la propriété analysée, plafonné à ±25 % du prix.",68 pedAdjAge:69 "Ajustement d'âge : 0,5 % du prix par année d'écart de construction, plafonné à ±10 %.",70 pedBlendTitle: "La combinaison finale",71 pedBlend:72 "Lorsque les deux sources existent, l'estimation finale = 65 % modèle hédonique + 35 % comparables ajustés. Le modèle capte les tendances de masse (18 variables) ; les comparables ancrent l'estimation dans le marché local récent.",73 pedConfTitle: "Décomposition de l'indice de confiance",74 pedConfBase: "Base",75 pedConfComps: "Nombre de comparables (+2,5 chacun, max +25)",76 pedConfDisp: "Faible dispersion des comparables (max +20)",77 pedConfModel: "Présence du modèle hédonique (+15)",78 pedConfWidth: "Pénalité de largeur de fourchette (au-delà de 30 %)",79 pedConfTotal: "Score final",80 pedConceptsTitle: "Trois notions à ne pas confondre",81 pedConceptMarket: "Valeur marchande",82 pedConceptMarketDef:83 "Le prix le plus probable sur un marché libre et concurrentiel — c'est ce que la plateforme estime.",84 pedConceptAsking: "Prix demandé",85 pedConceptAskingDef:86 "Le prix affiché par le vendeur — une stratégie de mise en marché, souvent au-dessus (ou parfois sous) la valeur marchande.",87 pedConceptSale: "Prix de transaction",88 pedConceptSaleDef:89 "Le prix réellement payé, observé dans les 745 000 ventes du corpus — la seule mesure directe du marché.",90 pedRoleTitle: "Et la valeur au rôle ?",91 pedRole:92 "L'évaluation municipale sert au calcul de la taxe foncière. Elle est établie 18 à 24 mois avant son entrée en vigueur : dans un marché qui monte, elle est souvent sous la valeur marchande courante.",93 },94 en: {95 tagline: "Understand how a property is appraised",96 sub: "A teaching laboratory for real-estate valuation: 3.7M assessment units and 745k real Québec sales (2021-2026). Every estimate shows its full computation — comparables, adjustments, weights, confidence interval.",97 searchPlaceholder: "Enter an address (e.g. 861 route Elgin, Saint-Pamphile)",98 estimateBtn: "Analyze",99 manualTitle: "No address? Describe the property",100 municipality: "Municipality",101 propertyType: "Property type",102 floorArea: "Living area (m²)",103 yearBuilt: "Year built",104 landArea: "Lot area (m²)",105 estimatedValue: "Estimated value",106 range: "Confidence interval (P10-P90)",107 confidence: "Confidence index",108 whyTitle: "How this value is computed",109 modelPart: "Hedonic model (LightGBM, 690k QC sales)",110 compsPart: "Adjusted comparables (weighted median)",111 weightModel: "model weight",112 weightComps: "comparables weight",113 compsTitle: "Comparables used",114 adjTime: "Market adj.",115 adjArea: "Area adj.",116 adjAge: "Age adj.",117 adjusted: "Adjusted price",118 sold: "Sold",119 distance: "Distance",120 weight: "Weight",121 history: "Estimated value by year",122 assessed: "Municipal assessment (2026 roll)",123 disclaimer:124 "Educational, academic and experimental platform — this statistical estimate is not a certified professional appraisal (OEAQ).",125 unifamilial: "Single-family",126 plex: "Plex (2-5 units)",127 condo_ou_multi: "Condo / multi-residential",128 chalet: "Cottage",129 maison_mobile: "Mobile home",130 terrain: "Land",131 autre: "Other",132 notFound: "Address not found",133 dataNote: "Data: Québec property assessment rolls (MAMH) and public transactions.",134 confA: "Very reliable",135 confB: "Reliable",136 confC: "Indicative",137 confD: "Low reliability — thin market",138 searchNoResult: "No result — try “number street municipality”",139 loading: "Computing…",140 /* ---- pedagogical layer (student mode) ---- */141 studentMode: "Student mode",142 seeAnalysis: "See the analysis",143 hideAnalysis: "Hide the analysis",144 pedIntro:145 "Student mode reveals the mechanics of the computation: comparable selection criteria, adjustment formulas, weights, and how the confidence index is built.",146 pedWhyCompsTitle: "Why these comparables?",147 pedWhyComps:148 "Candidate sales are fetched in an adaptive radius (2.2 km, widened in thin markets), then filtered: same property-type family, living area within ±20% (relaxed to ±40% below 6 candidates). The best 12 by weight are kept.",149 pedWeightTitle: "How each comparable's weight is computed",150 pedWeight:151 "The weight is the product of three Gaussians: proximity (σ = 1,500 m), recency (σ = 24 months) and area similarity (σ = 25%). A nearby, recent, similarly sized sale therefore weighs much more in the weighted median.",152 pedAdjTitle: "The three adjustments, in dollars",153 pedAdjTime:154 "Market adjustment: the sale price is brought to current conditions via the property type's monthly index (a 2023 sale is 're-priced' at today's market level).",155 pedAdjArea:156 "Area adjustment: 50% of the comparable's $/m² per m² of difference with the subject, capped at ±25% of the price.",157 pedAdjAge:158 "Age adjustment: 0.5% of the price per year of construction difference, capped at ±10%.",159 pedBlendTitle: "The final blend",160 pedBlend:161 "When both sources exist, the final estimate = 65% hedonic model + 35% adjusted comparables. The model captures mass trends (18 variables); the comparables anchor the estimate in the recent local market.",162 pedConfTitle: "Confidence index breakdown",163 pedConfBase: "Base",164 pedConfComps: "Number of comparables (+2.5 each, max +25)",165 pedConfDisp: "Low comparable dispersion (max +20)",166 pedConfModel: "Hedonic model available (+15)",167 pedConfWidth: "Range-width penalty (beyond 30%)",168 pedConfTotal: "Final score",169 pedConceptsTitle: "Three notions not to confuse",170 pedConceptMarket: "Market value",171 pedConceptMarketDef:172 "The most probable price on an open, competitive market — this is what the platform estimates.",173 pedConceptAsking: "Asking price",174 pedConceptAskingDef:175 "The price posted by the seller — a marketing strategy, often above (sometimes below) market value.",176 pedConceptSale: "Transaction price",177 pedConceptSaleDef:178 "The price actually paid, observed in the 745k sales of the corpus — the only direct measure of the market.",179 pedRoleTitle: "What about the assessed value?",180 pedRole:181 "The municipal assessment is used to compute property tax. It is set 18-24 months before taking effect: in a rising market, it often sits below current market value.",182 },183} as const;184185export type TKey = keyof (typeof dict)["fr"];186187export function t(lang: Lang, key: TKey): string {188 return dict[lang][key] ?? dict.fr[key];189}190