You simply need to add a
config/locales/server.zh_CN.yml
file (and similar for any other locales you want to support) with the same English tokens but with language specific values and the plugin will use that instead of falling back to the English.
2개의 좋아요
1c7
(Cheng Zheng)
4월 29, 2018, 5:52오전
22
Thanks for helping! have a nice day!
3개의 좋아요
I was looking how to create a site setting that validates a username, but found there’s a username type to do this. Here the list of site setting types we have today:
email
username
integer
regex
string
list
enum
Also, you can do custom validations for your plugin settings, it accepts a validator field that expects a Ruby class. You use it like this.
plugins:
my_custom_username_validation:
default: 'system'
validator: 'UsernameSettingValidator'
You can check the UsernameSettingValidator class to see the interface of validators.
Cheers!
10개의 좋아요
Dev_Work
(Aleksandr)
12월 18, 2019, 7:52오전
24
동작하지 않음 (
<a id="forgot-password-link" class="forgot-password" href="{{Discourse.SiteSettings.myplugin_link_forgot_password}}" target="_blank">비밀번호를 잊으셨나요?</a>
settings.yml
plugins:
myplugin_enabled:
default: true
client: true
myplugin_link_forgot_password:
default: ''
client: true
업데이트:
동작함!!!
href="{{unbound siteSettings.myplugin_link_forgot_password}}"
Dev_Work
(Aleksandr)
12월 28, 2019, 12:20오후
25
텍스트 HTML을 어떻게 표시하나요?
{{unbound siteSettings.forum_text_for_admin}} 가 작동하지 않습니다.
수정:
*.hbs 파일에서 {{{unbound siteSettings.forum_text_for_admin}}} 로 작동합니다.
다시 말하지만, Computed Property를 사용하고 safe html로 포맷해야 합니다. 이건 EmberJS이지 바닐라 JavaScript가 아닙니다. 템플릿에 '코드’를 직접 넣을 수 없습니다. ember 가이드를 읽어보세요.
1개의 좋아요
bitmage
(Brandon Mason)
2월 28, 2025, 4:22오후
33
저의 settings.yml 파일에는 다음과 같은 내용이 있습니다:
plugins:
county_fence_enabled:
default: false
client: true
county_fence_latrine_category:
default: -1
client: true
이 설정은 제 /admin/plugins 페이지에 이렇게 표시됩니다:
왜 설정(Settings) 버튼이 없는지 이해가 되지 않습니다.
plugins 대신 플러그인 이름인 county_fence를 입력해야 한다고 생각합니다.
2개의 좋아요
bitmage
(Brandon Mason)
3월 4, 2025, 12:40오전
35
저도 그렇게 해보았지만, 차이가 없었습니다.
이 문서 (그리고 원 포스터의 설명)에서는 plugins 키를 사용합니다. 다른 곳에서는 말씀하신 대로 플러그인 이름을 사용하는 것을 보았습니다.
1개의 좋아요
@bitmage 실제로, 제가 원인을 알고 있을 것 같습니다.
plugin.rb 파일에 # name: County Fence라고 작성하셨나요?
그렇다면 이름은 디렉터리 이름과 동일해야 합니다.
플러그인 이름은 로케일에서 덮어쓸 수 있습니다:
다음과 같은 설정 형식을 가지고 있다고 가정해 보겠습니다:
county_fence:
county_fence_enabled: true
...
client.en.yml 파일에서는 다음과 같습니다:
en:
admin_js:
admin:
site_settings:
categories:
county_fence: "County Fence"
bitmage
(Brandon Mason)
3월 4, 2025, 3:21오전
37
기본값을 -1 대신 0으로 설정했더니 해당 항목이 표시되기 시작했습니다.
타입이 올바르게 감지되지 않았음을 알 수 있는 방법이 있을까요?
YamlLoader 가 파일을 로드합니다.
SiteSettingExtension calls setting() 이 YamlLoader에 의해 생성된 매개변수를 사용하여 호출됩니다.
…이어서 defaults.load_setting 이 호출되고, 나중에 type_supervisor.load_setting 이 호출됩니다.
type_supervisor.load_setting에 값이 직접 전달되지는 않지만, DefaultsProvider를 통해 초기화될 때 기본값이 전달되므로 기본값에 접근할 수 있습니다.
type_supervisor.load_setting은 get_data_type을 호출하고, 이는 parse_value_type() 을 호출합니다. 이 함수는 타입을 감지할 수 없는 경우 ArgumentError를 발생시켜야 합니다.
이 전체 시퀀스가 SiteSetting 모델의 load_settings 에 의해 호출된다고 생각하는데, 스택 어디에도 예외 처리를 찾지 못하고 있습니다. 하지만 서버 로그나 다른 어디에서도 오류 출력을 볼 수 없습니다.
설정 파싱이 실패했음을 알리는 사용자 피드백이나 오류 로그가 어떤 형태로든 있어야 할 것 같습니다.
제대로 이해했는지 모르겠지만, 설정의 기본값을 -1로 지정하면 “설정” 버튼이 표시되지 않는다는 말씀이신가요? 이 현상을 매번 재현할 수 있으신가요?
이상하네요. 설정에 문제가 있는 부분은 보이지 않는데, 파싱이 실패할 수 있는 방법이 무엇인지 잘 모르겠습니다.
bitmage
(Brandon Mason)
3월 4, 2025, 4:40오전
39
이제 작동하니까 -1로 다시 변경해도 계속 정상 작동합니다.
데이터베이스를 삭제하고 초기화했는데도 여전히 재현할 수 없네요.
1개의 좋아요
bitmage
(Brandon Mason)
3월 6, 2025, 4:40오후
40
안전을 위해 기본값인 0을 사용하여 플러그인을 라이브 사이트에 배포했습니다. 설정 버튼은 표시되는데:
버튼을 클릭해도 설정 항목이 목록에 표시되지 않습니다:
문제를 계속 조사하는 동안 플러그인을 비활성화할 것입니다.
bitmage
(Brandon Mason)
3월 6, 2025, 8:26오후
42
네, 개발 환경이든 프로덕션 환경이든, 플러그인 디렉터리 내의 폴더 이름이 county-fence와 일치하지 않아서 그런 것 같습니다. 그래서 설정이 표시되지 않았고, 다른 문제들도 발생할 수 있었을 것입니다.
도움 주셔서 감사합니다!
1개의 좋아요
저에게는 명확하지 않습니다. 제가 설치한 플러그인 중 대부분은 plugins:를 사용하지 않으며, 여기에는 공식 플러그인과 최신 플러그인(또한 스켈레톤 템플릿 )도 포함됩니다.
그 부분은 설정 필터링에 사용되는 것으로 생각했지만, 제가 틀렸을 수도 있습니다.
1개의 좋아요
오, 흥미롭네요! 죄송합니다.
말씀드리고 싶은 것은, 사실 그게 필요하지 않다는 점입니다.
plugins:를 사용해 제가 만든 플러그인의 수는 손에 꼽을 정도가 아니에요.
1개의 좋아요
bitmage
(Brandon Mason)
3월 15, 2025, 6:42오후
45
문서에 대해 추가 설명을 드리면 다음과 같습니다:
Site Settings 유형에 대한 전체 목록은 type_supervisor.rb 코드 에서 확인하실 수 있습니다. 해당 코드 바로 위에서는 Site Settings가 허용하는 유효한 자식 키(child keys)도 볼 수 있습니다.
이러한 옵션을 더 많이 사용하는 고급 예제는 discourse-welcome-link 테마 컴포넌트 에서 찾을 수 있습니다. 동일한 값은 플러그인 내부에서도 작동하지만, 파일 위치는 config/settings.yml이 됩니다.
3개의 좋아요
플러그인과 테마 컴포넌트 타입 간에는 차이가 있습니다.
표로 정리해 보았습니다. (경미한 오류나 그룹화 방식이 다를 수 있습니다.)
카테고리
기능
플러그인 문법
TC 문법
기본 타입
문자열
type: stringmin: ..max: ..regex: ..secret: true/false globalvalidator: class name
type: stringmin: ..max: .. - - - -
멀티라인 텍스트
type: stringtextarea: true
type: stringtextarea: true
정수
type: integermin: ..max: ..
type: integermin: ..max: ..
실수
type: floatmin: ..max: ..
type: floatmin: ..max: ..
불리언
type: bool
type: bool
시간
type: time
-
널
type: null
-
선택 타입
열거형 (드롭다운)
type: enumchoices: [option1, option2]enum: ..
type: enumchoices: [option1, option2]
카테고리
type: category
-
색상
type: color
-
그룹
type: group
-
이메일
type: email
-
사용자 이름
type: username
-
목록 타입
일반 목록
type: listallow_any: true/false
type: list
단순/컴팩트 목록
type: simple_list 또는type: listlist_type: compactlist_type: simple
type: listlist_type: compactlist_type: simple
카테고리 목록
type: category_list
type: listlist_type: category
그룹 목록
type: group_list
type: listlist_type: group
태그 목록
type: tag_list
type: listlist_type: tag
태그 그룹 목록
type: tag_group_list
-
URL 목록
type: url_list
-
호스트 목록
type: host_list
-
값 목록
type: value_list
-
이모지 목록
type: emoji_list
-
파일 타입
업로드
type: upload
type: upload
업로드된 이미지 목록
type: uploaded_image_list
-
파일 크기 제한
type: file_size_restrictionmin: ..max: ..
-
특수 타입
HTML (비권장)
type: html_deprecated
-
JSON 객체
비권장
비권장
객체
-
type: objects
5개의 좋아요