이 테마 컴포넌트는 사이트 헤더에 사용 가능한 언어 드롭다운 메뉴를 추가합니다. 사이트의 기본 언어에 익숙하지 않은 사용자에게 매우 유용합니다.
참고: 이 기능은 로그인한 사용자에게만 제공됩니다.
스폰서
이 컴포넌트의 스폰서를 맡아주신 @Richard_Millington님께 특별한 감사의 말씀을 드립니다.
13개의 좋아요
khenmu
(John Sweeney)
10월 3, 2022, 7:55오전
2
이 기능을 더 눈에 띄게 만들고 국기 표시를 포함하면 다국어 포럼의 사용자에게 큰 도움이 될 것입니다.
생태계에 훌륭한 추가 기능입니다.
5개의 좋아요
Heliosurge
(Dan DeMontmorency)
1월 22, 2023, 7:26오전
6
정말 놀랍고 멋진 기능입니다! 팀이 이 구성 요소를 코어에 최소한으로 사전 설치된 테마 구성 요소로 추가하는 것을 고려해 주시길 추천드립니다!
이렇게 출시해 주셔서 진심으로 감사합니다!
2개의 좋아요
Heliosurge
(Dan DeMontmorency)
1월 22, 2023, 7:31오후
7
작은 기능 요청이 있습니다.
모바일에서 드롭다운 링크를 조정할 수 있도록 하는 것이 가능할까요?
채팅 플러그인을 활성화하면 화면이 매우 혼잡해질 것입니다. 데스크톱에서는 플래그를 사용하고, 모바일에서는 이전에 wasvit에서 했던 것처럼 2글자 약어를 사용하도록 설정할 수도 있을까요? 오랜만이네요. ㅋㅋ
아니면, 검색용 확대경 아이콘과 비슷한 크기로 스케일링을 적용하는 것도 방법일 것 같습니다.
Heliosurge
(Dan DeMontmorency)
2월 11, 2023, 10:16오후
8
멤버 중 한 명으로부터 받은 간단한 피드백입니다.
훌륭한 컴포넌트네요.
국기 표시와 함께 언어를 선택할 수 있는 기능은 멋지지만, 불행히도 몇 가지 오류가 있습니다. 크로아티아에는 국기가 표시되지 않았고, 카탈로니아는 스페인의 일부입니다.
그리고 모바일에서 국기 크기를 줄이는 데 사용할 수 있는 코드를 공유해 주실 수 있나요?
Heliosurge
(Dan DeMontmorency)
3월 16, 2023, 5:13오후
9
국기 대신 국가 코드를 사용할 수 있는 옵션이 가능할까요? Windows의 키보드 언어 설정과 유사한 방식이죠.
예를 들어 en, es 같은 코드 말입니다. 모바일에서 국기가 너무 크게 표시됩니다. 또는 국기 크기를 줄일 수 있는 옵션도 있으면 좋겠습니다.
CSS 오버라이드만 지원해도 유용할 것 같습니다. 감사합니다.
1개의 좋아요
volanar
(Volanar)
7월 13, 2023, 3:59오후
10
네, 이 스위치는 토론의 일반적인 스타일에 맞게 수정해야 합니다. 지금은 너무 형편없어요.
1개의 좋아요
volanar
(Volanar)
7월 29, 2023, 12:40오후
12
이 컴포넌트가 제게 작동하지 않습니다. 켜서 템플릿을 선택하는 것 외에 다른 조치를 취해야 하나요?
Canapin
(Coin-coin le Canapin)
7월 31, 2023, 12:37오후
13
Volanar:
이 컴포넌트가 저에게는 작동하지 않습니다.
최소한 부분적인 재구성이 필요합니다. 여러 문제를 수정하기 위해 기여하고 PR을 보내고 싶으신 분이 계시다면 환영합니다
1개의 좋아요
volanar
(Volanar)
11월 5, 2023, 1:23오후
15
컴포넌트가 손상되었지만 최신 버전과 호환 가능하도록 표시되어 있습니다
committed 07:02PM - 22 Aug 23 UTC
@volanar 그건 같은 컴포넌트가 아니에요.
1개의 좋아요
broken 태그를 제거합니다.
우선, 이 컴포넌트는 처음부터 깨져 있지 않았습니다!
Volanar가 깨졌다고 보고한 다른 Discourse 테마 컴포넌트에 대한 오해가 있었습니다.
해당 컴포넌트를 테스트해 보았으며, 최신 Discourse 버전에서도 여전히 정상적으로 작동합니다.
다만, 최신 Discourse 버전에서 잘 작동할 수 있도록 현대화하고, 비권장(deprecation) 문제를 해결하며, 사소한 문제를 수정하는 업데이트가 여전히 필요합니다.
이에 따라 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 이 테마 컴포넌트에 새로운 문제가 있는 것 같습니다:
다음은 /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 directory …
nat
(Natalie T)
11월 4, 2025, 11:04오전
24
여기서 참고할 점으로, 이 테마 구성 요소는 더 이상 필요하지 않으며, 위에서 나열된 사이트 설정에서 코어에 의해 지원됩니다. (문서 )