|||
| — | — | — |
| |Resumo |Header Locale Selector adiciona um seletor de idioma ao cabeçalho do site. |
|:eyeglasses:|Prévia |Prévia em theme-creator.discourse.org |
|:hammer_and_wrench:|Link do Repositório |https://github.com/Ahmedgagan/header-locale-selector|
|:open_book:|Novo no Discourse Themes? |Guia para iniciantes sobre como usar temas do Discourse |
Instalar este componente de tema
Este componente de tema adiciona um menu suspenso de idioma disponível ao cabeçalho do site. Será muito útil para usuários que não estão familiarizados com o idioma padrão do site.
Observação: Este recurso está disponível apenas para usuários logados.
Patrocinador
Agradecimentos especiais a @Richard_Millington por patrocinar este componente.
13 curtidas
khenmu
(John Sweeney)
Outubro 3, 2022, 7:55am
2
Tornar isso mais proeminente e incluir bandeiras poderia realmente ajudar as pessoas em fóruns multilíngues.
Ótima adição ao ecossistema.
5 curtidas
Heliosurge
(Dan DeMontmorency)
Janeiro 22, 2023, 7:26am
6
Esta é uma funcionalidade fantástica e incrível! É minha recomendação que a equipe considere adicionar este componente minimamente como um tema pré-instalado no core!
Muito obrigado por lançar isto!
2 curtidas
Heliosurge
(Dan DeMontmorency)
Janeiro 22, 2023, 7:31pm
7
Tenho uma pequena solicitação de recurso.
Seria possível que o link suspenso pudesse ser ajustado no celular?
Se eu habilitar o plugin de chat, ele ficará muito lotado. Talvez até tê-lo configurável para usar bandeiras no desktop com o celular usando as 2 letras, semelhante ao que o Windows usava anteriormente? Faz tempo. lol
Embora o dimensionamento possa funcionar para ser semelhante em tamanho ao ícone de lupa de pesquisa.
Heliosurge
(Dan DeMontmorency)
Fevereiro 11, 2023, 10:16pm
8
Apenas um feedback de um dos nossos membros.
Ótimo componente
A seleção de idiomas com as bandeiras é legal, infelizmente contém alguns erros. A Croácia não recebeu uma bandeira.
Catalunha é uma parte da Espanha.
Você também pode compartilhar algum código para reduzir o tamanho da bandeira no celular?
Heliosurge
(Dan DeMontmorency)
Março 16, 2023, 5:13pm
9
Seria possível ter uma opção para usar o código do país em vez das bandeiras? Semelhante ao idioma do teclado no Windows.\n\nie en es etc.. A bandeira é enorme no celular. Ou uma opção para diminuir o tamanho da bandeira.\n\nAté mesmo um override de CSS seria útil. Obrigado
1 curtida
volanar
(Volanar)
Julho 13, 2023, 3:59pm
10
Sim, esta opção precisa ser modificada para corresponder ao estilo geral do discurso. Ele está terrível agora
1 curtida
Canapin
(Coin-coin le Canapin)
Julho 18, 2023, 12:50pm
11
Capturas de tela da aparência atual como referência:
Desktop:
Mobile:
volanar
(Volanar)
Julho 29, 2023, 12:40pm
12
Este componente não funciona para mim. Há algo mais a fazer além de ligá-lo e selecionar um modelo?
Canapin
(Coin-coin le Canapin)
Julho 31, 2023, 12:37pm
13
Ele precisa de pelo menos um retrabalho parcial. Se alguém quiser contribuir e enviar PRs para corrigir várias coisas, será bem-vindo
1 curtida
dax
(Daniela)
Agosto 4, 2023, 11:06am
14
Marcado como broken por enquanto
volanar
(Volanar)
Novembro 5, 2023, 1:23pm
15
O componente está quebrado, mas marcado como compatível com a versão mais recente
committed 07:02PM - 22 Aug 23 UTC
@volanar Esse não é o mesmo componente.
1 curtida
Estou removendo a tag broken .
Para começar, o componente nunca esteve quebrado!
Houve um mal-entendido sobre outro componente de tema do Discourse que Volanar relatou como quebrado.
Testei o componente, que ainda funciona na versão mais recente do Discourse.
No entanto, ele ainda requer algumas atualizações para modernizá-lo, resolver uma depreciação e corrigir pequenos problemas para que funcione bem na versão mais recente do Discourse.
Fui em frente e fiz um PR (patrocinado por @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 curtidas
O PR foi mesclado; obrigado, Ahmed.
4 curtidas
como usar 2 ou 3 idiomas e remover outros idiomas?
a propósito, otimizei o código para 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)
);
}
}
depois de testar, o discourse continua travando
alguma ideia?
available_locales tem esta estrutura:
[
{
name: "English (US)",
value: "en"
},
...
]
Portanto, em seu código, você precisará usar locale.value.
@Ahmed_Gagan Parece que há um novo problema com este componente de tema:
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)
Novembro 4, 2025, 11:04am
24
Apenas uma observação aqui que este componente de tema não é mais necessário e é suportado pelo núcleo nas configurações do site listadas acima. (Docs )