Установить этот компонент темы
Этот компонент темы добавляет в заголовок сайта выпадающий список доступных языков. Это будет очень полезно для пользователей, которые не знакомы с языком сайта по умолчанию.
Примечание: эта функция доступна только для авторизованных пользователей.
Спонсор
Особая благодарность @Richard_Millington за спонсирование этого компонента.
13 лайков
khenmu
(John Sweeney)
03.Октябрь.2022 07:55:07
2
Сделать это более заметным и добавить флаги действительно могло бы помочь пользователям на многоязычных форумах.
Отличное дополнение к экосистеме.
5 лайков
Heliosurge
(Dan DeMontmorency)
22.Январь.2023 07:26:28
6
Это потрясающая и замечательная функция! Я рекомендую команде рассмотреть возможность включения этого компонента как минимум в качестве предустановленного тематического компонента в ядре!
Огромное спасибо за выпуск этой функции!
2 лайка
Heliosurge
(Dan DeMontmorency)
22.Январь.2023 19:31:25
7
У меня есть небольшая просьба по улучшению.
Возможно ли сделать выпадающую ссылку адаптируемой для мобильных устройств?
Если я включу плагин чата, интерфейс станет очень перегруженным. Возможно, стоит сделать эту настройку конфигурируемой: на рабочем столе использовать флаги, а на мобильных устройствах — двухбуквенные обозначения, как это было в ранних версиях Windows (wasvit). Прошло уже много времени, ха-ха.
Хотя, возможно, масштабирование сработает, чтобы размер был сопоставим с иконкой лупы поиска.
Heliosurge
(Dan DeMontmorency)
11.Февраль.2023 22:16:55
8
Вот немного отзывов от одного из участников.
Отличный компонент!
Выбор языков с флагами — это круто, но, к сожалению, есть некоторые ошибки. У Хорватии нет флага.
Каталония является частью Испании.
Также, не могли бы вы поделиться кодом для уменьшения размера флагов на мобильных устройствах?
Heliosurge
(Dan DeMontmorency)
16.Март.2023 17:13:18
9
Возможно ли добавить опцию использования кода страны вместо флагов? Аналогично выбору языка клавиатуры в Windows.
Например: en, es и т. д. Флаг на мобильных устройствах занимает слишком много места. Или хотя бы опция уменьшения размера флага.
Даже возможность переопределения через CSS была бы полезна. Спасибо.
1 лайк
volanar
(Volanar)
13.Июль.2023 15:59:56
10
Да, этот переключатель нужно изменить, чтобы он соответствовал общему стилю речи. Сейчас он ужасен.
1 лайк
Canapin
(Coin-coin le Canapin)
18.Июль.2023 12:50:28
11
Скриншоты текущего вида для справки:
Десктоп:
Мобильная версия:
volanar
(Volanar)
29.Июль.2023 12:40:50
12
Этот компонент не работает у меня. Есть ли что-то ещё, что нужно сделать, кроме включения и выбора шаблона?
Canapin
(Coin-coin le Canapin)
31.Июль.2023 12:37:37
13
Volanar, пост:12, тема:240697:
Этот компонент у меня не работает.
Его нужно хотя бы частично переделать. Если кто-то захочет внести вклад и отправить PR для исправления различных проблем, это будет с радостью принято
1 лайк
dax
(Daniela)
04.Август.2023 11:06:11
14
Временно помечено как broken
volanar
(Volanar)
05.Ноябрь.2023 13:23:51
15
Компонент сломан, но помечен как совместимый с последней версией
committed 07:02PM - 22 Aug 23 UTC
@volanar Это не тот же самый компонент.
1 лайк
Я удаляю тег broken .
Во-первых, компонент никогда не был сломан!
Возникло недопонимание относительно другого компонента темы Discourse, о котором Volanar сообщил как о неработающем.
Я протестировал компонент, и он продолжает работать в последней версии Discourse.
Однако его всё же необходимо обновить для модернизации, устранения устаревания и исправления мелких проблем, чтобы он корректно функционировал в последней версии Discourse.
Я уже создал запрос на слияние (PR) (спонсор: @Richard_Millington )
main ← Arkshine:refactor-modernize
merged 07:17AM - 03 Jul 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 лайков
PR принят в основную ветку; спасибо, Ахмед.
4 лайка
Как использовать 2 или 3 языка и убрать остальные?
Кстати, я оптимизировал код для 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() {
// Кэшируем отфильтрованные локали для оптимизации производительности
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)
);
}
}
После тестирования Discourse продолжает зависать.
Есть какие-то идеи?
available_locales имеет следующую структуру:
[
{
name: "English (US)",
value: "en"
},
...
]
Поэтому в вашем коде нужно использовать locale.value.
@Ahmed_Gagan Похоже, возникла новая проблема с этим компонентом темы:
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)
04.Ноябрь.2025 11:04:59
24
Просто заметка: этот компонент темы больше не нужен, так как он поддерживается ядром в указанных выше настройках сайта. (Документация )