Skip to content

Comments

🌐 Updated Croatian translations for Comments, Ghost, Portal and Search#26531

Open
pleibner wants to merge 5 commits intoTryGhost:mainfrom
pleibner:i18n-croatian-missing-translations
Open

🌐 Updated Croatian translations for Comments, Ghost, Portal and Search#26531
pleibner wants to merge 5 commits intoTryGhost:mainfrom
pleibner:i18n-croatian-missing-translations

Conversation

@pleibner
Copy link

@pleibner pleibner commented Feb 22, 2026

Hey @cathysarisky, in this PR I've added all the missing translations for Croatian, my mother tongue. Please check them out.

Also, while reviewing existing Croatian translations, I've noticed some typos, slang, formality inconsistencies, and alignment errors in string combinations. I plan on addressing all of those in a separate PR.

Before I do that, I'd like to point out that the informal tone in Croatian, while not rude on its own, is often gendered. And in cases like this, when the reader's preferred gender is unknown, the male form is often used as the default. If gender neutrality is a priority for Ghost, using a formal tone might be a better choice. Please let me know what the preferred way forward would be for Ghost, as this will impact my approach in the next PR.


Note

Low Risk
Translation-only updates with no functional or behavioral code changes; risk is limited to copy accuracy/consistency.

Overview
Completes Croatian (hr) localization coverage by replacing previously blank strings with translations across comments.json, ghost.json, portal.json, and search.json.

Updates include comment UI actions/statuses and sorting labels, member/notification email subject/body strings, Portal billing/auth and inbox-provider action labels, and Search UI labels (authors/posts/tags, empty-state, etc.).

Written by Cursor Bugbot for commit d7d959f. This will update automatically on new commits. Configure here.

ref TryGhost#23361
Added missing translations for Croatian, to reach 100% completion.
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 22, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Updated Croatian locale translations in four JSON files: ghost/i18n/locales/hr/comments.json, ghost/i18n/locales/hr/ghost.json, ghost/i18n/locales/hr/portal.json, and ghost/i18n/locales/hr/search.json. Numerous previously empty keys were populated with Croatian strings covering comments UI, authentication/notification messages, billing/portal text, email-provider prompts, and search labels. No code, control flow, or exported/public entity signatures were changed.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: adding updated Croatian translations across four localization files (Comments, Ghost, Portal, Search).
Description check ✅ Passed The description is directly related to the changeset, explaining the addition of missing Croatian translations and discussing related tone/formality considerations for future improvements.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.

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: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
ghost/i18n/locales/hr/ghost.json (1)

65-66: ⚠️ Potential issue | 🟡 Minor

Two empty translation strings remain, contradicting the PR's "100% completion" claim.

Lines 65–66 are still empty:

"Welcome back to {siteTitle}! Your verification code is {otc}.": "",
"Welcome back! Here's your code to sign in to {siteTitle}": "",

If these were intentionally deferred, the commit message claiming 100% Croatian completion is inaccurate.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ghost/i18n/locales/hr/ghost.json` around lines 65 - 66, The two translation
keys "Welcome back to {siteTitle}! Your verification code is {otc}." and
"Welcome back! Here's your code to sign in to {siteTitle}" in ghost.json are
left empty; either provide proper Croatian translations for these keys or
remove/adjust the claim of 100% completion. Update the hr translations by
filling the values for those exact keys (preserving placeholders {siteTitle} and
{otc}) with correct Croatian phrases, e.g. supply localized strings for the
verification-code and sign-in welcome messages, then commit the change.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@ghost/i18n/locales/hr/comments.json`:
- Line 70: The translation for the JSON key "Sort by" is currently "Sortiranje"
which removes the relational "by"; update the value for the "Sort by" key to a
phrase that preserves the "by" relationship such as "Sortiraj po" or "Razvrstaj
po" so the label reads correctly as "Sort by [criterion]".
- Line 78: The Croatian translation for the key "You can't post comments in this
publication." incorrectly uses "objavi" (post); update the value so it refers to
the whole publication/site (use "publikaciji" or equivalent), e.g. replace "Ne
možeš komentirati na ovoj objavi." with a phrase like "Ne možeš komentirati u
ovoj publikaciji." so the message matches Ghost's meaning; locate the string key
"You can't post comments in this publication." in comments.json and update its
translated value accordingly.

In `@ghost/i18n/locales/hr/ghost.json`:
- Line 29: The new Croatian translations introduced informal "ti" forms (e.g.,
the string key "Manage your preferences" -> "Upravljaj svojim postavkama" and
other keys at the mentioned ranges) into a file that otherwise uses formal "Vi";
update those new entries to the formal register to match the rest of ghost.json
(replace informal verbs/pronouns with formal equivalents using "Vi"/"Vaš" and
appropriate conjugation), specifically revise the keys shown in the diff and the
entries at the referenced ranges (around lines 34-36, 43, 45, 47-48, 59, 72) so
all messages consistently use formal address, keeping original key names intact.

In `@ghost/i18n/locales/hr/portal.json`:
- Line 78: The three new translation entries for the error messages ("Failed to
open billing portal, please try again", and the other two identical-style
messages at the same section) use the informal "pokušaj ponovno" and should be
changed to the formal "pokušajte ponovno" to match the existing pattern; update
the translation values for the keys "Failed to open billing portal, please try
again" and the two other new error-message keys in this file (the strings ending
with "pokušaj ponovno") to end with "pokušajte ponovno" so all structurally
identical messages use the same formal register.
- Line 231: The translation for the JSON key "your inbox" is currently "tvoju
adresu" which incorrectly means "your address"; update the value for the "your
inbox" key in portal.json to a correct Croatian phrase such as "tvoju pristiglu
poštu" or "tvoj pretinac" so it conveys "inbox/mailbox" (locate the "your inbox"
key in the hr portal.json and replace the value string).

In `@ghost/i18n/locales/hr/search.json`:
- Line 3: Align the Croatian translation for the same English key by updating
the value of the "Cancel" key in search.json to match the canonical string used
in comments.json (use "Odustani" as suggested), or alternatively update the
"Cancel" key in comments.json to "Prekini" if you prefer that as the canonical
term; ensure both files (search.json and comments.json) use the exact same
target string for "Cancel" so the UI is consistent.

---

Outside diff comments:
In `@ghost/i18n/locales/hr/ghost.json`:
- Around line 65-66: The two translation keys "Welcome back to {siteTitle}! Your
verification code is {otc}." and "Welcome back! Here's your code to sign in to
{siteTitle}" in ghost.json are left empty; either provide proper Croatian
translations for these keys or remove/adjust the claim of 100% completion.
Update the hr translations by filling the values for those exact keys
(preserving placeholders {siteTitle} and {otc}) with correct Croatian phrases,
e.g. supply localized strings for the verification-code and sign-in welcome
messages, then commit the change.

"Sign in": "Prijava",
"Sign up now": "Registriraj se sada",
"Sort by": "",
"Sort by": "Sortiranje",
Copy link
Contributor

@coderabbitai coderabbitai bot Feb 22, 2026

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

"Sort by""Sortiranje" drops the relational "by".

"Sortiranje" means sorting (a noun/gerund), while the source string is a label meaning "Sort by [criterion]". A closer rendering would be "Sortiraj po" or "Razvrstaj po".

🌐 Suggested fix
-    "Sort by": "Sortiranje",
+    "Sort by": "Sortiraj po",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"Sort by": "Sortiranje",
"Sort by": "Sortiraj po",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ghost/i18n/locales/hr/comments.json` at line 70, The translation for the JSON
key "Sort by" is currently "Sortiranje" which removes the relational "by";
update the value for the "Sort by" key to a phrase that preserves the "by"
relationship such as "Sortiraj po" or "Razvrstaj po" so the label reads
correctly as "Sort by [criterion]".

Copy link
Author

Choose a reason for hiding this comment

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

This is intentional, considering how this dropdown label would read with the dropdown options (best, newest, oldest). Since the options are not distinctive categories, like “price,” using a noun here is more appropriate.

Copy link
Contributor

Choose a reason for hiding this comment

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

@pleibner, thank you for the clarification! That makes sense—using the noun form "Sortiranje" as a standalone label is more natural when the dropdown options themselves complete the meaning. I appreciate the context about how it reads with the options.

🐰💭
(_(\
(='.'=)
(")_(")


✏️ Learnings added
Learnt from: pleibner
Repo: TryGhost/Ghost PR: 26531
File: ghost/i18n/locales/hr/comments.json:70-70
Timestamp: 2026-02-22T16:26:49.641Z
Learning: In Croatian translations for Ghost, when translating "Sort by" labels for dropdowns where the options are adjectives (like "best", "newest", "oldest") rather than distinct categories, using the noun form "Sortiranje" is preferred over the verb phrase "Sortiraj po" because it reads more naturally with the dropdown options.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

"View in admin": "Pogledaj u admin sučelju",
"Yesterday": "Jučer",
"You can't post comments in this publication.": "",
"You can't post comments in this publication.": "Ne možeš komentirati na ovoj objavi.",
Copy link
Contributor

@coderabbitai coderabbitai bot Feb 22, 2026

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

"publication" mistranslated as "objavi" (single post) instead of the site/publication.

In Ghost, "publication" refers to the entire site, not an individual post. "objavi" means a single article/post, so "Ne možeš komentirati na ovoj objavi." reads as "You can't comment on this post" rather than "...in this publication."

🌐 Suggested fix
-    "You can't post comments in this publication.": "Ne možeš komentirati na ovoj objavi.",
+    "You can't post comments in this publication.": "Ne možeš komentirati u ovoj publikaciji.",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"You can't post comments in this publication.": "Ne možeš komentirati na ovoj objavi.",
"You can't post comments in this publication.": "Ne možeš komentirati u ovoj publikaciji.",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ghost/i18n/locales/hr/comments.json` at line 78, The Croatian translation for
the key "You can't post comments in this publication." incorrectly uses "objavi"
(post); update the value so it refers to the whole publication/site (use
"publikaciji" or equivalent), e.g. replace "Ne možeš komentirati na ovoj
objavi." with a phrase like "Ne možeš komentirati u ovoj publikaciji." so the
message matches Ghost's meaning; locate the string key "You can't post comments
in this publication." in comments.json and update its translated value
accordingly.

Copy link
Author

Choose a reason for hiding this comment

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

"Publikacija" exists, but is used mainly in formal or academic contexts. If this string refers to the entire site, it would be more natural to use "stranica".

Copy link
Contributor

Choose a reason for hiding this comment

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

@pleibner Thank you for that clarification! You're absolutely right—"stranica" is indeed more natural for referring to a website/site in everyday Croatian. I appreciate you sharing this linguistic nuance; using "stranica" will make the translation feel more authentic and less formal for users.


✏️ Learnings added
Learnt from: pleibner
Repo: TryGhost/Ghost PR: 26531
File: ghost/i18n/locales/hr/comments.json:78-78
Timestamp: 2026-02-22T16:59:56.822Z
Learning: In Croatian translations for Ghost, use "stranica" (site/page) rather than "publikacija" (publication) when referring to the entire Ghost site, as "publikacija" is mainly used in formal or academic contexts and sounds unnatural for website UI.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

"Your account": "Vaš korisnički račun",
"Your email has failed to resubscribe, please try again": "Ponovna pretplata nije uspjela, pokušajte ponovno",
"your inbox": "",
"your inbox": "tvoju adresu",
Copy link
Contributor

@coderabbitai coderabbitai bot Feb 22, 2026

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

"your inbox""tvoju adresu" renders "inbox" as "address".

"adresu" means address (e-mail address), not an inbox/mailbox. This key appears to be used in a phrase like "Check your inbox" or "We sent a link to your inbox". A more accurate rendering would be "tvoju pristiglu poštu" (your received mail) or simply "tvoj pretinac".

🌐 Suggested fix
-    "your inbox": "tvoju adresu",
+    "your inbox": "tvoju pristiglu poštu",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ghost/i18n/locales/hr/portal.json` at line 231, The translation for the JSON
key "your inbox" is currently "tvoju adresu" which incorrectly means "your
address"; update the value for the "your inbox" key in portal.json to a correct
Croatian phrase such as "tvoju pristiglu poštu" or "tvoj pretinac" so it conveys
"inbox/mailbox" (locate the "your inbox" key in the hr portal.json and replace
the value string).

Copy link
Author

Choose a reason for hiding this comment

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

This is also intentional because this string is used as a fallback for an email address. Both an email address and “your inbox” have to fit in the same place in another translation, and the preposition used there has to match both. Also, a literal translation for “inbox” is rarely used in Croatian in this context, “address” is more common.

Copy link
Contributor

Choose a reason for hiding this comment

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

@pleibner, thank you for the clarification! I appreciate you explaining the context — the dual-purpose nature of the string (serving as both a fallback for email addresses and "your inbox") and the grammatical constraints with prepositions make perfect sense. Your point about Croatian usage patterns is valuable; native speaker judgment on idiomatic phrasing always takes precedence over literal translation.


✏️ Learnings added
Learnt from: pleibner
Repo: TryGhost/Ghost PR: 26531
File: ghost/i18n/locales/hr/portal.json:231-231
Timestamp: 2026-02-22T16:46:40.420Z
Learning: In Ghost Portal Croatian (hr) translations, the key "your inbox" is translated as "tvoju adresu" (your address) because it serves as a fallback for email addresses in the UI, must work with the same preposition, and "address" is more idiomatic than a literal "inbox" translation in Croatian for this context.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

ref TryGhost#23361
Added translations for two more strings that were accidentally left out of the first commit.
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 `@ghost/i18n/locales/hr/ghost.json`:
- Around line 65-66: Replace the masculine singular "Dobrodošao natrag" in the
translations for the keys "Welcome back to {siteTitle}! Your verification code
is {otc}." and "Welcome back! Here's your code to sign in to {siteTitle}" with
the gender-neutral plural "Dobro došli natrag" to match the file's existing
"Dobro došli" usage (see nearby "Welcome back to {siteTitle}!" and "Welcome
back! Use this link…" translations) so the greetings remain consistent and
inclusive.

---

Duplicate comments:
In `@ghost/i18n/locales/hr/ghost.json`:
- Line 29: Several new translations use the informal "ti" register (e.g., the
key "Manage your preferences" currently translated as "Upravljaj svojim
postavkama") which conflicts with the file's existing formal "Vi" tone; update
those entries to the formal register so they match surrounding
strings—specifically replace informal forms for "Manage your preferences" and
the other noted entries (lines referenced: 34-36, 43, 45, 47-48, 59, 62, 72)
with formal Croatian equivalents (use forms like "Upravljajte svojim
postavkama", "Prijavite se", "Odjavite se", "Pogledajte", "Možete se", etc.)
ensuring all keys in ghost.json use the formal "Vi" phrasing.

ref TryGhost#23361
Updated some of the newly added Croatian translations to match the existing translations' level of formality.
ref TryGhost#23361
Updated the translation of the word "publication" in a string because the original translation was misleading.
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.

🧹 Nitpick comments (1)
ghost/i18n/locales/hr/portal.json (1)

21-21: Formality mismatch within the code-verification flow.

Line 21 uses formal imperatives ("Kliknite", "unesite"), while line 70 — part of the same code-entry UI context — uses the informal "Unesi". Given that these two strings will appear in the same screen, aligning them is preferable.

Since the broader formality audit is already planned for a follow-up PR, this can be bundled there, but the fix is trivial:

🌐 Suggested fix (align line 70 to formal register)
-    "Enter code above": "Unesi kod iznad",
+    "Enter code above": "Unesite kod iznad",

Also applies to: 70-70

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ghost/i18n/locales/hr/portal.json` at line 21, The translation for the
code-entry UI is inconsistent in formality: the key "An email has been sent to
{submittedEmailOrInbox}. Click the link inside or enter your code below." uses
formal imperatives ("Kliknite", "unesite") while another string on the same
screen (the translation at line 70, currently using "Unesi") is informal; update
the line 70 translation to the formal register to match this key (change the
informal "Unesi" to the formal equivalent "Unesite" in the hr locale JSON) so
both strings in the verification UI use the same formality.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@ghost/i18n/locales/hr/portal.json`:
- Line 21: The translation for the code-entry UI is inconsistent in formality:
the key "An email has been sent to {submittedEmailOrInbox}. Click the link
inside or enter your code below." uses formal imperatives ("Kliknite",
"unesite") while another string on the same screen (the translation at line 70,
currently using "Unesi") is informal; update the line 70 translation to the
formal register to match this key (change the informal "Unesi" to the formal
equivalent "Unesite" in the hr locale JSON) so both strings in the verification
UI use the same formality.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

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

🧹 Nitpick comments (1)
ghost/i18n/locales/hr/comments.json (1)

17-17: "Prvo + adj" pattern turns bare sort labels into sort-direction descriptors.

The source strings "Best", "Newest", and "Oldest" are simple option labels. The translations "Prvo najbolji", "Prvo najnoviji", and "Prvo najstariji" mean "Best first", "Newest first", and "Oldest first" — adding an explicit ordering direction not present in the source.

This is coherent when paired with the "Sortiranje" dropdown heading (the full label reads "Sorting: Newest first"), but it may cause a mismatch if the source app ever renders these labels standalone or uses them in a context other than a sort dropdown. Consider whether the simpler adjective forms ("Najbolji", "Najnoviji", "Najstariji") would be sufficient without the added "Prvo".

🌐 Simplified forms (optional)
-    "Best": "Prvo najbolji",
+    "Best": "Najbolji",
...
-    "Newest": "Prvo najnoviji",
+    "Newest": "Najnoviji",
-    "Oldest": "Prvo najstariji",
+    "Oldest": "Najstariji",

Also applies to: 48-49

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ghost/i18n/locales/hr/comments.json` at line 17, The translations for the
sort option keys "Best", "Newest", and "Oldest" in comments.json currently add
an explicit ordering word ("Prvo") turning bare labels into "first" descriptors;
update the values for the keys "Best", "Newest", and "Oldest" (and the other
occurrences around the same block at the mentioned lines) to the simpler
adjective forms ("Najbolji", "Najnoviji", "Najstariji") so they match the source
strings as standalone labels without implying a sort direction.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@ghost/i18n/locales/hr/comments.json`:
- Line 14: The Croatian translation for the key "Are you sure?" currently uses
the masculine singular "Jesi li siguran?"; replace that value with the
gender-neutral/formal plural "Jeste li sigurni?" (i.e., change the string value
for "Are you sure?" from "Jesi li siguran?" to "Jeste li sigurni?") and ensure
this choice matches the locale's overall tone.

---

Duplicate comments:
In `@ghost/i18n/locales/hr/comments.json`:
- Line 70: The translation key "Sort by" in comments.json should remain as
"Sortiranje" (the preferred noun form in Croatian); no code changes are
required—keep the entry "Sort by": "Sortiranje" unchanged in the i18n file.

---

Nitpick comments:
In `@ghost/i18n/locales/hr/comments.json`:
- Line 17: The translations for the sort option keys "Best", "Newest", and
"Oldest" in comments.json currently add an explicit ordering word ("Prvo")
turning bare labels into "first" descriptors; update the values for the keys
"Best", "Newest", and "Oldest" (and the other occurrences around the same block
at the mentioned lines) to the simpler adjective forms ("Najbolji", "Najnoviji",
"Najstariji") so they match the source strings as standalone labels without
implying a sort direction.

"Already a member?": "Već si član?",
"Anonymous": "Anonimus",
"Are you sure?": "",
"Are you sure?": "Jesi li siguran?",
Copy link
Contributor

@coderabbitai coderabbitai bot Feb 22, 2026

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

"Jesi li siguran?" uses masculine singular — consider a gender-inclusive form.

As the PR author noted, informal Croatian defaults to the masculine form when gender is unknown. "Jesi li siguran?" will appear to address only male readers. A formal plural is grammatically gender-neutral: "Jeste li sigurni?", though it shifts the register from informal to formal.

Since the PR raises the open tone question, it's worth settling this before merging — the gender inconsistency is directly observable here.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ghost/i18n/locales/hr/comments.json` at line 14, The Croatian translation for
the key "Are you sure?" currently uses the masculine singular "Jesi li
siguran?"; replace that value with the gender-neutral/formal plural "Jeste li
sigurni?" (i.e., change the string value for "Are you sure?" from "Jesi li
siguran?" to "Jeste li sigurni?") and ensure this choice matches the locale's
overall tone.

Copy link
Author

Choose a reason for hiding this comment

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

As mentioned earlier, Croatian is highly gendered. I would keep this as-is for now because it matches the rest of the file. ‘Već si član?’, ‘Postani član’, ‘Osnivač’, ‘Voditelj’, and ‘Neurokirurg’ all use the default masculine form, and most of the file uses an informal tone, with a few inconsistencies.

Copy link
Contributor

Choose a reason for hiding this comment

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

@pleibner, that makes perfect sense — maintaining consistency within the file is the right call for now. I appreciate you pointing out those other masculine forms throughout; a piecemeal change here would indeed introduce inconsistency. Looking forward to the comprehensive tone/formality cleanup in your planned follow-up PR! 👍


✏️ Learnings added
Learnt from: pleibner
Repo: TryGhost/Ghost PR: 26531
File: ghost/i18n/locales/hr/comments.json:14-14
Timestamp: 2026-02-22T17:47:26.893Z
Learning: In Croatian translations for Ghost (ghost/i18n/locales/hr/), maintain consistency with the existing tone and gendered forms within each file. The project currently uses masculine forms by default for gender-neutral contexts (e.g., "Jesi li siguran?", "Već si član?", "Postani član"). Tone and formality inconsistencies should be addressed comprehensively across files rather than in individual changes.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

ref TryGhost#23361
Updated the remaining two recently added Croatian translations, which didn’t match the preexisting level of formality.
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.

🧹 Nitpick comments (1)
ghost/i18n/locales/hr/portal.json (1)

52-52: Optional: consider preserving the "session" concept for parity with line 202.

The existing line 202 translates "Unable to initiate checkout session" as "Nije moguće pokrenuti sesiju naplate" (explicitly including sesiju). The new translation for line 52 omits it:

"Could not create Stripe billing portal session"
→ "Nije moguće pokrenuti Stripe portal za naplatu"

If technical precision matters here, aligning with the pattern at line 202 would give:

🌐 Optional refinement
-    "Could not create Stripe billing portal session": "Nije moguće pokrenuti Stripe portal za naplatu",
+    "Could not create Stripe billing portal session": "Nije moguće stvoriti sesiju Stripe portala za naplatu",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ghost/i18n/locales/hr/portal.json` at line 52, The translation for the key
"Could not create Stripe billing portal session" omits the word "sesiju" and
should match the pattern used for "Unable to initiate checkout session" (which
uses "sesiju"); update the value for "Could not create Stripe billing portal
session" to include "sesiju" (e.g., "Nije moguće pokrenuti Stripe portal za
naplatu sesiju" or an equivalent natural-sounding Croatian phrasing) so both
messages consistently preserve the "session" concept.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@ghost/i18n/locales/hr/portal.json`:
- Around line 75-88: The Croatian translations for the portal error messages
have been made consistent by using the formal phrase "pokušajte ponovno" across
keys like "Failed to cancel subscription, please try again", "Failed to sign up,
please try again", and "Failed to verify code, please try again"; no further
changes are required—accept these updates and mark the translations as approved,
ensuring no duplicate entries remain in portal.json.

---

Nitpick comments:
In `@ghost/i18n/locales/hr/portal.json`:
- Line 52: The translation for the key "Could not create Stripe billing portal
session" omits the word "sesiju" and should match the pattern used for "Unable
to initiate checkout session" (which uses "sesiju"); update the value for "Could
not create Stripe billing portal session" to include "sesiju" (e.g., "Nije
moguće pokrenuti Stripe portal za naplatu sesiju" or an equivalent
natural-sounding Croatian phrasing) so both messages consistently preserve the
"session" concept.

@pleibner
Copy link
Author

@cathysarisky, I have tried to address all comments from the AI reviewers while maintaining consistency with exsiting translations in a specific area (e.g. comments, emails). However, many inconsistencies remain across the full translation set, and I'm looking forward to resolving those in my next PR. Happy to hear your thoughts on the best way to proceed!

@cathysarisky
Copy link
Member

Hi @pleibner ! Thanks for your submission! It sounds like there's a conflict here between Ghost's generally informal tone (although not all languages user their informal tone, if they have one) and a desire to have language that works for all genders.

@ibalosh or @bobvaneck , would you like to weigh in on how the Croatian should be handled? I'll happily get out of the way and let the Croatian speakers come to a consensus.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants