The following interpolation key is invalid: 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.
Alright thanks for the info, for now I am using CSS to put the site name. Was just having a problem underlining it in the welcome text.
For some reason only %site_name works for annoymous visitors.
I would like to do:
Welcome, %{preferred_display_name}, to %{site_name}!
But its not possible to do this, its making underlining/CSS adjustments difficult in this area.
That makes sense. They didnât log in, so we donât know who they are. There is no name for them in the database.
Itâs like when someone you donât know rings your doorbell; you wonât be able to greet them by name until they introduce themselves.
Yes, but I would like to use that %site_name for logged in users as well ![]()
Thanks for reporting it! Looks like I over-promised which variables were availableâŠIâve got an update coming that will correct this.
So we still canât add %{site_name} if user is logged in?
Hmm⊠it certainly looks that way:
I suppose you might be able to display the site name with a Theme Component by making a request to
/about.json and getting the site title (I looked at the site service and couldnât find anything about the site title).
The siteSetting service might work to get the value of the title site setting
I looked into this, the blocker here is not accessing the value of title. Itâs that the backend validates translations by extracting valid interpolation keys from the default locale strings.
So when %{site_name} is not in the default string, it is rejected as an âinvalid interpolation keyâ.
I donât know what @NateDhaliwalâs idea is. I only wanted to point out an alternative to an additional request to /about.json.
I think a custom component that copies the welcome banner but provides the site_name key for all texts would be the way to go.
Or a PR that adds site_name as available key to the texts for logged in users in core
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,
});
}




