Skip to content

Conversation

TurnGui
Copy link
Contributor

@TurnGui TurnGui commented Jul 13, 2025

Added some portuguese missing translations.

  • [x ] I've read and followed the Contributor Guide
  • [ x] I've explained my change
  • I've written an automated test to prove my change works

We appreciate your contribution! 🙏

Copy link
Contributor

coderabbitai bot commented Jul 13, 2025

Walkthrough

The changes consist of updates to several Portuguese localization JSON files within the project. Previously empty string values for various user interface keys related to comments, general UI, portal/account management, and search functionality have been filled with their correct Portuguese translations. No existing translations were altered or removed; only untranslated entries were completed. These updates are limited to translation files and do not affect any logic, control flow, or exported/public code entities. The updates ensure more complete Portuguese language support across different parts of the application.

Estimated code review effort

1 (<30 minutes)


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b2a67c8 and 8923f80.

📒 Files selected for processing (1)
  • ghost/i18n/locales/pt/portal.json (5 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • ghost/i18n/locales/pt/portal.json

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

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 (10)
ghost/i18n/locales/pt/comments.json (5)

14-14: Switch to the formal form to stay consistent with the rest of the file.

Most other strings address the user with the neutral/formal register (“Tem”, “Pode”, …).
Use “Tem a certeza?” instead of the informal “Tens a certeza?”.


17-18: Plural-friendly wording for “Best”.

For the “Sort by” menu the option usually refers to a list of comments, so a plural form fits better:

-"Best": "Melhor",
+"Best": "Melhores",

22-24: Use the same verb consistently for “Delete / Deleted / Deleting”.

Earlier keys translate “Delete” as “Eliminar”.
To avoid mixed terminology change:

-"Deleted": "Apagado",
-"Deleting": "Apagando",
+"Deleted": "Eliminado",
+"Deleting": "A eliminar",

50-53: Context agreement for reply-related labels.

“Replied to” / “Reply to” are labels, not actions performed by the viewer.
Consider the neutral form to match UI context:

-"Replied to": "Respondeu a",
-"Reply to": "Responder a",
+"Replied to": "Respondido a",
+"Reply to": "Responder a",

67-67: Portuguese UI convention favours “Ordenar por”.

-"Sort by": "Organizar por",
+"Sort by": "Ordenar por",
ghost/i18n/locales/pt/ghost.json (2)

15-15: Capitalisation & punctuation – keep the colon.

-"Device:": "dispositivo",
+"Device:": "Dispositivo:",

66-66: Maintain register consistency (avoid informal “tu”).

-"You just tried to access your account from a new device.": "Acabaste de aceder a tua conta de um novo dispositivo",
+"You just tried to access your account from a new device.": "Acabou de tentar aceder à sua conta a partir de um novo dispositivo",
ghost/i18n/locales/pt/portal.json (3)

80-80: Inconsistent PT-PT / PT-BR vocabulary – stick to one variant.

Earlier strings use “faturação” (PT-PT).
Change “faturamento” to match:

-"Failed to update billing information, please try again": "Erro ao atualizar dados de faturamento, por favor tente de novo",
+"Failed to update billing information, please try novamente": "Erro ao atualizar dados de faturação, por favor tente de novo",

72-73: Prefer “iniciar/terminar sessão” over English “login/logout”.

For consistency with other Portuguese strings:

-"Failed to log in, please try again": "Erro ao fazer login, por favor tente de novo",
-"Failed to log out, please try again": "Erro ao fazer logout, por favor tente de novo",
+"Failed to log in, please try again": "Erro ao iniciar sessão, por favor tente de novo",
+"Failed to log out, please try again": "Erro ao terminar sessão, por favor tente de novo",

16-16: Typo: “atualizados” needs an accent.

-"Account details updated successfully": "Detalhes de conta atualizados com sucesso",
+"Account details updated successfully": "Detalhes de conta actualizados com sucesso",

(PT-PT spelling)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3b88e4a and b42e27a.

📒 Files selected for processing (4)
  • ghost/i18n/locales/pt/comments.json (4 hunks)
  • ghost/i18n/locales/pt/ghost.json (5 hunks)
  • ghost/i18n/locales/pt/portal.json (5 hunks)
  • ghost/i18n/locales/pt/search.json (1 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-05-20T21:08:21.026Z
Learning: In the Ghost project, translation files (ghost/i18n/locales/*/*.json) commonly have blank values for translations, and this is normal behavior that should not be flagged in reviews. These empty translations will be filled in separate PRs.
Learnt from: cathysarisky
PR: TryGhost/Ghost#23070
File: ghost/i18n/locales/hu/comments.json:45-45
Timestamp: 2025-04-30T16:27:03.542Z
Learning: In the Ghost project, new translation string keys are intentionally added with empty values initially and will be translated in a separate PR. Do not report missing translations for entirely new string additions.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22175
File: ghost/i18n/locales/pt-BR/portal.json:18-18
Timestamp: 2025-02-12T20:09:12.731Z
Learning: In the Ghost project, new translation keys are first added with empty string values, and the actual translations are added later in separate PRs to maintain better organization of translation work.
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-01-29T15:27:29.391Z
Learning: When reviewing translation files in ghost/i18n/locales, translators should only modify the translated values and must not change the keys or placeholder styles (e.g., %%{status}%%, {site}, etc.) as they serve specific purposes like Mailgun string replacement.
Learnt from: cathysarisky
PR: TryGhost/Ghost#21982
File: ghost/i18n/locales/hu v2/portal.json:70-70
Timestamp: 2025-01-29T15:23:58.658Z
Learning: Typos and spelling errors within localization files (ghost/i18n/locales/*.json) must be treated as important problems, not nitpicks, as they directly affect the user experience for speakers of that language. These issues should be flagged with high priority during code review.
Learnt from: SebastianSchroeder
PR: TryGhost/Ghost#23602
File: ghost/i18n/locales/vi/ghost.json:3-4
Timestamp: 2025-05-30T11:41:47.336Z
Learning: SebastianSchroeder prefers to handle missing translations in separate PRs rather than including them in the same PR that adds the i18n infrastructure, to keep PRs focused on specific functionality.
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-02-07T18:07:34.152Z
Learning: Always review translation changes in language files unless the right side (value) of the key-value pair is blank. This includes reviewing both the correctness and appropriateness of the translations.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22075
File: ghost/i18n/locales/pt-BR/portal.json:0-0
Timestamp: 2025-01-30T15:13:48.222Z
Learning: When reviewing translation files in i18n/locales/*, the keys (left side) must never be changed. If a translator has modified any keys, this should be flagged as a potential error requiring review or correction. Only the translation values (right side) should be modified.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22175
File: ghost/i18n/locales/lt/portal.json:16-16
Timestamp: 2025-02-12T20:23:47.777Z
Learning: Empty translation strings in localization files are often intentional placeholders, not necessarily indicating deleted content. Many languages may have empty strings as translations are added incrementally over time.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22175
File: ghost/i18n/locales/lt/portal.json:16-16
Timestamp: 2025-02-12T20:23:47.777Z
Learning: When reviewing localization changes, verify the actual history of translations before flagging potential deletions. Empty translation strings may be intentional placeholders rather than deleted content.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22075
File: ghost/i18n/locales/pt-BR/comments.json:0-0
Timestamp: 2025-01-29T16:27:51.786Z
Learning: When suggesting changes to JSON translation files, ensure that the key's quote style (straight quotes) is preserved exactly as is, and only modify the translation value.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22075
File: ghost/i18n/locales/pt-BR/portal.json:0-0
Timestamp: 2025-01-30T15:11:25.199Z
Learning: When reviewing translation files in i18n/locales/*, focus on identifying spelling errors in the translation values (right side) of the JSON key-value pairs, not the keys (left side).
ghost/i18n/locales/pt/search.json (10)
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-05-20T21:08:21.026Z
Learning: In the Ghost project, translation files (ghost/i18n/locales/*/*.json) commonly have blank values for translations, and this is normal behavior that should not be flagged in reviews. These empty translations will be filled in separate PRs.
Learnt from: cathysarisky
PR: TryGhost/Ghost#23070
File: ghost/i18n/locales/hu/comments.json:45-45
Timestamp: 2025-04-30T16:27:03.542Z
Learning: In the Ghost project, new translation string keys are intentionally added with empty values initially and will be translated in a separate PR. Do not report missing translations for entirely new string additions.
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-01-29T15:27:29.391Z
Learning: When reviewing translation files in ghost/i18n/locales, translators should only modify the translated values and must not change the keys or placeholder styles (e.g., %%{status}%%, {site}, etc.) as they serve specific purposes like Mailgun string replacement.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22175
File: ghost/i18n/locales/pt-BR/portal.json:18-18
Timestamp: 2025-02-12T20:09:12.731Z
Learning: In the Ghost project, new translation keys are first added with empty string values, and the actual translations are added later in separate PRs to maintain better organization of translation work.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22175
File: ghost/i18n/locales/lt/portal.json:16-16
Timestamp: 2025-02-12T20:23:47.777Z
Learning: Empty translation strings in localization files are often intentional placeholders, not necessarily indicating deleted content. Many languages may have empty strings as translations are added incrementally over time.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22175
File: ghost/i18n/locales/lt/portal.json:16-16
Timestamp: 2025-02-12T20:23:47.777Z
Learning: When reviewing localization changes, verify the actual history of translations before flagging potential deletions. Empty translation strings may be intentional placeholders rather than deleted content.
Learnt from: cathysarisky
PR: TryGhost/Ghost#23161
File: ghost/i18n/lib/i18n.js:107-144
Timestamp: 2025-05-14T14:39:09.136Z
Learning: In Ghost's i18n system, translation keys are the actual English phrases, so when a translation is missing, displaying the key itself serves as the English fallback, eliminating the need for explicit fallback resource loading.
Learnt from: cathysarisky
PR: TryGhost/Ghost#21982
File: ghost/i18n/locales/hu v2/portal.json:70-70
Timestamp: 2025-01-29T15:23:58.658Z
Learning: Typos and spelling errors within localization files (ghost/i18n/locales/*.json) must be treated as important problems, not nitpicks, as they directly affect the user experience for speakers of that language. These issues should be flagged with high priority during code review.
Learnt from: cathysarisky
PR: TryGhost/Ghost#21982
File: ghost/i18n/locales/hu/portal.json:207-207
Timestamp: 2025-02-15T16:00:03.347Z
Learning: In Hungarian translations for Ghost, ensure that all variables like {{title}} are preserved in the translated strings and not omitted.
Learnt from: cathysarisky
PR: TryGhost/Ghost#21651
File: ghost/i18n/locales/ar/comments.json:1-1
Timestamp: 2025-01-29T15:35:26.447Z
Learning: All JSON files containing translation strings in ghost/i18n/locales must include both opening and closing braces to maintain valid JSON structure.
ghost/i18n/locales/pt/portal.json (10)
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-05-20T21:08:21.026Z
Learning: In the Ghost project, translation files (ghost/i18n/locales/*/*.json) commonly have blank values for translations, and this is normal behavior that should not be flagged in reviews. These empty translations will be filled in separate PRs.
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-01-29T15:27:29.391Z
Learning: When reviewing translation files in ghost/i18n/locales, translators should only modify the translated values and must not change the keys or placeholder styles (e.g., %%{status}%%, {site}, etc.) as they serve specific purposes like Mailgun string replacement.
Learnt from: cathysarisky
PR: TryGhost/Ghost#23070
File: ghost/i18n/locales/hu/comments.json:45-45
Timestamp: 2025-04-30T16:27:03.542Z
Learning: In the Ghost project, new translation string keys are intentionally added with empty values initially and will be translated in a separate PR. Do not report missing translations for entirely new string additions.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22175
File: ghost/i18n/locales/pt-BR/portal.json:18-18
Timestamp: 2025-02-12T20:09:12.731Z
Learning: In the Ghost project, new translation keys are first added with empty string values, and the actual translations are added later in separate PRs to maintain better organization of translation work.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22175
File: ghost/i18n/locales/lt/portal.json:16-16
Timestamp: 2025-02-12T20:23:47.777Z
Learning: When reviewing localization changes, verify the actual history of translations before flagging potential deletions. Empty translation strings may be intentional placeholders rather than deleted content.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22007
File: ghost/i18n/locales/sl/newsletter.json:18-18
Timestamp: 2025-01-28T13:58:08.393Z
Learning: When reviewing translations of newsletter.json, check that the translations of status words (free/complimentary/paid/trialing) will form grammatically correct sentences when substituted into the message template. The status words should agree grammatically with the word "subscriber" in the target language.
Learnt from: cathysarisky
PR: TryGhost/Ghost#21982
File: ghost/i18n/locales/hu/portal.json:207-207
Timestamp: 2025-02-15T16:00:03.347Z
Learning: In Hungarian translations for Ghost, ensure that all variables like {{title}} are preserved in the translated strings and not omitted.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22175
File: ghost/i18n/locales/lt/portal.json:16-16
Timestamp: 2025-02-12T20:23:47.777Z
Learning: Empty translation strings in localization files are often intentional placeholders, not necessarily indicating deleted content. Many languages may have empty strings as translations are added incrementally over time.
Learnt from: cathysarisky
PR: TryGhost/Ghost#21651
File: ghost/i18n/locales/ar/comments.json:1-1
Timestamp: 2025-01-29T15:35:26.447Z
Learning: All JSON files containing translation strings in ghost/i18n/locales must include both opening and closing braces to maintain valid JSON structure.
Learnt from: cathysarisky
PR: TryGhost/Ghost#21982
File: ghost/i18n/locales/hu/portal.json:70-71
Timestamp: 2025-02-15T16:00:03.845Z
Learning: In Hungarian translations for Ghost, payment/checkout related error messages should use "fizetés" (payment) related terms, not "bejelentkezés" (login) related terms, to accurately reflect the context of payment processing.
ghost/i18n/locales/pt/ghost.json (12)
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-05-20T21:08:21.026Z
Learning: In the Ghost project, translation files (ghost/i18n/locales/*/*.json) commonly have blank values for translations, and this is normal behavior that should not be flagged in reviews. These empty translations will be filled in separate PRs.
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-01-29T15:27:29.391Z
Learning: When reviewing translation files in ghost/i18n/locales, translators should only modify the translated values and must not change the keys or placeholder styles (e.g., %%{status}%%, {site}, etc.) as they serve specific purposes like Mailgun string replacement.
Learnt from: cathysarisky
PR: TryGhost/Ghost#23070
File: ghost/i18n/locales/hu/comments.json:45-45
Timestamp: 2025-04-30T16:27:03.542Z
Learning: In the Ghost project, new translation string keys are intentionally added with empty values initially and will be translated in a separate PR. Do not report missing translations for entirely new string additions.
Learnt from: cathysarisky
PR: TryGhost/Ghost#21651
File: ghost/i18n/locales/ar/comments.json:1-1
Timestamp: 2025-01-29T15:35:26.447Z
Learning: All JSON files containing translation strings in ghost/i18n/locales must include both opening and closing braces to maintain valid JSON structure.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22175
File: ghost/i18n/locales/pt-BR/portal.json:18-18
Timestamp: 2025-02-12T20:09:12.731Z
Learning: In the Ghost project, new translation keys are first added with empty string values, and the actual translations are added later in separate PRs to maintain better organization of translation work.
Learnt from: cathysarisky
PR: TryGhost/Ghost#21982
File: ghost/i18n/locales/hu v2/portal.json:70-70
Timestamp: 2025-01-29T15:23:58.658Z
Learning: Typos and spelling errors within localization files (ghost/i18n/locales/*.json) must be treated as important problems, not nitpicks, as they directly affect the user experience for speakers of that language. These issues should be flagged with high priority during code review.
Learnt from: cathysarisky
PR: TryGhost/Ghost#21982
File: ghost/i18n/locales/hu/portal.json:207-207
Timestamp: 2025-02-15T16:00:03.347Z
Learning: In Hungarian translations for Ghost, ensure that all variables like {{title}} are preserved in the translated strings and not omitted.
Learnt from: cathysarisky
PR: TryGhost/Ghost#23161
File: ghost/i18n/lib/i18n.js:107-144
Timestamp: 2025-05-14T14:39:09.136Z
Learning: In Ghost's i18n system, translation keys are the actual English phrases, so when a translation is missing, displaying the key itself serves as the English fallback, eliminating the need for explicit fallback resource loading.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22175
File: ghost/i18n/locales/lt/portal.json:16-16
Timestamp: 2025-02-12T20:23:47.777Z
Learning: When reviewing localization changes, verify the actual history of translations before flagging potential deletions. Empty translation strings may be intentional placeholders rather than deleted content.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22075
File: ghost/i18n/locales/pt-BR/portal.json:0-0
Timestamp: 2025-01-30T15:11:25.199Z
Learning: When reviewing translation files in i18n/locales/*, focus on identifying spelling errors in the translation values (right side) of the JSON key-value pairs, not the keys (left side).
Learnt from: cathysarisky
PR: TryGhost/Ghost#22007
File: ghost/i18n/locales/sl/newsletter.json:18-18
Timestamp: 2025-01-28T13:58:08.393Z
Learning: When reviewing translations of newsletter.json, check that the translations of status words (free/complimentary/paid/trialing) will form grammatically correct sentences when substituted into the message template. The status words should agree grammatically with the word "subscriber" in the target language.
Learnt from: michivonah
PR: TryGhost/Ghost#22323
File: ghost/i18n/locales/de-CH/ghost.json:31-31
Timestamp: 2025-03-03T12:22:11.423Z
Learning: In Swiss German (de-CH) localization for Ghost, "anmelden" is the preferred term for newsletter subscriptions, while "Abo" is used when referring to paid subscriptions. "Sie werden nicht angemeldet" is the correct translation for "You will not be subscribed" in newsletter contexts.
ghost/i18n/locales/pt/comments.json (9)
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-05-20T21:08:21.026Z
Learning: In the Ghost project, translation files (ghost/i18n/locales/*/*.json) commonly have blank values for translations, and this is normal behavior that should not be flagged in reviews. These empty translations will be filled in separate PRs.
Learnt from: cathysarisky
PR: TryGhost/Ghost#23070
File: ghost/i18n/locales/hu/comments.json:45-45
Timestamp: 2025-04-30T16:27:03.542Z
Learning: In the Ghost project, new translation string keys are intentionally added with empty values initially and will be translated in a separate PR. Do not report missing translations for entirely new string additions.
Learnt from: cathysarisky
PR: TryGhost/Ghost#0
File: :0-0
Timestamp: 2025-01-29T15:27:29.391Z
Learning: When reviewing translation files in ghost/i18n/locales, translators should only modify the translated values and must not change the keys or placeholder styles (e.g., %%{status}%%, {site}, etc.) as they serve specific purposes like Mailgun string replacement.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22175
File: ghost/i18n/locales/lt/portal.json:16-16
Timestamp: 2025-02-12T20:23:47.777Z
Learning: When reviewing localization changes, verify the actual history of translations before flagging potential deletions. Empty translation strings may be intentional placeholders rather than deleted content.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22175
File: ghost/i18n/locales/pt-BR/portal.json:18-18
Timestamp: 2025-02-12T20:09:12.731Z
Learning: In the Ghost project, new translation keys are first added with empty string values, and the actual translations are added later in separate PRs to maintain better organization of translation work.
Learnt from: cathysarisky
PR: TryGhost/Ghost#22175
File: ghost/i18n/locales/lt/portal.json:16-16
Timestamp: 2025-02-12T20:23:47.777Z
Learning: Empty translation strings in localization files are often intentional placeholders, not necessarily indicating deleted content. Many languages may have empty strings as translations are added incrementally over time.
Learnt from: cathysarisky
PR: TryGhost/Ghost#21982
File: ghost/i18n/locales/hu v2/portal.json:70-70
Timestamp: 2025-01-29T15:23:58.658Z
Learning: Typos and spelling errors within localization files (ghost/i18n/locales/*.json) must be treated as important problems, not nitpicks, as they directly affect the user experience for speakers of that language. These issues should be flagged with high priority during code review.
Learnt from: cathysarisky
PR: TryGhost/Ghost#21982
File: ghost/i18n/locales/hu/portal.json:207-207
Timestamp: 2025-02-15T16:00:03.347Z
Learning: In Hungarian translations for Ghost, ensure that all variables like {{title}} are preserved in the translated strings and not omitted.
Learnt from: 55sketch
PR: TryGhost/Ghost#23894
File: ghost/core/core/server/api/endpoints/comments.js:16-22
Timestamp: 2025-06-18T10:56:19.906Z
Learning: The validateCommentData function in ghost/core/core/server/api/endpoints/comments.js is not duplicated elsewhere in the codebase - it's a unique validation function that ensures either post_id or parent_id is provided for comment creation.
🔇 Additional comments (1)
ghost/i18n/locales/pt/search.json (1)

2-8: Translations look good – no issues found.

Keys, placeholders and tone are consistent with the rest of the pt locale.

@TurnGui
Copy link
Contributor Author

TurnGui commented Jul 13, 2025

Im open to any doubts about the translations, im a portuguese native speaker but im not an expert :)

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link
Member

@cathysarisky cathysarisky left a comment

Choose a reason for hiding this comment

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

Hey there, @TurnGui ! Thanks for this contribution!
Sorry for the delayed review. I was enjoying my vacation last week. 🏖️

I'm delighted you're contributing the missing strings for Portuguese!

Two notes: 1) Best/Oldest/Newest are a set of dropdown labels for sorting comments on posts. AI doesn't seem to like what you've got there, so maybe that context will be helpful in deciding if it is right or you are.
2) Looks like the existing translations use seu, while your new ones use tu. In general, we've tended towards informal for most languages, except in cases where that informality would be perceived as rude. I don't have an opinion on whether formal or informal is most correct for Portuguese as spoken in Portugal, but we should have all the translations use the same formality. Could you either revise your submission to match the existing translations, or edit the existing translations to match your submission?


📋 My AI helper 🤖 left you a few comments. I always believe the human over the AI, so feel free to disregard them after you take a careful look!

Leave me a comment when you're satisfied with everything, please. :)

🤖 AI: Overall the translations are clear and most terminology is well chosen. I noticed some formal vs informal inconsistencies (especially pronouns) and a few minor omissions of punctuation and articles. Once those are aligned, the tone and style will be consistent across the files. Obrigado!


Drafted with my new i18n tooling - feedback welcome

@@ -11,17 +11,17 @@
"Add your expertise": "",
"Already a member?": "Já é membro?",
"Anonymous": "Anónimo",
"Are you sure?": "",
"Are you sure?": "Tens a certeza?",
Copy link
Member

Choose a reason for hiding this comment

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

🤖 AI: I think the translation uses the informal form (“Tens a certeza?”), but elsewhere you tend to use the formal register. Could we use “Tem a certeza?” to keep formality consistent?

Copy link
Contributor Author

@TurnGui TurnGui Jul 21, 2025

Choose a reason for hiding this comment

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

Hi @josephine -- I hope you had a great vacation and thank you so much for the thoughtful feedback. 👍 I 100% agree with the AI on this case and have already updated my PR accordingly.

"Become a member of {publication} to start commenting.": "Torne-se um membro do {publication} para comentar.",
"Become a paid member of {publication} to start commenting.": "Torne-se um membro pago do {publication} para comentar. ",
"Best": "",
"Best": "Melhor",
Copy link
Member

Choose a reason for hiding this comment

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

🤖 AI: In the sorting context (“Best”), perhaps the plural “Melhores” feels more natural than the singular “Melhor”. What do you think?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I 100% agree with the AI on this case and have already updated my PR accordingly.

"Cancel": "Cancelar",
"Comment": "Comentar",
"Complete your profile": "Complete o seu perfil",
"Delete": "Eliminar",
"Deleted": "",
"Deleted": "Apagado",
Copy link
Member

Choose a reason for hiding this comment

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

🤖 AI: For consistency with “Eliminar” (Delete), maybe use “Eliminado” instead of “Apagado” here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I 100% agree with the AI on this case and have already updated my PR accordingly.

"Deleted member": "Membro eliminado",
"Deleting": "",
"Deleting": "Apagando",
Copy link
Member

Choose a reason for hiding this comment

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

🤖 AI: Similarly, to match “Eliminar”/“Eliminado”, would “Eliminando” work better than “Apagando”?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I 100% agree with the AI on this case and have already updated my PR accordingly.

@@ -42,15 +42,15 @@
"Member discussion": "Discussão para membros",
"Name": "Nome",
"Neurosurgeon": "neurocirurgião",
"Newest": "",
"Oldest": "",
"Newest": "Mais novo",
Copy link
Member

Choose a reason for hiding this comment

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

🤖 AI: For “Newest” in a comments sort dropdown, consider “Mais recentes” instead of “Mais novo” so it matches plural context.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I 100% agree with the AI on this case and have already updated my PR accordingly.

"You are receiving this because you are a <strong>%%{status}%% subscriber</strong> to {site}.": "Está a receber este e-mail porque é subscritor/a de {site}, com uma <strong>subscrição %%{status}%%</strong>.",
"You can also copy & paste this URL into your browser:": "Pode também copiar e colar este URL no seu navegador:",
"You can unsubscribe from these notifications at {profileUrl}.": "",
"You just tried to access your account from a new device.": "",
"You just tried to access your account from a new device.": "Acabaste de aceder a tua conta de um novo dispositivo",
Copy link
Member

Choose a reason for hiding this comment

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

🤖 AI: Your translation is missing the period and uses “tu”. Please add the period and consider “seu” instead of “teu”.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I 100% agree with the AI on this case and have already updated my PR accordingly.

@@ -73,5 +73,5 @@
"Your subscription has expired.": "A sua subscrição expirou.",
"Your subscription will expire on {date}.": "A sua subscrição expira a {date}.",
"Your subscription will renew on {date}.": "A sua subscrição será renovada a {date}.",
"Your verification code for {siteTitle}": ""
"Your verification code for {siteTitle}": "O teu código de verificação para {siteTitle}"
Copy link
Member

Choose a reason for hiding this comment

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

🤖 AI: This also uses the informal “teu”; to stay consistent, maybe use “seu código de verificação para {siteTitle}”.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I 100% agree with the AI on this case and have already updated my PR accordingly.

@@ -13,12 +13,12 @@
"+1 (123) 456-7890": "",
"A login link has been sent to your inbox. If it doesn't arrive in 3 minutes, be sure to check your spam folder.": "Um link de acesso foi enviado para o seu email. Se o email não chegar dentro de 3 minutos, verifique a pasta de spam/lixo do seu email.",
"Account": "Conta",
"Account details updated successfully": "",
"Account details updated successfully": "Detalhes de conta atualizados com sucesso",
Copy link
Member

Choose a reason for hiding this comment

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

🤖 AI: I think it should be “Detalhes da conta atualizados com sucesso” (including the article “da”) to read naturally in Portuguese.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I 100% agree with the AI on this case and have already updated my PR accordingly.

@@ -28,17 +28,17 @@
"Cancel subscription": "Cancelar subscrição",
"Cancellation reason": "Motivo para o cancelamento",
"Change": "Alterar",
"Change plan": "",
"Change plan": "Mudar plano",
Copy link
Member

Choose a reason for hiding this comment

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

🤖 AI: Earlier “Change” is translated as “Alterar”; for “Change plan”, perhaps use “Alterar plano” instead of “Mudar plano” for consistency.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I 100% agree with the AI on this case and have already updated my PR accordingly.

"Choose your newsletters": "Escolha as suas newsletters",
"Click here to retry": "Clique aqui para tentar novamente",
"Close": "Fechar",
"Comment preferences updated.": "",
"Comment preferences updated.": "Preferências de comentários atualizadas",
Copy link
Member

Choose a reason for hiding this comment

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

🤖 AI: The English ends with a period (“Comment preferences updated.”); please add the period at the end of the translation.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I 100% agree with the AI on this case and have already updated my PR accordingly.

TurnGui and others added 4 commits July 21, 2025 14:02
Update comments.json based on the feedback
Update ghost.json according to the feedback
Update portal.json according to feedback
Copy link
Member

@cathysarisky cathysarisky left a comment

Choose a reason for hiding this comment

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

Hi TurnGui! Sorry for the second round of comments - just a few things remaining.

📋 My AI helper 🤖 left you a few comments. I always believe the human over the AI, so feel free to disregard them after you take a careful look!

Thank you! Obrigado!


Drafted with my new i18n tooling - feedback welcome

"You are receiving this because you are a <strong>%%{status}%% subscriber</strong> to {site}.": "Está a receber este e-mail porque é subscritor/a de {site}, com uma <strong>subscrição %%{status}%%</strong>.",
"You can also copy & paste this URL into your browser:": "Pode também copiar e colar este URL no seu navegador:",
"You can unsubscribe from these notifications at {profileUrl}.": "",
"You just tried to access your account from a new device.": "",
"You just tried to access your account from a new device.": "Acabou de aceder a sua conta de um novo dispositivo.",
Copy link
Member

Choose a reason for hiding this comment

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

🤖 AI: I think the preposition and article could be combined here: “Acabou de aceder à sua conta a partir de um novo dispositivo.” This makes clear it was attempted from a new device.

Copy link
Member

Choose a reason for hiding this comment

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

Human Cathy says: Are you missing an accent mark? à sua conta ?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes that would be it , im missing an accent mark, sorry for the mistake

"Failed to update billing information, please try again": "",
"Failed to update account data": "Erro ao atualizar dados da conta",
"Failed to update account details": "Erro ao atualizar detalhes da conta",
"Failed to update billing information, please try again": "Erro ao atualizar dados de faturamento, por favor tente de novo",
Copy link
Member

Choose a reason for hiding this comment

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

🤖 AI: I suspect you mixed “faturamento” (Brazilian) and “faturação” (European). Earlier you used “Informações de faturação”. Perhaps use “Erro ao atualizar dados de faturação, por favor tente de novo” for consistency?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I have to agree that faturação would be a better fit there !

add missing accent, per original translator
@cathysarisky cathysarisky enabled auto-merge (squash) July 28, 2025 01:05
@cathysarisky cathysarisky merged commit 75fdb82 into TryGhost:main Jul 28, 2025
25 checks passed
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