환영 메시지 %{site_name} 오류: 다음 보간 키가 유효하지 않습니다: site_name

다음 보간 키가 유효하지 않습니다: site_name

I think “Site_text” is not available. When I try to edit the text at /admin/customize/site_texts/js.welcome_banner.header.new_members?locale=en I can see that only the name is available.


I think site_name is only available for anonymous users. I guess the description needs an update.

네, 정보 감사합니다. 지금은 CSS를 사용해 사이트 이름을 표시하고 있습니다. 환영 문구에서 밑줄을 그는 것 때문에 문제가 있었거든요.

어떤 이유인지 모르겠지만, 익명 방문자의 경우 %site_name만 작동합니다.

다음과 같이 하고 싶습니다:

Welcome, %{preferred_display_name}, to %{site_name}!

하지만 이것이 불가능하며, 이 영역에서 밑줄/CSS 조정을 어렵게 만듭니다.

그럴 수 있죠. 로그인하지 않았으니, 누가 누군지 알 수 없어요. 데이터베이스에는 그들의 이름이 없으니까요.
이건 모르는 사람이 문을 두드릴 때와 비슷해요. 상대가 자기소개를 하기 전까지는 이름을 불러서 인사할 수 없잖아요.

네, 하지만 로그인한 사용자들도 %site_name을(를) 사용하길 원합니다 :smiley:

리포트해 주셔서 감사합니다! 사용 가능한 변수를 과장해서 설명한 것 같습니다… 이 문제를 수정하는 업데이트를 준비하고 있습니다.

그래서 사용자가 로그인되어 있으면 %{site_name}을(를) 추가할 수 없나요?

음… 분명히 그렇게 보입니다:


/about.json에 요청을 보내 사이트 제목을 가져오는 방식으로 테마 컴포넌트를 통해 사이트 이름을 표시할 수 있을 것 같습니다 (site 서비스를 살펴봤는데 사이트 제목에 대한 내용은 찾을 수 없었습니다).

siteSetting 서비스를 사용하면 title 사이트 설정의 값을 가져올 수 있을 것입니다.

이 부분을 조사해 보았는데, 여기서 막히는 부분은 title의 값에 접근하는 것이 아닙니다. 백엔드가 기본 로케일 문자열에서 유효한 보간(interpolation) 키를 추출하여 번역을 검증하기 때문이죠.

따라서 기본 문자열에 %{site_name}가 없으면 "유효하지 않은 보간 키"로 거부됩니다.

@NateDhaliwal의 아이디어가 무엇인지 잘 모르겠습니다. /about.json에 대한 추가 요청의 대안을 제시하고 싶었을 뿐입니다.

환영 배너를 복사하되, 모든 텍스트에 대해 site_name 키를 제공하는 커스텀 컴포넌트를 만드는 것이 최선의 방법이라고 생각합니다.
또는 코어에서 로그인한 사용자의 텍스트에 site_name를 사용 가능한 키로 추가하는 PR을 만드는 것도 방법입니다.

  get headerText() {
    if (!this.currentUser) {
      return i18n("welcome_banner.header.anonymous_members", {
        site_name: this.siteSettings.title,
      });
    }

    const isNewUser = !this.currentUser.previous_visit_at;
    const key = isNewUser
      ? "welcome_banner.header.new_members"
      : "welcome_banner.header.logged_in_members";

    return i18n(key, {
      preferred_display_name: sanitize(
        prioritizeNameFallback(this.currentUser.name, this.currentUser.username)
      ),
+     site_name: this.siteSettings.title,
    });
  }

@hipp0 이 문제를 제기해 주셔서 다시 한번 감사드립니다! site_name 변수가 모든 세 가지 헤더 필드에서 사용 가능하도록 하는 업데이트를 배포했습니다: