|||
| — | — | — |
| |Résumé |Header Locale Selector ajoute un sélecteur de langue à l’en-tête du site. |
|:eyeglasses:|Aperçu |Aperçu sur theme-creator.discourse.org |
|:hammer_and_wrench:|Lien vers le dépôt |https://github.com/Ahmedgagan/header-locale-selector|
|:open_book:|Nouveau sur les thèmes Discourse ? |Guide pour débutants sur l’utilisation des thèmes Discourse |
Installer ce composant de thème
Ce composant de thème ajoute une liste déroulante des langues disponibles à l’en-tête du site. Il sera très utile pour les utilisateurs qui ne connaissent pas la langue par défaut du site.
Remarque : Cette fonctionnalité n’est disponible que pour les utilisateurs connectés.
Sponsor
Un merci spécial à @Richard_Millington pour le parrainage de ce composant.
13 « J'aime »
khenmu
(John Sweeney)
Octobre 3, 2022, 7:55
2
Rendre cela plus visible et inclure des drapeaux pourrait vraiment aider les gens sur les forums multilingues.
Excellent ajout à l’écosystème.
5 « J'aime »
Heliosurge
(Dan DeMontmorency)
Janvier 22, 2023, 7:26
6
C’est une fonctionnalité incroyable et fantastique ! Je recommande que l’équipe envisage d’ajouter ce composant, au minimum, comme un composant de thème préinstallé dans le cœur !
Merci beaucoup de l’avoir publié !
2 « J'aime »
Heliosurge
(Dan DeMontmorency)
Janvier 22, 2023, 7:31
7
J’ai une petite demande de fonctionnalité.
Serait-il possible d’ajuster le lien déroulant sur mobile ?
Si j’active le plugin de chat, cela va devenir très encombré. Peut-être même le rendre configurable pour utiliser des drapeaux sur ordinateur avec le mobile utilisant les 2 lettres, similaire à ce qui était fait plus tôt avec Windows ? Ça fait un bail. lol
Bien que la mise à l’échelle pourrait fonctionner pour être similaire en taille à la loupe de recherche.
Heliosurge
(Dan DeMontmorency)
Février 11, 2023, 10:16
8
Just some feedback from one of our members.
Great component
the selection of languages with the flags is cool, unfortunately contains some errors. Croatia has not received a flag.
Catalonia is a part of Spain.
Also can you share some code to reduce flag size on Mobile?
Heliosurge
(Dan DeMontmorency)
Mars 16, 2023, 5:13
9
Serait-il possible d’avoir une option pour utiliser le code du pays au lieu des drapeaux ? Similaire au langage du clavier sous Windows.
ie en es etc.. Le drapeau est énorme sur mobile. Ou une option pour réduire la taille du drapeau.
Même un remplacement CSS serait utile. Merci
1 « J'aime »
volanar
(Volanar)
Juillet 13, 2023, 3:59
10
Oui, ce commutateur doit être modifié pour correspondre au style général du discours. Il est terrible maintenant
1 « J'aime »
Canapin
(Coin-coin le Canapin)
Juillet 18, 2023, 12:50
11
Captures d’écran de l’apparence actuelle à titre de référence :
Bureau :
Mobile :
volanar
(Volanar)
Juillet 29, 2023, 12:40
12
Ce composant ne fonctionne pas pour moi. Y a-t-il autre chose à faire que de l’allumer et de sélectionner un modèle ?
Canapin
(Coin-coin le Canapin)
Juillet 31, 2023, 12:37
13
Il a besoin au moins d’une refonte partielle. Si quelqu’un veut contribuer et envoyer des PR pour corriger diverses choses, c’est le bienvenu
1 « J'aime »
dax
(Daniela)
Août 4, 2023, 11:06
14
Marqué comme #cassé pour l’instant
volanar
(Volanar)
Novembre 5, 2023, 1:23
15
Le composant est cassé, mais marqué comme compatible avec la dernière version
committed 07:02PM - 22 Aug 23 UTC
@volanar Ce n’est pas le même composant.
1 « J'aime »
Je retire le tag broken .
Pour commencer, le composant n’a jamais été cassé !
Il y a eu un malentendu concernant un autre composant de thème Discourse que Volanar a signalé comme cassé.
J’ai testé le composant, qui fonctionne toujours sur la dernière version de Discourse.
Cependant, il nécessite toujours quelques mises à jour pour le moderniser, résoudre une dépréciation et corriger des problèmes mineurs afin qu’il fonctionne bien sur la dernière version de Discourse.
Je suis allé de l’avant et j’ai fait une PR (sponsorisée par @Richard_Millington )
main ← Arkshine:refactor-modernize
opened 09:17PM - 18 Apr 24 UTC
This PR modernizes the components:
* Adds missing lint config files.
* Adds … basic acceptance tests
* Note: Is there a better way to check if a locale has been changed?
* Resolves `addToHeaderIcons` deprecation using the new `headerIcons` API.
* Pins theme component 3.3.0.beta1-dev.
* Fixes a missing Croatia flag image.
* Adjusts CSS (RTL friendly)
* Added a margin
* Adjusted icon size
* Fixed selector (and image height)
Desktop Before:

Desktop After:

Mobile Before/After:

https://github.com/Ahmedgagan/header-locale-selector/assets/360640/d2b0fa74-5f33-4d1a-a0fc-4e560b9e87b4
6 « J'aime »
La PR a été fusionnée ; merci, Ahmed.
4 « J'aime »
comment utiliser 2 ou 3 langues et supprimer les autres ?
au fait, j’ai optimisé le code pour locale-selector.js :
import Component from "@ember/component";
import { action } from "@ember/object";
import { inject as service } from "@ember/service";
import { ajax } from "discourse/lib/ajax";
import { userPath } from "discourse/lib/url";
import { isTesting } from "discourse-common/config/environment";
export default class LocaleSelector extends Component {
@service currentUser;
get availableLocales() {
// Cache filtered locales for performance optimization
if (!this._filteredLocales) {
const allLocales = JSON.parse(this.siteSettings.available_locales);
this._filteredLocales = allLocales.filter(locale => ['en', 'ar'].includes(locale));
}
return this._filteredLocales;
}
@action
onChangeLocale(value) {
this.set("currentUser.locale", value);
ajax(userPath(`${this.currentUser.username_lower}.json`), {
data: { locale: this.currentUser.locale },
type: "PUT",
}).then(() => {
if (!isTesting()) {
location.reload();
}
});
}
defaultItem() {
const currentUserLocale = document.documentElement
.getAttribute("lang")
?.replaceAll("-", "_");
return (
this.content.find((val) => val.value === currentUserLocale) ||
this.content.find((val) => val.value === this.siteSettings.default_locale)
);
}
}
après l’avoir testé, Discourse reste figé
une idée ?
available_locales a cette structure :
[
{
name: "English (US)",
value: "en"
},
...
]
Donc dans votre code, vous devrez utiliser locale.value.
@Ahmed_Gagan Il semble qu’il y ait un nouveau problème avec ce composant de thème :
Here is what is shows in /logs:
Discourse AI: Errors during bulk classification: Failed to classify 98 posts (example ids: 1859, 1860, 2012, 1976, 1977) : ArgumentError : address cannot be nil or empty 9:06 pm 137 MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) could not be found: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb 9:06 pm 137 MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) could not be found: No such file or d…
nat
(Natalie T)
Novembre 4, 2025, 11:04
24
Juste une note ici que ce composant de thème n’est plus nécessaire et est pris en charge par le cœur dans les paramètres du site listés ci-dessus. (Docs )