Skip to content

🐛 Fixed translations for Inbox Links button#26839

Merged
9larsons merged 1 commit intomainfrom
properly-translate-inbox-link-button
Mar 17, 2026
Merged

🐛 Fixed translations for Inbox Links button#26839
9larsons merged 1 commit intomainfrom
properly-translate-inbox-link-button

Conversation

@EvanHahn
Copy link
Contributor

@EvanHahn EvanHahn commented Mar 16, 2026

closes https://linear.app/ghost/issue/ONC-1548
ref #26308

Before After
Before After

We always showed English text on the Inbox Links button. Now we translate it properly.

This happened because we computed the text before changing the language and never updated it. Now we compute it at the last minute, which fixes the problem.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 16, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 2a1beda0-ad8a-49e9-8c74-9c88901237cb

📥 Commits

Reviewing files that changed from the base of the PR and between bea537d and 18bf7b4.

📒 Files selected for processing (2)
  • apps/portal/package.json
  • apps/portal/src/components/common/inbox-link-button.js

Walkthrough

The Portal package version was bumped from 2.66.3 to 2.66.4. The inbox link button component was refactored: a new Provider type was introduced, the static PROVIDER_LABELS lookup was replaced by a getProviderLabel(provider) switch-based function with a default fallback, JSDoc was updated to reference Provider, and label rendering now calls getProviderLabel. Icon rendering logic was unchanged.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: fixing translations for the Inbox Links button, which aligns with the core fix of computing button text after language changes.
Description check ✅ Passed The description is directly related to the changeset, explaining the root cause (text computed before language change) and the fix (compute at runtime).
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch properly-translate-inbox-link-button
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

closes https://linear.app/ghost/issue/ONC-1548

We always showed English text on the Inbox Links button. Now we
translate it properly.

This happened because we computed the text before changing the language
and never updated it. Now we compute it at the last minute, which fixes
the problem.
@EvanHahn EvanHahn force-pushed the properly-translate-inbox-link-button branch from 11857d5 to 18bf7b4 Compare March 16, 2026 22:24
@EvanHahn

This comment was marked as outdated.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 16, 2026

✅ Actions performed

Full review triggered.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/portal/src/components/common/inbox-link-button.js`:
- Around line 51-75: The dev-mailpit case in getProviderLabel returns a
hardcoded English string; change that branch to call the translation function
like the other cases (use t('Open Mailpit (development only)')) so the Mailpit
label is localized; locate the getProviderLabel function and update the
'dev-mailpit' case to return t(...) instead of a plain string.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: a82d78a1-b14a-4d3f-8441-126e31825d84

📥 Commits

Reviewing files that changed from the base of the PR and between bea537d and 18bf7b4.

📒 Files selected for processing (2)
  • apps/portal/package.json
  • apps/portal/src/components/common/inbox-link-button.js

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes a Portal i18n timing issue where the “Inbox Links” button label was computed before the app switched languages, causing it to remain in English even when Portal renders in a different locale.

Changes:

  • Replace module-initialized provider label map with a runtime getProviderLabel() lookup so translations are evaluated after i18n.changeLanguage(...).
  • Add a Provider JSDoc typedef and reuse it in component prop docs.
  • Bump @tryghost/portal version from 2.66.32.66.4.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
apps/portal/src/components/common/inbox-link-button.js Lazily computes provider button labels via t() at render-time to reflect the active language.
apps/portal/package.json Patch version bump for Portal release.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +51 to +55
const getProviderLabel = (provider) => {
switch (provider) {
case 'gmail':
return t('Open Gmail');
case 'outlook':
Copy link
Contributor

@9larsons 9larsons left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch 👍.

@9larsons 9larsons merged commit 9dbd94c into main Mar 17, 2026
32 checks passed
@9larsons 9larsons deleted the properly-translate-inbox-link-button branch March 17, 2026 12:19
mwgustin pushed a commit to mwgustin/homeops that referenced this pull request Mar 22, 2026
…#120)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[ghcr.io/sredevopsorg/ghost-on-kubernetes](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes)
| minor | `v6.19.3` → `v6.22.1` |

---

### Release Notes

<details>
<summary>sredevopsorg/ghost-on-kubernetes
(ghcr.io/sredevopsorg/ghost-on-kubernetes)</summary>

###
[`v6.22.1`](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/releases/tag/v6.22.1)

[Compare
Source](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/compare/v6.22.0...v6.22.1)

#### What's Changed

- Update event types for GHOST\_VERSION setup by
[@&#8203;ngeorger](https://redirect.github.com/ngeorger) in
[#&#8203;676](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/676)
- Add Trivy vulnerability scanner workflow by
[@&#8203;ngeorger](https://redirect.github.com/ngeorger) in
[#&#8203;677](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/677)
- chore(deps): update actions/checkout action to v6 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;679](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/679)
- chore(deps): update aquasecurity/trivy-action action to v0.35.0 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;678](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/678)
- chore(deps): update node.js to
[`2365189`](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/commit/2365189)
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;682](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/682)
- chore(deps): update step-security/harden-runner action to v2.16.0 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;681](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/681)
- chore(deps): update github/codeql-action action to v4.34.1 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;680](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/680)

**Full Changelog**:
<sredevopsorg/ghost-on-kubernetes@v6.22.0...v6.22.1>

#### From upstream
[@&#8203;tryghost](https://redirect.github.com/tryghost)

🔒 Added file type validation and content-type control for file uploads
([TryGhost/Ghost#26869](https://redirect.github.com/TryGhost/Ghost/pull/26869))
- Princi Vershwal
🎨 Updated Source to v1.5.2 - Ghost CI
🎨 Updated Casper to v5.10.1 - Ghost CI
🎨 Updated private page access and signup flow
([TryGhost/Ghost#26762](https://redirect.github.com/TryGhost/Ghost/pull/26762))
- John O'Nolan
🎨 Changed email verification error messages to be configurable via
hostSettings
([TryGhost/Ghost#26631](https://redirect.github.com/TryGhost/Ghost/pull/26631))
- Jannis Fedoruk-Betschki
🐛 Fixed font rendering when converting SVGs with text elements to PNG
format
([TryGhost/Ghost#26863](https://redirect.github.com/TryGhost/Ghost/pull/26863))
- Chris Raible
🐛 Fixed "labels is not defined" error when creating comped members via
API
([TryGhost/Ghost#26837](https://redirect.github.com/TryGhost/Ghost/pull/26837))
- Troy Ciesco
🐛 Fixed translations for Inbox Links button
([TryGhost/Ghost#26839](https://redirect.github.com/TryGhost/Ghost/pull/26839))
- Evan Hahn
🐛 Fixed domain warming when warming has completed
([TryGhost/Ghost#26817](https://redirect.github.com/TryGhost/Ghost/pull/26817))
- Sam Lord
🌐 Added missed string wrapping for Portal's offer page
([TryGhost/Ghost#26884](https://redirect.github.com/TryGhost/Ghost/pull/26884))
- Cathy Sarisky
🌐 Added new Chinese language strings
([TryGhost/Ghost#26871](https://redirect.github.com/TryGhost/Ghost/pull/26871))
- tommywong-theinitium
View the changelog for full details:
<TryGhost/Ghost@v6.22.0...v6.22.1>

###
[`v6.22.0`](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/releases/tag/v6.22.0)

[Compare
Source](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/compare/v6.21.2...v6.22.0)

#### What's Changed

- Enhance CI workflow with Dockerfile-docker checks by
[@&#8203;ngeorger](https://redirect.github.com/ngeorger) in
[#&#8203;669](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/669)
- ci: Automate building new '-docker' releases when there's a release.
by [@&#8203;markstos](https://redirect.github.com/markstos) in
[#&#8203;639](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/639)
- Wf triggers fixes by
[@&#8203;ngeorger](https://redirect.github.com/ngeorger) in
[#&#8203;670](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/670)
- fix(check-ghost-releases): use GitHub Packages API for LAST\_BUILT by
[@&#8203;markstos](https://redirect.github.com/markstos) in
[#&#8203;671](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/671)
- chore(deps): update gcr.io/distroless/nodejs22-debian13:latest docker
digest to
[`b2a1685`](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/commit/b2a1685)
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;673](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/673)
- chore(deps): update gcr.io/distroless/nodejs22-debian13:debug-nonroot
docker digest to
[`6731730`](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/commit/6731730)
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;672](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/672)
- Wf patch logic by
[@&#8203;ngeorger](https://redirect.github.com/ngeorger) in
[#&#8203;674](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/674)

**Full Changelog**:
<sredevopsorg/ghost-on-kubernetes@v6.21.2...v6.22.0>

###
[`v6.21.2`](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/releases/tag/v6.21.2)

[Compare
Source](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/compare/v6.21.0...v6.21.2)

#### What's Changed

- ✨ Add healthcheck to Dockerfile. by
[@&#8203;markstos](https://redirect.github.com/markstos) in
[#&#8203;655](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/655)
- Update base image to specific SHA for runtime by
[@&#8203;ngeorger](https://redirect.github.com/ngeorger) in
[#&#8203;665](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/665)
- chore(deps): update sigstore/cosign-installer action to v4.1.0 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;666](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/666)
- chore(deps): update actions/download-artifact action to v8.0.1 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;667](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/667)

**Full Changelog**:
<sredevopsorg/ghost-on-kubernetes@v6.21.0...v6.21.2>

###
[`v6.21.0`](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/releases/tag/v6.21.0)

[Compare
Source](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/compare/v6.20.0...v6.21.0)

#### What's Changed

- chore: update Ghost and MySQL user IDs to 65532 for non-root executio…
by [@&#8203;ngeorger](https://redirect.github.com/ngeorger) in
[#&#8203;652](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/652)
- chore(deps): update docker/login-action action to v4 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;653](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/653)
- ✨ Add jemalloc to reduce memory consumption by
[@&#8203;markstos](https://redirect.github.com/markstos) in
[#&#8203;654](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/654)
- chore(deps): update docker/setup-buildx-action action to v4 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;656](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/656)
- chore(deps): update docker/metadata-action action to v6 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;663](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/663)
- chore(deps): update docker/build-push-action action to v7 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;662](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/662)
- chore(deps): update step-security/harden-runner action to v2.15.1 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;661](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/661)
- chore(deps): update github/codeql-action action to v4.32.6 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;660](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/660)
- chore(deps): update node.js to
[`30c0fec`](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/commit/30c0fec)
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;659](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/659)
- chore(deps): update gcr.io/distroless/nodejs22-debian13:latest docker
digest to
[`b9b6d4a`](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/commit/b9b6d4a)
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;658](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/658)
- chore(deps): update gcr.io/distroless/nodejs22-debian13:debug-nonroot
docker digest to
[`9bc6ba5`](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/commit/9bc6ba5)
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;657](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/657)

#### From upstream
[@&#8203;tryghost](https://redirect.github.com/tryghost)

✨ Expanded available cards in welcome email editor
([TryGhost/Ghost#26645](https://redirect.github.com/TryGhost/Ghost/pull/26645))
- Evan Hahn
🐛 Fixed double-prefixed asset URLs when using CDN - Rob Lester
🐛 Fixed contributor user menu Posts link navigating to wrong route
([TryGhost/Ghost#26716](https://redirect.github.com/TryGhost/Ghost/pull/26716))
- Kevin Ansfield
🐛 Fixed contributor posts list not being scrollable
([TryGhost/Ghost#26715](https://redirect.github.com/TryGhost/Ghost/pull/26715))
- Kevin Ansfield
🐛 Fixed missing server-side label search in recipient & segment selects
([TryGhost/Ghost#26699](https://redirect.github.com/TryGhost/Ghost/pull/26699))
- Kevin Ansfield
🐛 Fixed #-prefixed member label select ordering when scrolling
([TryGhost/Ghost#26702](https://redirect.github.com/TryGhost/Ghost/pull/26702))
- Kevin Ansfield

**Full Changelog**:
<sredevopsorg/ghost-on-kubernetes@v6.20.0...v6.21.0>

###
[`v6.20.0`](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/releases/tag/v6.20.0)

#### What's Changed

- chore(deps): update github/codeql-action action to v4.32.3 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;630](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/630)
- chore(deps): update docker/build-push-action action to v6.19.2 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;629](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/629)
- docs: Document Dockerfile-docker.dockerfile by
[@&#8203;markstos](https://redirect.github.com/markstos) in
[#&#8203;638](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/638)
- chore(deps): update actions/dependency-review-action action to v4.8.3
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;641](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/641)
- chore(deps): update github/codeql-action action to v4.32.4 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;642](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/642)
- chore(deps): update gcr.io/distroless/nodejs22-debian13:latest docker
digest to
[`72d4913`](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/commit/72d4913)
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;647](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/647)
- chore(deps): update node.js to
[`b597724`](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/commit/b597724)
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;644](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/644)
- chore(deps): update gcr.io/distroless/nodejs22-debian13:debug-nonroot
docker digest to
[`874d16e`](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/commit/874d16e)
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;646](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/646)
- chore(deps): update github artifact actions (major) by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;648](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/648)
- chore(deps): update step-security/harden-runner action to v2.15.0 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;645](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/645)
- chore(deps): update actions/dependency-review-action action to v4.9.0
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;650](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/650)
- chore(deps): update github/codeql-action action to v4.32.5 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;649](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/649)

#### New Contributors

- [@&#8203;markstos](https://redirect.github.com/markstos) made their
first contribution in
[#&#8203;638](https://redirect.github.com/sredevopsorg/ghost-on-kubernetes/pull/638)

**Full Changelog**:
<sredevopsorg/ghost-on-kubernetes@v6.19.1...v6.20.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/mwgustin/homeops).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My40OC4xIiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants