merefield
(Robert)
Décembre 27, 2025, 7:29
1192
Ce plugin ne reçoit toujours aucun financement, son avenir est donc quelque peu incertain, cependant, pour le moment, jâai ajoutĂ© ce qui suit :
main â fix_user_location_storage_and_retrieval
merged 10:28AM - 27 Dec 25 UTC
@viddekla , cela devrait résoudre votre problÚme
main â add_national_flags
merged 03:21PM - 27 Dec 25 UTC
* By default, location labels for users will now show the national flag related ⊠to their location. You can disable these with plugin setting `location_user_country_flag `
* Maps for single users are now bigger
main â quick_find_current_location
merged 07:11PM - 27 Dec 25 UTC
Si vous pensez que Locations est gĂ©nial et que jâai fait du bon travail ici, vous pouvez mâoffrir un cafĂ©
5 « J'aime »
merefield
(Robert)
Décembre 28, 2025, 12:36
1193
Je devrais ajouter le nouveau bouton de localisation actuelle de recherche rapide sur le sĂ©lecteur dâemplacement fonctionne Ă©galement pour les emplacements de sujet si vous dĂ©sactivez les champs de saisie dâemplacement.
Il a juste besoin dâun ajustement de styleâŠ
4 « J'aime »
merefield
(Robert)
Décembre 28, 2025, 6:23
1194
Correction de bogue importante, veuillez mettre Ă jour :
main â fix_double_encoding
merged 06:04PM - 28 Dec 25 UTC
* New User locations were being double encoded into JSON
* Re-entering them wil⊠l fix data issues.
(nâaffecte que les emplacements dâutilisateurs saisis depuis le correctif de ce week-end, il suffit de les saisir Ă nouveau)
4 « J'aime »
Excellent travail ! Je vois un autre drapeau cassĂ© sous le nom dâutilisateur, une idĂ©e pourquoi ?
2 « J'aime »
Moin
Janvier 4, 2026, 7:31
1196
Cela me fait penser que cela vient de Locations Plugin đ .
main â add_national_flags
merged 03:21PM - 27 Dec 25 UTC
* By default, location labels for users will now show the national flag related ⊠to their location. You can disable these with plugin setting `location_user_country_flag `
* Maps for single users are now bigger
5 « J'aime »
merefield
(Robert)
Janvier 4, 2026, 3:21
1197
Oui, vous nâavez plus besoin dâexĂ©cuter les deux. Dans le plugin Locations , il est trivial de dĂ©terminer le code du pays, alors pourquoi ne pas proposer un drapeau pour lâaccompagner ?
3 « J'aime »
RGJ
(Richard - Communiteq)
Janvier 4, 2026, 3:51
1198
davidkingham:
drapeau cassé
Vous devriez mettre en minuscules le code pays @merefield
2 « J'aime »
merefield
(Robert)
Janvier 4, 2026, 4:00
1199
Les codes de pays dans les Localisations sont en minuscules par dĂ©faut. Cela est peut-ĂȘtre liĂ© Ă un fournisseur de donnĂ©es tiers.
Jâoffre un support payant si quelquâun a besoin dâun examen plus approfondi.
Câest le problĂšme, je lâai changĂ© en minuscules manuellement et il sâest chargĂ©. Jâai essayĂ© Mapquest et Mapbox avec les mĂȘmes rĂ©sultats. Je tâenvoie un MP Rob.
2 « J'aime »
gilles
Janvier 8, 2026, 8:55
1202
Bonjour, merci pour ce plugin qui est génial
J essai d afficher sur la carte le nom de mon sujet car j ai seulement la localisation
Il y a t il un paramĂštre Ă activer ?
Merci
1 « J'aime »
merefield
(Robert)
Janvier 12, 2026, 10:17
1203
Quelques mises Ă jour :
@Renato a gentiment corrigé un problÚme dans les paramÚtres de Catégorie :
main â renato:modernize_available_views
merged 09:48PM - 12 Jan 26 UTC
Uses the existing value transformer instead of a modifyClass.
Nous avons reçu une contribution pour la langue russe, merci !
main â replaid:patch-1
merged 09:51PM - 12 Jan 26 UTC
* Completed translation of client.ru.yml to the Russian language.
* Used a neut⊠ral, public address in a Russian-speaking country that is not part of a conflict.
Existing file's translation is incomplete, and its example address uses the English-language version's Sydney address but states its city as ĐОДĐČ.
Et enfin, jâai ajoutĂ© un nouveau filtre expĂ©rimental pour la liste des sujets appelĂ© Ă ProximitĂ© (Nearby) :
main â add_nearby_filter
merged 11:08PM - 11 Jan 26 UTC
* FEATURE: adds a "Nearby" Topic List filter if new setting `location_nearby_lis⊠t_max_distance_km` is non-zero and user has a geo location recorded.
* FIX: makes the location selector work for topic selection on Modals
Qui liste tous les sujets dans un rayon de x km (paramĂštre) Ă partir de lâemplacement fourni par lâutilisateur connectĂ©.
@Barney_Lodge cela a Ă©tĂ© inspirĂ© par votre cas dâutilisation et a occupĂ© la majeure partie de mon dimanche
Ceci corrige Ă©galement le sĂ©lecteur dâemplacement en ligne pour les sujets sur la modale.
8 « J'aime »
Oh gĂ©nial !!! Jâadore Discourse !!
Cordialement
Barney Lodge
3 « J'aime »
merefield
(Robert)
Janvier 13, 2026, 12:24
1205
Dans une version passĂ©e mais rĂ©cente , il y avait un bogue dans la logique de population de lâemplacement de lâutilisateur (UserLocation). Cela est maintenant corrigĂ©, mais il peut y avoir un impact sur certaines donnĂ©es.
Vous pouvez identifier si vous avez le problÚme en exécutant ceci sur la console rails :
array_for_fix = Locations::UserLocation.where(state: "state").pluck(:user_id)
si ce nâest pas vide, exĂ©cutez simplement ceci :
array_for_fix.each do |id|
Locations::UserLocationProcess.upsert(id)`
end
Lâautre façon de corriger cela est de rĂ©introduire manuellement lâemplacement de lâutilisateur, donc en gros, les futures modifications dâemplacement dâutilisateur Ă©craseront simplement les mauvaises donnĂ©es.
Veuillez nous excuser pour le désagrément.
Si quelquâun souhaite Ă©crire une migration, une PR est la bienvenue.
6 « J'aime »
Est-il possible dâimplĂ©menter cette fonctionnalitĂ© :
AprĂšs quâun utilisateur publie un fil de discussion ou une rĂ©ponse, dĂ©tecter automatiquement lâemplacement en fonction de son adresse IP actuelle et lâafficher sous son avatar dans le fil de discussion/la publication â au lieu dâobliger les utilisateurs Ă le sĂ©lectionner manuellement ou Ă le dĂ©finir dans leur profil.
Je suis prĂȘt Ă fournir un support payant pour cela.
Tout comme ZHIHU.
1 « J'aime »
merefield
(Robert)
Janvier 20, 2026, 7:12
1207
La mise Ă jour involontaire de lâemplacement de lâutilisateur constituerait un changement majeur pour ce plugin, car jusquâĂ prĂ©sent, il reposait sur la soumission volontaire et donc lâadhĂ©sion individuelle de lâutilisateur.
Mais je peux comprendre lâargument.
Il y a dĂ©jĂ une Ă©tiquette de publication pour lâemplacement de lâutilisateur sur chaque publication. Donc, je pense que cette partie est dĂ©jĂ couverte.
Je pense que la mise Ă jour automatique de lâemplacement de lâutilisateur en tant quâoption du site lors de la publication est rĂ©alisable et raisonnable Ă condition que :
Les sites mettent à jour leurs conditions générales de vente
Lâemplacement soit suffisamment approximatif, peut-ĂȘtre Ă la ville la plus proche ? Pour moi, suivre les gens jusquâĂ la rue ne va probablement pas rendre les utilisateurs plus sympathiques envers le site ! Peut-ĂȘtre voudriez-vous une option pour dĂ©finir la granularitĂ© Ă ville, province (si gĂ©nĂ©ralement faisable via les donnĂ©es) ou pays. Je serais intĂ©ressĂ© par les opinions dâautres administrateurs Ă ce sujet.
Je serais heureux dâenvisager un parrainage pour ajouter lâautomatisation du backend en tant quâoption de site. Je vous contacterai par MP pour voir si nous pouvons parvenir Ă un accord.
4 « J'aime »
La prĂ©cision au niveau de la ville suffit. Si câĂ©tait au niveau de la rue, ce serait terrifiant.
4 « J'aime »
nathank
(Nathan Kershaw)
Janvier 20, 2026, 2:04
1209
merefield:
Suivre les utilisateurs jusquâĂ la rue est peu susceptible de rendre les utilisateurs plus sympathiques au site ! Peut-ĂȘtre voudriez-vous une option pour dĂ©finir la granularitĂ© sur ville, province (si gĂ©nĂ©ralement rĂ©alisable via les donnĂ©es) ou pays. Je serais intĂ©ressĂ© par les opinions des autres administrateurs Ă ce sujet.
Avoir une option de granularité comme valeur par défaut du site serait génial. Tout comme la capacité des utilisateurs à modifier la granularité / se désinscrire.
2 forums nationaux que jâadministre seraient parfaits pour la granularitĂ© par province. Un forum local serait parfait pour la granularitĂ© par banlieue.
Je peux facilement imaginer des sites utilisant toutes les options.
3 « J'aime »
Roi
Janvier 26, 2026, 2:37
1210
[quote=âmerefield, post:1205, topic:69742â]Vous pouvez identifier si vous avez le problĂšme en exĂ©cutant ceci sur la console rails :
array_for_fix = Locations::UserLocation.where(state: "state").pluck(:user_id)
si ce nâest pas vide, exĂ©cutez simplement ceci :
array_for_fix.each do |id|
Locations::UserLocationProcess.upsert(id)
end
[/quote]
Merci, jâai exĂ©cutĂ© ceci et cela a trouvĂ© quelque chose :
discourse(prod)=> array_for_fix = Locations::UserLocation.where(state: "state").pluck(:user_id)
=> [175, 12, 578, 1347, 1355, 1, 590]
discourse(prod)* array_for_fix.each do |id|
discourse(prod)* Locations::UserLocationProcess.upsert(id)
discourse(prod)=> end
=> [175, 12, 578, 1347, 1355, 1, 590]
Ensuite, jâai rĂ©exĂ©cutĂ© la premiĂšre commande et elle a toujours trouvĂ© 590, qui nâa pas non plus disparu lorsque jâai exĂ©cutĂ© la deuxiĂšme commande :
discourse(prod)=> array_for_fix = Locations::UserLocation.where(state: "state").pluck(:user_id)
=> [590]
discourse(prod)* array_for_fix.each do |id|
discourse(prod)* Locations::UserLocationProcess.upsert(id)
discourse(prod)=> end
=> [590]
Que puis-je faire ?
merefield
(Robert)
Janvier 31, 2026, 2:30
1211
Ravi dâannoncer que @ç„ćäŒ et @nathank se sont portĂ©s volontaires pour sponsoriser le travail de dĂ©finition de la localisation de lâutilisateur via lâIP
Ce travail sera expérimental pendant un certain temps, mais je suis également ravi de vous informer que la Pull Request (PR) est déjà disponible ici :
main â automated_ip_based_user_location_determination
opened 02:16PM - 31 Jan 26 UTC
## IPâbased User Location (MaxMind â GeoNames)
### What this adds
- Auto⊠matically determines a userâs location from their IP after post creation.
- Uses **MaxMind (DiscourseIpInfo)** for identity + GeoNames for canonical lat/lon.
- Stores exactly **one granularity level** per user (`country` / `province` / `city`) in `UserCustomField`
`geo_location`.
- Ensures lat/lon match the chosen granularity (privacyâcorrect coordinates).
- Caches GeoNames lookups by `geoname_id` (no extra gems; uses `FinalDestination::HTTP`).
---
## Prerequisites (official accounts)
You must have valid accounts and credentials from:
- **MaxMind GeoLite2**
Sign up and obtain an Account ID + License Key:
https://www.maxmind.com/en/geolite2/signup
- **GeoNames**
Create a username for the GeoNames API and **enable Web Services** in your GeoNames account settings:
https://www.geonames.org/login
---
## Required Configuration
**Env vars (MaxMind)**
- `DISCOURSE_MAXMIND_ACCOUNT_ID`
- `DISCOURSE_MAXMIND_LICENSE_KEY`
**Site settings**
- `location_geonames_username` (GeoNames username)
**Dev note (MaxMind DBs)**
- In development, ensure the MaxMind DBs are downloaded:
DISCOURSE_MAXMIND_ACCOUNT_ID=... DISCOURSE_MAXMIND_LICENSE_KEY=... bundle exec rake maxminddb:get
Restart web/sidekiq afterward so `DiscourseIpInfo` reloads the DBs.
---
## Settings
| Setting | Default | Description |
|---|---:|---|
| `location_ip_granularity` | `city` | Controls stored level: `country`, `province` (admin1), or `city`. |
| `location_geonames_username` | `""` | GeoNames username for `getJSON` requests. Acts as a feature flag
(blank => skip). |
| `location_ip_lookup_cooldown_days` | `1` | Perâuser cooldown between IP lookups (0 disables cooldown). |
| `locations_skip_ip_based_location_update_if_existing` | `true` | Skip IP lookup when existing
`geo_location` already has **lat + lon**. |
| `location_ip_auto_lookup_enabled` | `false` | Autoâenqueue IP lookups on post creation. Rake task still
works when off. |
---
## Flow
- `post_created` â enqueue `Jobs::Locations::IpLocationLookup` with user ID + IP.
- Job:
- Guards: plugin enabled, users map enabled, GeoNames username present, MaxMind env vars present, cooldown
OK, and optional âexisting locationâ check.
- Uses `DiscourseIpInfo.get(ip)` to get `geoname_ids`.
- Resolves GeoNames IDs, picks feature by granularity, builds `geo_location`.
- Saves `geo_location` to user custom field + updates `locations_user` table.
---
## Job + Hook
**Hook**
- `post_created` now enqueues `Jobs::Locations::IpLocationLookup`
- In development, IP is overridden to a fixed test IP (`2.139.231.7`) to ensure resolvable data.
**Job**
- `Jobs::Locations::IpLocationLookup` (new, in `app/jobs/regular/locations/ip_location_lookup.rb`)
- Logs key steps, skips when prerequisites are missing.
- Writes `geo_location` only when successfully built.
---
## GeoNames Helpers
New modules in `lib/locations/`:
- `GeoNamesClient`
- Calls `https://secure.geonames.org/getJSON` via `FinalDestination::HTTP`.
- Normalizes `geoname_id`, `fcl`, `fcode`, `lat`, `lon`, etc.
- Caches only successful lookups (avoids caching nil).
- `GeoNamesGranularityPicker`
- Selects best `PCLI` / `ADM1` / `PPL*` by desired granularity.
- `GeoLocationBuilder`
- Builds `geo_location` hash with correct `lat/lon`, `state`/`city` based on granularity.
---
## Rake Task
New rake task in `lib/tasks/locations.rake`:
**Task**
rake locations:enqueue_user_ip_location_lookups[username_pattern,pattern_type,delay]
**Behavior**
- Iterates users and enqueues the IP lookup job using `user.ip_address`.
- Progress is based on **matched population** (not total users).
- Skips enqueue when IP is blank.
**Options**
- `username_pattern` (optional): filter users by username.
- `pattern_type`: `string` (default substring match) or `regex`.
- `delay`: seconds between enqueues (float, default `0`).
**Help**
rake locations:enqueue_user_ip_location_lookups:help
Ce nâest pas une simple recherche, nous faisons plus que cela - cela vous permettra de dĂ©finir une granularitĂ© spĂ©cifique (par exemple, la ville) pour toutes les localisations dĂ©terminĂ©es automatiquement afin de protĂ©ger la vie privĂ©e des utilisateurs tout en augmentant la confiance de la communautĂ©.
(Oui, il y aura quelques problĂšmes avec les VPN et je crains que nous ne puissions pas facilement les surmonter).
Une fois que je serai satisfait que cela fonctionne suffisamment bien, je le fusionnerai.
Il est de toute façon derriÚre un indicateur de fonctionnalité (feature flag ).
Je vous tiendrai au courant, mais ce sont des moments passionnants, câest lâun des meilleurs ajouts Ă Locations que nous ayons eus depuis un moment.
Merci encore Ă @ @ç„ćäŒ et @nathank !!
Et oui, il y aura aussi une tĂąche rake pour faire cela pour tous les utilisateurs existantsâŠ
12 « J'aime »
Canapin
(Coin-coin le Canapin)
Janvier 31, 2026, 6:59
1212
Est-il possible dâafficher des notifications sur le backend de Discourse via un plugin, pour des cas comme celui-ci ?
Jâaurais facilement pu manquer votre publication
1 « J'aime »