Header-Sprachauswahl

|||
| — | — | — |
| :information_source: |Zusammenfassung|Header Locale Selector fügt dem Website-Header eine Sprachauswahl für die Benutzer hinzu.|
|:eyeglasses:|Vorschau|Vorschau auf theme-creator.discourse.org |\n|:hammer_and_wrench:|Repository-Link|https://github.com/Ahmedgagan/header-locale-selector|\n|:open_book:|**Neu bei Discourse Themes?**|Anfängerleitfaden zur Verwendung von Discourse Themes |\n\n\nDiese Theme-Komponente installieren\n\n\nDiese Theme-Komponente fügt einen Dropdown für verfügbare Sprachen zum Website-Header hinzu. Dies ist sehr hilfreich für Benutzer, die mit der Standardsprache der Website nicht vertraut sind.\n\n\u003e Hinweis: Diese Funktion ist nur für angemeldete Benutzer verfügbar.\n\n

\n\n### Sponsor\nEin besonderer Dank geht an @Richard_Millington für das Sponsoring dieser Komponente.

13 „Gefällt mir“

Dies stärker hervorzuheben und Flaggen einzubeziehen, könnte Leuten in mehrsprachigen Foren wirklich helfen.

Großartige Ergänzung für das Ökosystem. :+1:

5 „Gefällt mir“

Dies ist eine erstaunliche fantastische Funktion! Es ist meine Empfehlung, dass das Team in Erwägung ziehen sollte, diese Komponente minimal als vorinstallierte Theme-Komponente im Kern hinzuzufügen!

Vielen Dank für die Veröffentlichung!
:vulcan_salute::star_struck::+1:

2 „Gefällt mir“

Ich habe eine kleine Funktionsanfrage.

Wäre es möglich, dass sich der Dropdown-Link auch auf Mobilgeräten anpassen lässt?

Wenn ich das Chat-Plugin aktiviere, wird es sehr voll. Vielleicht könnte man es sogar so konfigurieren, dass auf dem Desktop Flaggen verwendet werden und auf Mobilgeräten die 2 Buchstaben verwendet werden, ähnlich wie früher bei Windows? Ist schon eine Weile her. lol

Obwohl die Skalierung ähnlich groß wie die Lupe für die Suche sein könnte.

Nur ein Feedback von einem unserer Mitglieder.

Tolles Komponenten

Die Auswahl der Sprachen mit den Flaggen ist cool, leider enthält sie einige Fehler. Kroatien hat keine Flagge erhalten.
Katalonien ist ein Teil von Spanien.

Können Sie auch Code teilen, um die Flaggen-Größe auf Mobilgeräten zu reduzieren?

Wäre es möglich, eine Option zu haben, den Ländercode anstelle der Flaggen zu verwenden? Ähnlich wie bei der Tastatursprache unter Windows.\n\nie en es etc.. Die Flagge ist auf Mobilgeräten riesig. Oder eine Option, die Flagge zu verkleinern.\n\nSelbst ein CSS-Override wäre praktisch. Danke

1 „Gefällt mir“

Ja, dieser Schalter muss dem allgemeinen Diskursstil angepasst werden. Er ist jetzt schrecklich.

1 „Gefällt mir“

Screenshots des aktuellen Erscheinungsbilds als Referenz:

Desktop:

Mobil:

Diese Komponente funktioniert bei mir nicht. Muss ich außer dem Einschalten und der Auswahl einer Vorlage noch etwas tun?

Es braucht mindestens eine Teilüberarbeitung. Wenn jemand beitragen und PRs zur Behebung verschiedener Probleme senden möchte, ist das willkommen :slight_smile:

1 „Gefällt mir“

Markiert als broken für jetzt

Die Komponente ist defekt, aber als kompatibel mit der neuesten Version markiert

@volanar Das ist nicht dieselbe Komponente.

1 „Gefällt mir“

Ich entferne den Tag broken.

Zunächst einmal war die Komponente nie kaputt!
Es gab ein Missverständnis bezüglich einer anderen Discourse-Themenkomponente, die Volanar als kaputt gemeldet hatte.

Ich habe die Komponente getestet, die immer noch mit der neuesten Discourse-Version funktioniert.
Sie erfordert jedoch immer noch einige Updates, um sie zu modernisieren, eine Veralterung zu beheben und kleinere Probleme zu beheben, damit sie mit der neuesten Discourse-Version gut funktioniert.

Ich habe diesbezüglich eine PR erstellt (gesponsert von @Richard_Millington) :+1:

6 „Gefällt mir“

Der PR wurde zusammengeführt; danke, Ahmed. :+1:

4 „Gefällt mir“

Wie verwende ich 2 oder 3 Sprachen und entferne andere Sprachen?
Übrigens habe ich den Code für locale-selector.js optimiert:

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)
    );
  }
}

Nach dem Testen bleibt Discourse eingefroren.
Irgendwelche Ideen?

available_locales hat diese Struktur:

[
  {
    name: "English (US)",
    value: "en"
  },
  ...
]

In Ihrem Code müssen Sie also locale.value verwenden. :+1:

@Ahmed_Gagan Es scheint ein neues Problem mit dieser Theme-Komponente zu geben:

Nur eine Anmerkung hierzu: Diese Theme-Komponente wird nicht mehr benötigt und wird vom Kern in den oben genannten Website-Einstellungen unterstützt. (Dokumentation)