Skip to content

Conversation

@kunaljaykam
Copy link
Member

@kunaljaykam kunaljaykam commented Nov 6, 2025

How It Was Applied

  1. Extracted the zip file pt_BR_files.zip, you can find it attached in the jira
  2. Copied files using rsync with the following approach:
    rsync -av --exclude='/target/'
    --include='/'
    --include='
    _pt_BR.properties'
    --exclude='*'
    /home/kunaljaykam/Downloads/
    /home/kunaljaykam/sakaiproject/sakai/
  3. This ensured:
    - Only source files were copied (excluded /target/ directories)
    - Directory structure was preserved
    - All *_pt_BR.properties files were transferred
  4. Verified the application:
    - All files copied successfully
    - No conflicts or errors
    - Content validated (translations from LARC/TIDIA-Ae project)

Summary by CodeRabbit

  • Localization
    • Large refresh of Brazilian Portuguese (pt_BR) translations across many tools — wording, punctuation and encoding fixes for consistency (calendar, content, chat, announcements, assignments, LTI, gradebook, messaging/forums, lessons, mail/archive, scheduler, etc.).
  • New Features
    • Added many pt_BR UI strings for cloud storage integrations, archive/batch workflows, calendar iCal/subscriptions, import/export dialogs, notifications/preferences, role/permission texts, and expanded metadata (LOM) labels.
  • Bug Fixes
    • Corrected punctuation, capitalization and placeholder formatting in numerous UI messages.

@kunaljaykam kunaljaykam requested a review from ern November 6, 2025 06:28
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 6, 2025

Walkthrough

Bulk additions and edits of Brazilian Portuguese (pt_BR) resource bundles across many modules: new .properties files, updated translation values, some keys renamed/split, and header attribution standardization. No executable code or public API signatures were changed.

Changes

Cohort / File(s) Change Summary
Admin & site tooling
admin-tools/src/bundle/*_pt_BR.properties, admin-su/src/bundle/tool-tool-su_pt_BR.properties, config/localization/bundles/.../tools_pt_BR.properties, config/localization/bundles/.../site-impl_pt_BR.properties
Header attribution updates; added/edited admin/site translations (aliases, archive import/export and batch-term keys, memory nosplit variants, site title validation keys, large users bundle expansion, tool titles/descriptions).
Announcements & notifications
announcement/**/src/**/*_pt_BR.properties, announcement/announcement-impl/.../annc-access_pt_BR.properties, announcement/announcement-impl/.../annc-noti-prefs_pt_BR.properties, announcement/announcement-impl/.../siteemaanc_pt_BR.properties
Header changes; added sender-info keys; renamed colon-suffixed variants; preference wording updates and widget/display key adjustments.
BasicLTI / LTI
basiclti/**/src/**/*_pt_BR.properties
Many new LTI-related pt_BR bundles and keys added (API, BLIS, impl, portlet, tool, oidc, email, iframe, reporting) with UI labels, errors and field translations.
Calendar & scheduler
calendar/.../calendar_pt_BR.properties, jobscheduler/**/Messages_pt_BR.properties
Major calendar localization expansion (views, iCal, import/export, permissions, many public keys) and multiple scheduler job translation files added/updated.
Content & content-tooling
content/content-bundles/resources/*_pt_BR.properties, content/content-tool/tool/src/bundle/*_pt_BR.properties, content/content-copyright/**/copyright_pt_BR.properties
Large content bundle updates: LOM metadata additions, access/role label expansions, new permissions bundle, copyright choice keys, cloud-storage helper keys, attachment UI strings.
Plagiarism / content-review
content-review/impl/*/src/main/resources/*_pt_BR.properties
New pt_BR bundles for Compilatio, Turnitin, Urkund, Vericite with file-type labels, submission/report messages and standardized encodings.
Cloud storage integrations
cloud-storage/googledrive/.../Messages_pt_BR.properties, cloud-storage/onedrive/.../Messages_pt_BR.properties, content/content-tool/tool/src/bundle/helper_pt_BR.properties
Added Google Drive and OneDrive pt_BR messages and helper bundle cloudstorage/drive keys for integration UI.
Chat, messaging & recent
chat/**/src/**/*_pt_BR.properties, message/message-tool/.../recent_pt_BR.properties, message/search-adapters/.../Messages_pt_BR.properties
Chat bundles refined (history/unread/new message keys, controls, permissions), recent/message bundles restructured/rekeyed, message adapter translations added.
EntityBroker / REST / descriptors
entitybroker/core-providers/src/java/*_pt_BR.properties, entitybroker/rest/src/java/*_pt_BR.properties, entitybroker/mocks/src/java/*_pt_BR.properties
Added/updated REST/documentation translations (membership, notify, session.becomeuser, site actions, describe/batch) and mock describe strings.
Email, mailarchive & mail sender
emailtemplateservice/.../messages_pt_BR.properties, mailarchive/**/src/bundle/*_pt_BR.properties, mailsender/api/src/bundle/mailsender_pt_BR.properties
Email template locale label changes, prefs wording updates, new mailarchive action/permission keys, updated mailarchive messages, and added attachment-size error key.
JSF / widgets / pager
jsf/**/Configuration_pt_BR.properties, jsf/**/bundle/pager_pt_BR.properties, jsf2/jsf2-widgets/**/pager_pt_BR.properties, jsf2/jsf2-widgets/src/java/.../Configuration_pt_BR.properties
Normalized config values, adjusted pager labels and rendering flags (some commented or replaced with English variants), header cleanups.
Misc modules & tools
e.g. assignment/**, commons/**, citations/**, conversations/**, dav/**, delegatedaccess/**, lessonbuilder/**, mycalendar/**, podcasts/**, portal/**, rwiki/**, samigo/**, message/**
Numerous pt_BR resource additions and refinements across many modules: new translation files, permission descriptions, date-format keys, some key renames (e.g., dav: contents_ofcontents_of_id), and general localization fixes.
Header attribution standardization
**/*_pt_BR.properties
Standardized/updated translator header comments across many bundles (translator credits changed to LARC/USP or similar).

Possibly related PRs

  • sakaiiproject/sakai#14169 — Overlaps on BasicLTI LTI pt_BR localization changes (file/key-level overlap with LTI-related translation edits).

Suggested reviewers

  • ern
  • csev

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title directly references the main change: updating Brazilian Portuguese (pt_BR) translation resources as requested by a specific person. It accurately summarizes the primary objective of the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 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 d8fa926 and 0addecb.

📒 Files selected for processing (1)
  • portal/portal-impl/impl/src/bundle/sitenav_pt_BR.properties (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: ottenhoff
Repo: sakaiproject/sakai PR: 14087
File: portal/portal-impl/impl/src/bundle/sitenav.properties:230-233
Timestamp: 2025-09-22T12:50:58.927Z
Learning: Java ResourceBundle system automatically falls back to the default properties file (e.g., sitenav.properties) when keys are missing from locale-specific bundles (e.g., sitenav_fr_FR.properties). There is no need to add untranslated properties to locale bundles - this creates unnecessary maintenance overhead.
📚 Learning: 2025-10-07T16:11:33.008Z
Learnt from: CR
Repo: sakaiproject/sakai PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-07T16:11:33.008Z
Learning: Applies to **/sakai-notifications.properties : Use sakai-notifications.properties for internationalized PWA installation messages

Applied to files:

  • portal/portal-impl/impl/src/bundle/sitenav_pt_BR.properties
📚 Learning: 2025-09-22T12:50:58.927Z
Learnt from: ottenhoff
Repo: sakaiproject/sakai PR: 14087
File: portal/portal-impl/impl/src/bundle/sitenav.properties:230-233
Timestamp: 2025-09-22T12:50:58.927Z
Learning: Java ResourceBundle system automatically falls back to the default properties file (e.g., sitenav.properties) when keys are missing from locale-specific bundles (e.g., sitenav_fr_FR.properties). There is no need to add untranslated properties to locale bundles - this creates unnecessary maintenance overhead.

Applied to files:

  • portal/portal-impl/impl/src/bundle/sitenav_pt_BR.properties
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: maven-build
  • GitHub Check: sakai-deploy
  • GitHub Check: maven-build

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

Caution

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

⚠️ Outside diff range comments (2)
delegatedaccess/tool/src/java/org/sakaiproject/delegatedaccess/tool/DelegatedAccessApplication_pt_BR.properties (1)

1-208: Fix property key typo: rename delegatedAcessTitle to delegatedAccessTitle.

The pt_BR file contains a misspelled property key delegatedAcessTitle (missing 'c' in "Access") that doesn't exist in the English file. The correct key is delegatedAccessTitle. This mismatch will cause runtime property lookup failures when the Portuguese Brazil locale is used.

Line ~172: Change delegatedAcessTitle=Delegar Acesso to delegatedAccessTitle=Delegar Acesso

dav/dav/src/bundle/org/sakaiproject/tool/dav/bundle/Messages_pt_BR.properties (1)

6-15: Messages_mn.properties requires update to complete the key rename

The verification confirms the Java code correctly uses the new key name (contents_of_id in DavServlet.java:1711). However, the key rename is incomplete:

  • Found: Messages_mn.properties (line 7) still contains the old key name contents_of instead of contents_of_id
  • Expected: All 18 language bundles should be updated; currently only Messages_mn.properties was missed
  • Pattern confirmed: Other 17 language files consistently updated with the new key name and SAK-25981 deprecation marker

Update Messages_mn.properties line 7 to rename contents_ofcontents_of_id and add the SAK-25981 comment marker to maintain consistency.

🧹 Nitpick comments (10)
jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/cm/Messages_pt_BR.properties (1)

36-36: Add trailing newline to the file.

Properties files should end with a newline character for Unix convention and to avoid potential parsing issues in some tooling.

Apply this change to add a trailing newline:

-org.sakaiproject.component.app.scheduler.jobs.cm.processor.sis.UserProcessor.description=Substitui a propriedade de configura\u00e7\u00e3o do servidor filename@org.sakaiproject.component.app.scheduler.jobs.cm.processor.sis.UserProcessor
+org.sakaiproject.component.app.scheduler.jobs.cm.processor.sis.UserProcessor.description=Substitui a propriedade de configura\u00e7\u00e3o do servidor filename@org.sakaiproject.component.app.scheduler.jobs.cm.processor.sis.UserProcessor
content-review/impl/turnitin-oc/src/main/resources/turnitin-oc_pt_BR.properties (1)

29-35: Formatting inconsistency: missing spaces around = operator.

Line 29 uses submission.error.ioexception= with no spaces, while surrounding error messages (lines 25-27, 30-35) use consistent spacing like submission.error.unexpected.response = . Properties files typically maintain consistent formatting. Ensure this is intentional or align with the standard format used throughout the file.

-submission.error.ioexception=Ocorreu um problema de comunica\u00e7\u00e3o com o Turnitin
+submission.error.ioexception = Ocorreu um problema de comunica\u00e7\u00e3o com o Turnitin
message/message-tool/tool/src/bundle/recent_pt_BR.properties (2)

34-34: Remove trailing whitespace on parameterized message lines.

Several lines with {0} placeholders have trailing spaces that may cause issues in some properties file parsers or cause unnecessary diffs in version control.

Apply this diff to remove trailing whitespace:

-cus.dis1.tool    = Exibir {0} 
+cus.dis1.tool    = Exibir {0}

-cus.youare.for = Você está configurando as opções para {0}.
+cus.youare.for = Você está configurando as opções para {0}.

-gen.show.sub  = Exibir o assunto de {0} 
+gen.show.sub  = Exibir o assunto de {0}

-gen.show.bod  = Exibir o conteúdo de {0} 
+gen.show.bod  = Exibir o conteúdo de {0}

Also applies to: 42-42, 71-72


87-89: Consider translating commented-out SAK-25996 keys or marking them explicitly as "not yet localized".

Lines 88-89 and 99-102 contain English placeholder keys (e.g., "Recent", "Reset", "Help", "dock", "float"). If these are intentional placeholders for a future localization sprint, consider adding a clarifying comment above the block to avoid confusion.

Example enhancement:

+# TODO: SAK-25996 localization wave — keys below pending translation
 #SAK-25996
 #recent1 = Recent
 #recent2 = Recent Main Chat Room Messages

Also applies to: 98-102

commons/api/src/bundle/commons_pt_BR.properties (1)

44-44: Normalize Unicode escape sequence casing.

The Unicode escape sequences in this line use inconsistent casing for hexadecimal digits: \u00E3 (uppercase), \u00e3 (lowercase), \u00EA (uppercase), \u00ea (lowercase), \u00F5 (uppercase), \u00f5 (lowercase). While functionally equivalent, for maintainability and consistency across the translation file, normalize all Unicode escapes to use lowercase hexadecimal digits (the convention used in most of the file).

-permissions_not_set = As Permiss\u00f5es podem n\u00e3o ter sido definidas. Se voc\u00ea consegue ver o bot\u00E3o Permiss\u00F5es acima, clique nele. Se voc\u00EA n\u00E3o consegue ver o bot\u00e3o, entre em contato com seu administrador.
+permissions_not_set = As Permiss\u00f5es podem n\u00e3o ter sido definidas. Se voc\u00ea consegue ver o bot\u00e3o Permiss\u00f5es acima, clique nele. Se voc\u00ea n\u00e3o consegue ver o bot\u00e3o, entre em contato com seu administrador.
config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/tool/tools_pt_BR.properties (1)

25-25: Trailing whitespace inconsistencies.

Several lines contain trailing spaces after the translated values (e.g., lines 25, 118, 123, 125, 139, 195–199). Verify whether these are intentional formatting or artifacts from the extraction/rsync process. If not intentional, remove trailing spaces for consistency.

Also applies to: 118-118, 123-123, 125-125, 139-139, 195-199

conversations/api/src/main/resources/conversations_notifications_pt_BR.properties (1)

9-9: Minor: Remove trailing spaces in notification messages.

Lines 9, 11, 13, and 15 appear to have trailing spaces at the end of the message values. These should be cleaned up to maintain consistency and avoid potential rendering issues in notifications.

-noti.instructoranswer.message=Uma nova resposta para '{0}' foi enviada por um professor. Voc\u00ea pode visualiz\u00e1-la  
+noti.instructoranswer.message=Uma nova resposta para '{0}' foi enviada por um professor. Voc\u00ea pode visualiz\u00e1-la
-noti.instructorreply.message=Um professor respondeu sua quest\u00e3o '{0}'. Voc\u00ea pode visualiz\u00e1-la  
+noti.instructorreply.message=Um professor respondeu sua quest\u00e3o '{0}'. Voc\u00ea pode visualiz\u00e1-la
-noti.newquestion.message=Uma nova quest\u00e3o, '{0}', foi criada. Voc\u00ea pode visualiz\u00e1-la  
+noti.newquestion.message=Uma nova quest\u00e3o, '{0}', foi criada. Voc\u00ea pode visualiz\u00e1-la
-noti.reply.message={0} foi respondida em sua publica\u00e7\u00e3o. Voc\u00ea pode visualiz\u00e1-la  
+noti.reply.message={0} foi respondida em sua publica\u00e7\u00e3o. Voc\u00ea pode visualiz\u00e1-la

Also applies to: 11-11, 13-13, 15-15

basiclti/basiclti-portlet/src/bundle/basiclti_pt_BR.properties (1)

1-119: LGTM with minor consistency note.

File is well-structured with proper formatting, HTML markup preservation, and correct Unicode escapes. Placeholders are consistently used for parameterized messages. One minor style inconsistency on line 114: \u00E3 uses uppercase hex (should be lowercase \u00e3 to match the rest of the file), but this doesn't affect functionality.

Optional: For consistency with the rest of the file, change line 114 to use lowercase hex:

-gradable.detail=<br/>Cuidado ao alterar esse valor. Se você alterar, as notas existentes <strong>n\u00E3O</strong> serão movidas para o novo item do Quadro de notas.
+gradable.detail=<br/>Cuidado ao alterar esse valor. Se você alterar, as notas existentes <strong>n\u00e3o</strong> serão movidas para o novo item do Quadro de notas.
config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/siteemacon/siteemacon_pt_BR.properties (1)

6-6: Inconsistent spacing around equals signs in property keys.

The file lacks consistent formatting around the = separator. Some keys have no space after = (lines 6, 22, 28, 32, 42, 48) while others do (lines 8, 20, 34, etc.). Consistent formatting improves readability and maintainability.

Consider standardizing spacing across all property definitions. For example, adopt the pattern key = value (with spaces) or key=value (without spaces) consistently throughout the file.

Also applies to: 22-22, 28-28, 32-32, 42-42, 48-48

announcement/announcement-impl/impl/src/bundle/siteemaanc_pt_BR.properties (1)

16-16: Whitespace formatting issues in notification tag.

Line 16 contains literal \n escape sequences within the properties value. Verify this is the intended format for your properties file parser (some frameworks convert these; others require actual line breaks). Line 18 contains only whitespace—consider removing or consolidating trailing blank lines for consistency.

Also applies to: 18-18

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e1eb097 and b771e51.

📒 Files selected for processing (107)
  • access/access-impl/impl/src/bundle/access_pt_BR.properties (2 hunks)
  • admin-su/src/bundle/tool-tool-su_pt_BR.properties (1 hunks)
  • admin-tools/src/bundle/aliases_pt_BR.properties (4 hunks)
  • admin-tools/src/bundle/archive_pt_BR.properties (2 hunks)
  • admin-tools/src/bundle/authz-tool_pt_BR.properties (10 hunks)
  • admin-tools/src/bundle/memory_pt_BR.properties (1 hunks)
  • admin-tools/src/bundle/sites_pt_BR.properties (11 hunks)
  • admin-tools/src/bundle/users_pt_BR.properties (7 hunks)
  • announcement/announcement-api/api/src/bundle/announcement_pt_BR.properties (11 hunks)
  • announcement/announcement-impl/impl/src/bundle/annc-access_pt_BR.properties (1 hunks)
  • announcement/announcement-impl/impl/src/bundle/annc-noti-prefs_pt_BR.properties (1 hunks)
  • announcement/announcement-impl/impl/src/bundle/siteemaanc_pt_BR.properties (1 hunks)
  • assignment/api/src/java/org/sakaiproject/assignment/api/conversion/messages_pt_BR.properties (1 hunks)
  • assignment/api/src/resources/asn_pt_BR.properties (1 hunks)
  • assignment/api/src/resources/assignment-noti-prefs_pt_BR.properties (1 hunks)
  • basiclti/basiclti-api/src/bundle/org/sakaiproject/lti/impl/LTIReportingJob_pt_BR.properties (1 hunks)
  • basiclti/basiclti-blis/src/bundle/blis_pt_BR.properties (1 hunks)
  • basiclti/basiclti-blis/src/bundle/lti._pt_BR.properties (1 hunks)
  • basiclti/basiclti-impl/src/bundle/basicltisvc_pt_BR.properties (1 hunks)
  • basiclti/basiclti-impl/src/bundle/email_pt_BR.properties (1 hunks)
  • basiclti/basiclti-impl/src/bundle/ltiservice_pt_BR.properties (1 hunks)
  • basiclti/basiclti-oidc/src/bundle/lti11_pt_BR.properties (1 hunks)
  • basiclti/basiclti-oidc/src/bundle/oidc_pt_BR.properties (1 hunks)
  • basiclti/basiclti-portlet/src/bundle/basiclti-events_pt_BR.properties (1 hunks)
  • basiclti/basiclti-portlet/src/bundle/basiclti_pt_BR.properties (1 hunks)
  • basiclti/basiclti-tool/src/bundle/ltitool_pt_BR.properties (1 hunks)
  • basiclti/web-ifp/src/bundle/iframe_pt_BR.properties (1 hunks)
  • calendar/calendar-bundles/resources/calendar_pt_BR.properties (8 hunks)
  • chat/chat-api/api/src/bundle/chat_pt_BR.properties (7 hunks)
  • chat/chat-impl/impl/src/bundle/chat-channel_pt_BR.properties (0 hunks)
  • chat/chat-impl/impl/src/bundle/chat-message_pt_BR.properties (1 hunks)
  • chat/chat-impl/impl/src/bundle/chat_pt_BR.properties (1 hunks)
  • citations/citations-osid/xserver/src/bundle/data/RepositoryManager_pt_BR.properties (1 hunks)
  • citations/citations-util/util/src/bundle/citations_pt_BR.properties (15 hunks)
  • cloud-storage/googledrive/tool/src/main/resources/Messages_pt_BR.properties (1 hunks)
  • cloud-storage/onedrive/tool/src/main/resources/Messages_pt_BR.properties (1 hunks)
  • commons/api/src/bundle/commons_pt_BR.properties (1 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/authzimpl/authz-impl_pt_BR.properties (1 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/content/content_pt_BR.properties (8 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/content_type/content_type_names_pt_BR.properties (5 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/emailimpl/email-impl_pt_BR.properties (1 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/siteemacon/siteemacon_pt_BR.properties (1 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/siteimpl/site-impl_pt_BR.properties (1 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/tool/tools_pt_BR.properties (8 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/type/types_pt_BR.properties (4 hunks)
  • content-review/impl/compilatio/src/main/resources/compilatio_pt_BR.properties (1 hunks)
  • content-review/impl/turnitin-oc/src/main/resources/turnitin-oc_pt_BR.properties (1 hunks)
  • content-review/impl/turnitin/src/main/resources/turnitin_pt_BR.properties (1 hunks)
  • content-review/impl/urkund/src/main/resources/urkund_pt_BR.properties (1 hunks)
  • content-review/impl/vericite/src/main/resources/vericite_pt_BR.properties (1 hunks)
  • content/content-bundles/resources/content_pt_BR.properties (10 hunks)
  • content/content-bundles/resources/metadata_pt_BR.properties (1 hunks)
  • content/content-bundles/resources/permissions_pt_BR.properties (1 hunks)
  • content/content-bundles/resources/types_pt_BR.properties (12 hunks)
  • content/content-copyright/impl/src/bundle/org/sakaiproject/content/copyright/copyright_pt_BR.properties (1 hunks)
  • content/content-tool/tool/src/bundle/dropbox_pt_BR.properties (1 hunks)
  • content/content-tool/tool/src/bundle/helper_pt_BR.properties (4 hunks)
  • content/content-tool/tool/src/bundle/right_pt_BR.properties (1 hunks)
  • conversations/api/src/main/resources/conversations_noti_prefs_pt_BR.properties (1 hunks)
  • conversations/api/src/main/resources/conversations_notifications_pt_BR.properties (1 hunks)
  • dav/dav/src/bundle/org/sakaiproject/tool/dav/bundle/Messages_pt_BR.properties (1 hunks)
  • delegatedaccess/tool/src/java/org/sakaiproject/delegatedaccess/tool/DelegatedAccessApplication_pt_BR.properties (7 hunks)
  • delegatedaccess/tool/src/webapp/bundle/Messages_pt_BR.properties (1 hunks)
  • edu-services/cm-service/cm-api/api/src/bundle/enrollmentstatus_pt_BR.properties (1 hunks)
  • emailtemplateservice/tool/src/main/resources/messages_pt_BR.properties (2 hunks)
  • entitybroker/core-providers/src/java/membership_pt_BR.properties (1 hunks)
  • entitybroker/core-providers/src/java/notify_pt_BR.properties (1 hunks)
  • entitybroker/core-providers/src/java/server-config_pt_BR.properties (1 hunks)
  • entitybroker/core-providers/src/java/session_pt_BR.properties (2 hunks)
  • entitybroker/core-providers/src/java/site_pt_BR.properties (3 hunks)
  • entitybroker/core-providers/src/java/user_pt_BR.properties (1 hunks)
  • entitybroker/mocks/src/java/actions-prefix_pt_BR.properties (1 hunks)
  • entitybroker/mocks/src/java/describe-prefix_pt_BR.properties (1 hunks)
  • entitybroker/rest/src/java/batch_pt_BR.properties (2 hunks)
  • entitybroker/rest/src/java/describe_pt_BR.properties (2 hunks)
  • feedback/src/main/resources/org/sakaiproject/feedback_pt_BR.properties (1 hunks)
  • gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties (1 hunks)
  • help/help-component/src/bundle/TutorialMessages_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/Messages_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/backfillrole/Messages_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/backfilltool/Messages_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/cm/Messages_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/eventpurge/Messages_pt_BR.properties (0 hunks)
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/logmessage/Messages_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-test-component-shared/src/bundle/org/sakaiproject/component/app/scheduler/jobs/test/Messages_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-tool/src/bundle/org/sakaiproject/tool/scheduler/bundle/Messages_pt_BR.properties (1 hunks)
  • jsf/jsf-widgets/src/java/org/sakaiproject/jsf/Configuration_pt_BR.properties (0 hunks)
  • jsf/jsf-widgets/src/java/org/sakaiproject/jsf/bundle/pager_pt_BR.properties (1 hunks)
  • jsf2/jsf2-widgets/src/bundle/pager_pt_BR.properties (1 hunks)
  • jsf2/jsf2-widgets/src/java/org/sakaiproject/jsf2/Configuration_pt_BR.properties (1 hunks)
  • lessonbuilder/components/src/resources/subnav_pt_BR.properties (1 hunks)
  • lessonbuilder/tool/src/resources/Events_pt_BR.properties (1 hunks)
  • lessonbuilder/tool/src/resources/messages_pt_BR.properties (1 hunks)
  • mailarchive/mailarchive-api/api/src/bundle/email_pt_BR.properties (1 hunks)
  • mailarchive/mailarchive-api/api/src/bundle/mailarchive_pt_BR.properties (1 hunks)
  • mailarchive/mailarchive-impl/impl/src/bundle/mailarchive-noti-prefs_pt_BR.properties (1 hunks)
  • mailarchive/mailarchive-impl/impl/src/bundle/siteemaanc_pt_BR.properties (1 hunks)
  • mailarchive/mailarchive-subetha/src/bundle/sakaimailet_pt_BR.properties (1 hunks)
  • mailarchive/mailarchive-tool/tool/src/bundle/email_pt_BR.properties (1 hunks)
  • mailarchive/mailarchive-tool/tool/src/bundle/permissions_pt_BR.properties (1 hunks)
  • mailsender/api/src/bundle/mailsender_pt_BR.properties (3 hunks)
  • message/message-tool/tool/src/bundle/recent_pt_BR.properties (3 hunks)
  • message/search-adapters/impl/src/bundle/org/sakaiproject/search/component/adapter/message/bundle/Messages_pt_BR.properties (1 hunks)
  • msgcntr/messageforums-api/src/bundle/org/sakaiproject/api/app/messagecenter/bundle/Messages_pt_BR.properties (34 hunks)
  • msgcntr/messageforums-app/src/bundle/forums_pt_BR.properties (2 hunks)
  • mycalendar/src/java/org/sakaiproject/mycalendar/WidgetApplication_pt_BR.properties (1 hunks)
  • mycalendar/src/webapp/bundle/Messages_pt_BR.properties (1 hunks)
⛔ Files not processed due to max files limit (53)
  • myconnections/src/java/org/sakaiproject/myconnections/WidgetApplication_pt_BR.properties
  • oauth/tool/src/resources/org/sakaiproject/oauth/tool/admin/pages/ConsumerAdministration_pt_BR.properties
  • oauth/tool/src/resources/org/sakaiproject/oauth/tool/admin/pages/ListConsumers_pt_BR.properties
  • oauth/tool/src/resources/org/sakaiproject/oauth/tool/pages/SakaiPage_pt_BR.properties
  • oauth/tool/src/resources/org/sakaiproject/oauth/tool/user/pages/ListAccessors_pt_BR.properties
  • pasystem/pasystem-impl/impl/src/resources/org/sakaiproject/pasystem/impl/i18n/pasystem_pt_BR.properties
  • pasystem/pasystem-tool/tool/src/java/org/sakaiproject/pasystem/tool/i18n/pasystem_pt_BR.properties
  • podcasts/podcasts-api/src/bundle/org/sakaiproject/api/podcasts/bundle/Messages_pt_BR.properties
  • podcasts/podcasts-api/src/bundle/org/sakaiproject/api/podcasts/bundle/permissions_ar_pt_BR.properties
  • polls/api/src/bundle/org/sakaiproject/poll/bundle/Messages_pt_BR.properties
  • polls/impl/src/bundle/notifyDeletedOption_pt_BR.properties
  • polls/tool/src/java/poll-option_pt_BR.properties
  • polls/tool/src/java/poll-vote_pt_BR.properties
  • polls/tool/src/java/poll_pt_BR.properties
  • polls/tool/src/java/polls_pt_BR.properties
  • portal/portal-api/api/src/bundle/castor_pt_BR.properties
  • portal/portal-chat/tool/src/java/portal-chat_pt_BR.properties
  • portal/portal-impl/impl/src/bundle/bullhorns_pt_BR.properties
  • portal/portal-impl/impl/src/bundle/sitenav_pt_BR.properties
  • portal/portal-service-impl/impl/src/bundle/connection-manager_pt_BR.properties
  • portal/portal-service-impl/impl/src/bundle/jumptotop_pt_BR.properties
  • portal/portal-service-impl/impl/src/bundle/profile-popup_pt_BR.properties
  • portal/portal-util/util/src/bundle/portal-util_pt_BR.properties
  • postem/postem-app/src/main/resources/Messages_pt_BR.properties
  • presence/presence-tool/tool/src/bundle/admin_pt_BR.properties
  • presence/presence-tool/tool/src/bundle/presence_pt_BR.properties
  • profile2/api/src/resources/ProfileApplication_pt_BR.properties
  • profile2/api/src/resources/my_pt_BR.properties
  • profile2/api/src/resources/profile-events_pt_BR.properties
  • profile2/api/src/resources/profile-message_pt_BR.properties
  • profile2/api/src/resources/profile-status_pt_BR.properties
  • profile2/api/src/resources/profile_pt_BR.properties
  • profile2/api/src/resources/roster_pt_BR.properties
  • profile2/tool/src/java/org/apache/wicket/markup/html/form/upload/MultiFileUploadField_pt_BR.properties
  • profile2/util/src/java/org/sakaiproject/profile2/util/messages_pt_BR.properties
  • providers/kerberos/src/test-bundle/sample-test_pt_BR.properties
  • providers/unboundid/src/resources/UserAttributeRoleProvider_pt_BR.properties
  • reset-pass/account-validator-tool/src/resources/messages_pt_BR.properties
  • reset-pass/reset-pass/src/main/resources/Messages_pt_BR.properties
  • roster2/bundle/src/bundle/roster_pt_BR.properties
  • rubrics/api/src/main/bundle/rubrics_pt_BR.properties
  • rwiki/rwiki-impl/impl/src/bundle/uk/ac/cam/caret/sakai/rwiki/component/bundle/Messages_pt_BR.properties
  • rwiki/rwiki-tool/tool/src/bundle/uk/ac/cam/caret/sakai/rwiki/tool/bundle/Messages_pt_BR.properties
  • rwiki/rwiki-tool/tool/src/bundle/uk/ac/cam/caret/sakai/rwiki/tool/bundle/PrepopulatePages_pt_BR.properties
  • rwiki/rwiki-tool/tool/src/bundle/wiki_pt_BR.properties
  • rwiki/rwiki-util/radeox/src/bundle/org/radeox/Messages_pt_BR.properties
  • rwiki/rwiki-util/radeox/src/bundle/radeox_markup_pt_BR.properties
  • rwiki/rwiki-util/radeox/src/bundle/radeox_messages_pt_BR.properties
  • rwiki/rwiki-util/radeox/src/bundle/simplelog_pt_BR.properties
  • rwiki/rwiki-util/util/src/bundle/uk/ac/cam/caret/sakai/rwiki/utils/bundle/Messages_pt_BR.properties
  • samigo/samigo-app/src/java/org/sakaiproject/tool/assessment/bundle/AssessmentSettingsMessages_pt_BR.properties
  • samigo/samigo-app/src/java/org/sakaiproject/tool/assessment/bundle/AuthorFrontDoorMessages_pt_BR.properties
  • samigo/samigo-app/src/java/org/sakaiproject/tool/assessment/bundle/AuthorImportExport_pt_BR.properties
💤 Files with no reviewable changes (3)
  • chat/chat-impl/impl/src/bundle/chat-channel_pt_BR.properties
  • jsf/jsf-widgets/src/java/org/sakaiproject/jsf/Configuration_pt_BR.properties
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/eventpurge/Messages_pt_BR.properties
🧰 Additional context used
🧠 Learnings (5)
📚 Learning: 2025-10-07T16:11:33.008Z
Learnt from: CR
Repo: sakaiproject/sakai PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-07T16:11:33.008Z
Learning: Applies to **/sakai-notifications.properties : Use sakai-notifications.properties for internationalized PWA installation messages

Applied to files:

  • message/search-adapters/impl/src/bundle/org/sakaiproject/search/component/adapter/message/bundle/Messages_pt_BR.properties
  • mycalendar/src/java/org/sakaiproject/mycalendar/WidgetApplication_pt_BR.properties
  • gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties
  • basiclti/basiclti-portlet/src/bundle/basiclti_pt_BR.properties
  • commons/api/src/bundle/commons_pt_BR.properties
  • lessonbuilder/components/src/resources/subnav_pt_BR.properties
  • conversations/api/src/main/resources/conversations_noti_prefs_pt_BR.properties
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/logmessage/Messages_pt_BR.properties
  • basiclti/basiclti-blis/src/bundle/blis_pt_BR.properties
  • basiclti/basiclti-portlet/src/bundle/basiclti-events_pt_BR.properties
  • basiclti/web-ifp/src/bundle/iframe_pt_BR.properties
  • delegatedaccess/tool/src/java/org/sakaiproject/delegatedaccess/tool/DelegatedAccessApplication_pt_BR.properties
  • emailtemplateservice/tool/src/main/resources/messages_pt_BR.properties
  • mailarchive/mailarchive-api/api/src/bundle/email_pt_BR.properties
  • feedback/src/main/resources/org/sakaiproject/feedback_pt_BR.properties
  • mailarchive/mailarchive-impl/impl/src/bundle/siteemaanc_pt_BR.properties
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/Messages_pt_BR.properties
  • mailsender/api/src/bundle/mailsender_pt_BR.properties
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/backfilltool/Messages_pt_BR.properties
  • basiclti/basiclti-impl/src/bundle/email_pt_BR.properties
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/cm/Messages_pt_BR.properties
  • basiclti/basiclti-impl/src/bundle/basicltisvc_pt_BR.properties
  • msgcntr/messageforums-api/src/bundle/org/sakaiproject/api/app/messagecenter/bundle/Messages_pt_BR.properties
  • announcement/announcement-impl/impl/src/bundle/annc-access_pt_BR.properties
  • mailarchive/mailarchive-tool/tool/src/bundle/email_pt_BR.properties
  • basiclti/basiclti-blis/src/bundle/lti._pt_BR.properties
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/emailimpl/email-impl_pt_BR.properties
  • mailarchive/mailarchive-subetha/src/bundle/sakaimailet_pt_BR.properties
  • announcement/announcement-impl/impl/src/bundle/siteemaanc_pt_BR.properties
  • jobscheduler/scheduler-test-component-shared/src/bundle/org/sakaiproject/component/app/scheduler/jobs/test/Messages_pt_BR.properties
  • content/content-bundles/resources/content_pt_BR.properties
  • announcement/announcement-api/api/src/bundle/announcement_pt_BR.properties
  • assignment/api/src/java/org/sakaiproject/assignment/api/conversion/messages_pt_BR.properties
  • entitybroker/core-providers/src/java/notify_pt_BR.properties
  • conversations/api/src/main/resources/conversations_notifications_pt_BR.properties
  • content/content-tool/tool/src/bundle/helper_pt_BR.properties
  • content-review/impl/compilatio/src/main/resources/compilatio_pt_BR.properties
  • content-review/impl/urkund/src/main/resources/urkund_pt_BR.properties
  • basiclti/basiclti-impl/src/bundle/ltiservice_pt_BR.properties
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/backfillrole/Messages_pt_BR.properties
  • assignment/api/src/resources/assignment-noti-prefs_pt_BR.properties
  • admin-tools/src/bundle/sites_pt_BR.properties
  • jobscheduler/scheduler-tool/src/bundle/org/sakaiproject/tool/scheduler/bundle/Messages_pt_BR.properties
  • mailarchive/mailarchive-impl/impl/src/bundle/mailarchive-noti-prefs_pt_BR.properties
  • message/message-tool/tool/src/bundle/recent_pt_BR.properties
  • lessonbuilder/tool/src/resources/messages_pt_BR.properties
  • admin-tools/src/bundle/archive_pt_BR.properties
  • access/access-impl/impl/src/bundle/access_pt_BR.properties
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/siteimpl/site-impl_pt_BR.properties
  • help/help-component/src/bundle/TutorialMessages_pt_BR.properties
  • admin-tools/src/bundle/users_pt_BR.properties
  • admin-tools/src/bundle/authz-tool_pt_BR.properties
  • content/content-bundles/resources/types_pt_BR.properties
  • announcement/announcement-impl/impl/src/bundle/annc-noti-prefs_pt_BR.properties
  • basiclti/basiclti-api/src/bundle/org/sakaiproject/lti/impl/LTIReportingJob_pt_BR.properties
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/content/content_pt_BR.properties
  • content/content-tool/tool/src/bundle/right_pt_BR.properties
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/tool/tools_pt_BR.properties
  • chat/chat-api/api/src/bundle/chat_pt_BR.properties
  • jsf2/jsf2-widgets/src/bundle/pager_pt_BR.properties
📚 Learning: 2025-09-22T12:50:58.927Z
Learnt from: ottenhoff
Repo: sakaiproject/sakai PR: 14087
File: portal/portal-impl/impl/src/bundle/sitenav.properties:230-233
Timestamp: 2025-09-22T12:50:58.927Z
Learning: Java ResourceBundle system automatically falls back to the default properties file (e.g., sitenav.properties) when keys are missing from locale-specific bundles (e.g., sitenav_fr_FR.properties). There is no need to add untranslated properties to locale bundles - this creates unnecessary maintenance overhead.

Applied to files:

  • gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties
  • lessonbuilder/components/src/resources/subnav_pt_BR.properties
  • basiclti/basiclti-blis/src/bundle/blis_pt_BR.properties
  • basiclti/basiclti-impl/src/bundle/email_pt_BR.properties
  • basiclti/basiclti-impl/src/bundle/basicltisvc_pt_BR.properties
  • mailarchive/mailarchive-tool/tool/src/bundle/email_pt_BR.properties
  • content/content-bundles/resources/content_pt_BR.properties
  • content-review/impl/urkund/src/main/resources/urkund_pt_BR.properties
  • basiclti/basiclti-impl/src/bundle/ltiservice_pt_BR.properties
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/siteimpl/site-impl_pt_BR.properties
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/tool/tools_pt_BR.properties
📚 Learning: 2025-08-11T22:32:34.770Z
Learnt from: CR
Repo: sakaiproject/sakai PR: 0
File: .cursor/rules/logging-rule.mdc:0-0
Timestamp: 2025-08-11T22:32:34.770Z
Learning: Applies to **/*.java : Write log messages and code comments in English; never translate log messages

Applied to files:

  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/logmessage/Messages_pt_BR.properties
📚 Learning: 2025-10-07T15:11:27.298Z
Learnt from: ottenhoff
Repo: sakaiproject/sakai PR: 0
File: :0-0
Timestamp: 2025-10-07T15:11:27.298Z
Learning: In samigo’s Total Scores view (samigo/samigo-app/src/webapp/jsf/evaluation/totalScores.jsp), mailto links were hidden after commit dee05746 (PR #12312, SAK-49674) added a render check requiring email.fromEmailAddress to be non-empty; PR #14154 (SAK-52058) restores visibility by checking only description.email.

Applied to files:

  • emailtemplateservice/tool/src/main/resources/messages_pt_BR.properties
  • mailarchive/mailarchive-subetha/src/bundle/sakaimailet_pt_BR.properties
📚 Learning: 2025-09-12T09:45:31.330Z
Learnt from: danielmerino
Repo: sakaiproject/sakai PR: 0
File: :0-0
Timestamp: 2025-09-12T09:45:31.330Z
Learning: RSF datepicker initial values with timezone formats "+02" work but "+02:00" don't work due to inconsistent JavaScript Date parsing and HTML5 datetime-local input requirements. The solution is to normalize datetime values by parsing them with new Date() and reformatting them without timezone information.

Applied to files:

  • jsf2/jsf2-widgets/src/java/org/sakaiproject/jsf2/Configuration_pt_BR.properties
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: maven-build
  • GitHub Check: sakai-deploy
  • GitHub Check: maven-build

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.

Review continued from previous batch...

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

♻️ Duplicate comments (12)
announcement/announcement-impl/impl/src/bundle/siteemaanc_pt_BR.properties (1)

12-13: DUPLICATE: Critical issue with mixed English/Portuguese text in notification headers (lines 12-13).

This issue was already flagged in past reviews. Lines 12-13 require fixes before merge:

Line 12: Contains untranslated English phrases "in the", "site", and "at". Missing the preposition "por" (by).

Current:  Um aviso foi adicionado "{2}" in the "{0}" site at (<a href="{1}">{1}</a>)
Problem:  English text "in the", "site", "at" breaks Portuguese grammar

Line 13: Uses "site" in English context; pattern inconsistent with lines 10-11 and line 12.

Current:  Um an\u00fancio foi atualizado por "{2}" no "{0}" site em (<a href="{1}">{1}</a>)
Problem:  Mixes Portuguese prepositions with English "site"; capitalization inconsistent ("an\u00fancio" vs "Aviso")

Apply this diff to correct both lines and align with the Portuguese pattern established in lines 10-11:

-noti.header.sender.info.add= Um aviso foi adicionado "{2}" in the "{0}" site at (<a href="{1}">{1}</a>)
-noti.header.sender.info.update=Um an\u00fancio foi atualizado por "{2}" no "{0}" site em (<a href="{1}">{1}</a>)
+noti.header.sender.info.add=Um aviso foi adicionado por "{2}" no site "{0}" em (<a href="{1}">{1}</a>)
+noti.header.sender.info.update=Um aviso foi atualizado por "{2}" no site "{0}" em (<a href="{1}">{1}</a>)

Changes align with:

  • Proper Portuguese grammar: "por" (by), "no site" (in the site), "em" (at/in)
  • Consistent phrasing with lines 10-11 structure
  • Proper key naming capitalization ("aviso" as per line 6/10-11)
  • Preserved placeholder order {0}, {1}, {2}
citations/citations-util/util/src/bundle/citations_pt_BR.properties (1)

176-176: Fix partially untranslated English text on line 176.

The string still contains the English word "Add" instead of the Portuguese equivalent. This is inconsistent with the established pattern in the file where "Adicionar" is used for similar action buttons (see lines 170 and 174). This issue was flagged in a previous review and remains unresolved.

Apply this diff to complete the translation:

-nested.add.subsection.button= Add Subseção
+nested.add.subsection.button= Adicionar Subseção
entitybroker/mocks/src/java/describe-prefix_pt_BR.properties (1)

9-10: Fix Portuguese grammar: "um prova" → "uma prova" (duplicate of past review).

The feminine noun "prova" requires the feminine article "uma", not the masculine "um". This issue was previously flagged and remains unresolved.

Apply this diff:

-describe-prefix.Deleteable = Isso descreve um prova de Deleteable
-describe-prefix.Createable = Isso descreve um prova de Createable
+describe-prefix.Deleteable = Isso descreve uma prova de Deleteable
+describe-prefix.Createable = Isso descreve uma prova de Createable
assignment/api/src/resources/assignment-noti-prefs_pt_BR.properties (1)

1-27: Add trailing newline at end of file (duplicate of previously flagged issue).

This file should end with a newline character, consistent with Java properties file conventions and other property files in the Sakai project. While a previous review flagged this issue and marked it as addressed in commit 77d9f7a, the current annotation suggests the trailing newline may not have been properly applied.

Add a blank line or newline character after line 27 to ensure the file ends with a newline.

entitybroker/core-providers/src/java/session_pt_BR.properties (1)

22-22: Fix escape sequences in the translation entry (unresolved from prior review).

The value contains backslashes in the middle of the string (\Sintaxe: and \onde). In Java properties files, backslash is an escape character; these invalid escape sequences will cause malformed text rendering. Backslashes should only appear at the end of lines for line continuation, as used elsewhere in this file (e.g., lines 7–8, 9–12).

Apply this diff to remove the interior backslashes:

-session.action.becomeuser = Permite que o usu\u00e1rio se torne outro usu\u00e1rio assumindo que o usu\u00e1rio solicitante \u00e9 um administrador Sakai. \Sintaxe: serverUrl/direct/session/becomeuser/:USERID: , \onde :USERID: \u00e9 um userId ou um userEid
+session.action.becomeuser = Permite que o usu\u00e1rio se torne outro usu\u00e1rio assumindo que o usu\u00e1rio solicitante \u00e9 um administrador Sakai. Sintaxe: serverUrl/direct/session/becomeuser/:USERID: , onde :USERID: \u00e9 um userId ou um userEid

(The Unicode escapes \u00e9 remain valid; only the interior backslashes before Sintaxe and onde are removed.)

content/content-bundles/resources/metadata_pt_BR.properties (1)

82-82: Fix persistent typos in LOM descriptions — duplicate issue from previous review.

The three typos flagged in the previous review remain unfixed. These must be corrected before merge:

  • Line 82: "aprendizage,""aprendizagem."
  • Line 89: "p\u00faplico-alvo""público-alvo"
  • Line 91: "apredizagem""aprendizagem"

Apply this diff:

-descr.lom_status=O status de conclus\u00e3o ou condi\u00e7\u00e3o deste objeto de aprendizage,. 
+descr.lom_status=O status de conclus\u00e3o ou condi\u00e7\u00e3o deste objeto de aprendizagem.

-descr.lom_learning_time=Tempo t\u00edpico ou aproximado que leva para trabalhar com ou por meio deste objeto de aprendizagem para o tipo de p\u00faplico-alvo pretendido.
+descr.lom_learning_time=Tempo t\u00edpico ou aproximado que leva para trabalhar com ou por meio deste objeto de aprendizagem para o tipo de público-alvo pretendido.

-descr.lom_technical_requirements=As habilidades t\u00e9cnicas necess\u00e1rias para usar este objeto de apredizagem.
+descr.lom_technical_requirements=As habilidades t\u00e9cnicas necess\u00e1rias para usar este objeto de aprendizagem.

Also applies to: 89-89, 91-91

chat/chat-api/api/src/bundle/chat_pt_BR.properties (5)

84-84: Still contains incorrect Portuguese preposition.

Line 84 still has the grammatical error flagged in previous review. "posterior que" is not grammatically correct Portuguese; should use "posterior à" (with feminine agreement for "data").

-A data final deve ser igual ou posterior que data de início.
+A data final deve ser igual ou posterior à data de início.

92-92: Clarify incomplete week label abbreviation.

Line 92 still contains the abbreviated label flagged in previous review. "Sem" is incomplete in Portuguese context. Use the full word "Semana" or properly abbreviated "Sem." for clarity and consistency.

-custom_date_entry_week_header=Sem
+custom_date_entry_week_header=Semana

152-152: Still contains typo in "Criaçãoo" with extra 'o'.

Line 152 still has the spelling error flagged in previous review. "Data de Criaçãoo" has an extra 'o'; should be "Data de Criação" (single 'o').

-channel_creation_date=Data de Criaçãoo
+channel_creation_date=Data de Criação

211-211: Still contains untranslated English text.

Line 211 still has English text flagged in previous review. "show_last_range_error" value is still in English; should be fully translated to Brazilian Portuguese while preserving placeholder order.

-show_last_range_error=Valor must be between {0} and {1}
+show_last_range_error=O valor deve estar entre {0} e {1}.

215-215: Inconsistent hyphenation of "Bate-Papo".

Line 215 still uses space-separated "Bate Papo" instead of the hyphenated form. Line 10 shows the correct convention: "Sala de Bate-Papo". Maintain consistent hyphenation throughout per Brazilian Portuguese standard.

-main = Sala de Bate Papo
+main = Sala de Bate-Papo
config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/content_type/content_type_names_pt_BR.properties (1)

166-171: Fix typo and remove excessive whitespace (previously flagged—still unresolved).

These issues were already identified in a prior review and remain unfixed:

  • Line 166: arquive is a typo (should be arquivo)
  • Lines 167–171: Excessive leading whitespace (12–16 spaces) that will appear in the UI

Apply this diff to fix both issues:

-application/x-gzip=arquive Gzip'ed
-application/x-crossover-doc=              Crossover Doc
-text/x-comma-separated-values=              CSV
-text/x-tex=                Texto
-video/mp4=            V~deo Mpeg4
-video/x-m4v=            V~deo Mpeg4
+application/x-gzip=arquivo Gzip
+application/x-crossover-doc=Crossover Doc
+text/x-comma-separated-values=CSV
+text/x-tex=Texto
+video/mp4=Vídeo MPEG-4
+video/x-m4v=Vídeo MPEG-4

Note: Lines 170–171 also have the encoding corruption (V~deo instead of Vídeo). Once the file is re-encoded to UTF-8 (per the critical issue above), this will be automatically corrected.

🧹 Nitpick comments (3)
jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/cm/Messages_pt_BR.properties (1)

36-36: Add a trailing newline at end of file.

The file ends without a trailing newline, which is a standard convention for text files and Unix/Linux best practices. This can also prevent issues with some tools and version control systems.

Apply this diff to add a trailing newline:

 org.sakaiproject.component.app.scheduler.jobs.cm.processor.sis.UserProcessor.filename=Arquivo de Usu\u00e1rios
 org.sakaiproject.component.app.scheduler.jobs.cm.processor.sis.UserProcessor.description=Substitui a propriedade de configura\u00e7\u00e3o do servidor filename@org.sakaiproject.component.app.scheduler.jobs.cm.processor.sis.UserProcessor
+
rwiki/rwiki-tool/tool/src/bundle/uk/ac/cam/caret/sakai/rwiki/tool/bundle/Messages_pt_BR.properties (1)

185-185: Minor: Normalize Unicode escape sequence casing for consistency.

Line 185 uses uppercase hex digit (\u00F5) while the rest of the file consistently uses lowercase hex digits in Unicode escapes (e.g., \u00e3, \u00f5). While functionally equivalent in Java properties files, this is inconsistent with the file's convention.

-jsp_info = Informa\u00e7\u00F5es 
+jsp_info = Informa\u00e7\u00f5es 
samigo/samigo-app/src/java/org/sakaiproject/tool/assessment/bundle/AuthorFrontDoorMessages_pt_BR.properties (1)

68-69: Remove excessive blank lines.

Lines 68–69, 85, and 105 contain extraneous blank lines that can be removed for cleaner formatting.

 # signs for author tool		
 separator=| 
 dash=-
 column=: 
-

-
 
 # Title of links: starts with t_

And:

 retracted_for_edit=Essa avaliação foi retirada para edição. Clique no título da avaliação, clique em "Editar" e depois em "Republicar" para disponibilizá-la para os alunos
-
 
 datatables_sSearch=Buscar:

And remove trailing blank line at line 105.

Also applies to: 85-85, 105-105

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b771e51 and 77d9f7a.

📒 Files selected for processing (53)
  • access/access-impl/impl/src/bundle/access_pt_BR.properties (1 hunks)
  • admin-su/src/bundle/tool-tool-su_pt_BR.properties (1 hunks)
  • admin-tools/src/bundle/aliases_pt_BR.properties (1 hunks)
  • admin-tools/src/bundle/archive_pt_BR.properties (1 hunks)
  • admin-tools/src/bundle/authz-tool_pt_BR.properties (1 hunks)
  • admin-tools/src/bundle/memory_pt_BR.properties (1 hunks)
  • admin-tools/src/bundle/sites_pt_BR.properties (1 hunks)
  • admin-tools/src/bundle/users_pt_BR.properties (1 hunks)
  • announcement/announcement-impl/impl/src/bundle/annc-access_pt_BR.properties (1 hunks)
  • announcement/announcement-impl/impl/src/bundle/annc-noti-prefs_pt_BR.properties (1 hunks)
  • announcement/announcement-impl/impl/src/bundle/siteemaanc_pt_BR.properties (1 hunks)
  • assignment/api/src/resources/assignment-noti-prefs_pt_BR.properties (1 hunks)
  • basiclti/basiclti-api/src/bundle/org/sakaiproject/lti/impl/LTIReportingJob_pt_BR.properties (1 hunks)
  • basiclti/basiclti-impl/src/bundle/email_pt_BR.properties (1 hunks)
  • calendar/calendar-bundles/resources/calendar_pt_BR.properties (1 hunks)
  • chat/chat-api/api/src/bundle/chat_pt_BR.properties (7 hunks)
  • chat/chat-impl/impl/src/bundle/chat-message_pt_BR.properties (1 hunks)
  • chat/chat-impl/impl/src/bundle/chat_pt_BR.properties (1 hunks)
  • chat/chat-impl/impl/src/bundle/permissions_pt_BR.properties (1 hunks)
  • citations/citations-util/util/src/bundle/citations_pt_BR.properties (15 hunks)
  • commons/api/src/bundle/commons_pt_BR.properties (1 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/content/content_pt_BR.properties (8 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/content_type/content_type_names_pt_BR.properties (5 hunks)
  • content/content-bundles/resources/metadata_pt_BR.properties (1 hunks)
  • content/content-tool/tool/src/bundle/helper_pt_BR.properties (4 hunks)
  • dav/dav/src/bundle/org/sakaiproject/tool/dav/bundle/Messages_pt_BR.properties (1 hunks)
  • delegatedaccess/tool/src/webapp/bundle/Messages_pt_BR.properties (1 hunks)
  • entitybroker/core-providers/src/java/notify_pt_BR.properties (1 hunks)
  • entitybroker/core-providers/src/java/session_pt_BR.properties (2 hunks)
  • entitybroker/mocks/src/java/actions-prefix_pt_BR.properties (1 hunks)
  • entitybroker/mocks/src/java/describe-prefix_pt_BR.properties (1 hunks)
  • entitybroker/rest/src/java/batch_pt_BR.properties (2 hunks)
  • feedback/src/main/resources/org/sakaiproject/feedback_pt_BR.properties (1 hunks)
  • gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/Messages_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/backfillrole/Messages_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/backfilltool/Messages_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/cm/Messages_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/eventpurge/Messages_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-test-component-shared/src/bundle/org/sakaiproject/component/app/scheduler/jobs/test/Messages_pt_BR.properties (1 hunks)
  • lessonbuilder/components/src/resources/subnav_pt_BR.properties (1 hunks)
  • lessonbuilder/tool/src/resources/messages_pt_BR.properties (1 hunks)
  • mycalendar/src/java/org/sakaiproject/mycalendar/WidgetApplication_pt_BR.properties (1 hunks)
  • podcasts/podcasts-api/src/bundle/org/sakaiproject/api/podcasts/bundle/Messages_pt_BR.properties (5 hunks)
  • polls/impl/src/bundle/notifyDeletedOption_pt_BR.properties (1 hunks)
  • portal/portal-service-impl/impl/src/bundle/connection-manager_pt_BR.properties (1 hunks)
  • portal/portal-service-impl/impl/src/bundle/jumptotop_pt_BR.properties (1 hunks)
  • profile2/api/src/resources/my_pt_BR.properties (1 hunks)
  • profile2/api/src/resources/profile-message_pt_BR.properties (1 hunks)
  • rwiki/rwiki-tool/tool/src/bundle/uk/ac/cam/caret/sakai/rwiki/tool/bundle/Messages_pt_BR.properties (13 hunks)
  • rwiki/rwiki-tool/tool/src/bundle/wiki_pt_BR.properties (1 hunks)
  • rwiki/rwiki-util/radeox/src/bundle/radeox_messages_pt_BR.properties (1 hunks)
  • samigo/samigo-app/src/java/org/sakaiproject/tool/assessment/bundle/AuthorFrontDoorMessages_pt_BR.properties (3 hunks)
✅ Files skipped from review due to trivial changes (5)
  • chat/chat-impl/impl/src/bundle/permissions_pt_BR.properties
  • rwiki/rwiki-tool/tool/src/bundle/wiki_pt_BR.properties
  • profile2/api/src/resources/my_pt_BR.properties
  • admin-su/src/bundle/tool-tool-su_pt_BR.properties
  • polls/impl/src/bundle/notifyDeletedOption_pt_BR.properties
🚧 Files skipped from review as they are similar to previous changes (21)
  • lessonbuilder/components/src/resources/subnav_pt_BR.properties
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/backfilltool/Messages_pt_BR.properties
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/backfillrole/Messages_pt_BR.properties
  • mycalendar/src/java/org/sakaiproject/mycalendar/WidgetApplication_pt_BR.properties
  • announcement/announcement-impl/impl/src/bundle/annc-noti-prefs_pt_BR.properties
  • chat/chat-impl/impl/src/bundle/chat_pt_BR.properties
  • entitybroker/rest/src/java/batch_pt_BR.properties
  • lessonbuilder/tool/src/resources/messages_pt_BR.properties
  • access/access-impl/impl/src/bundle/access_pt_BR.properties
  • feedback/src/main/resources/org/sakaiproject/feedback_pt_BR.properties
  • admin-tools/src/bundle/memory_pt_BR.properties
  • gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties
  • commons/api/src/bundle/commons_pt_BR.properties
  • admin-tools/src/bundle/aliases_pt_BR.properties
  • jobscheduler/scheduler-test-component-shared/src/bundle/org/sakaiproject/component/app/scheduler/jobs/test/Messages_pt_BR.properties
  • delegatedaccess/tool/src/webapp/bundle/Messages_pt_BR.properties
  • basiclti/basiclti-impl/src/bundle/email_pt_BR.properties
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/content/content_pt_BR.properties
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/Messages_pt_BR.properties
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/eventpurge/Messages_pt_BR.properties
  • entitybroker/core-providers/src/java/notify_pt_BR.properties
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: CR
Repo: sakaiproject/sakai PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-07T16:11:33.008Z
Learning: Applies to **/sakai-notifications.properties : Use sakai-notifications.properties for internationalized PWA installation messages
📚 Learning: 2025-10-07T16:11:33.008Z
Learnt from: CR
Repo: sakaiproject/sakai PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-07T16:11:33.008Z
Learning: Applies to **/sakai-notifications.properties : Use sakai-notifications.properties for internationalized PWA installation messages

Applied to files:

  • profile2/api/src/resources/profile-message_pt_BR.properties
  • announcement/announcement-impl/impl/src/bundle/siteemaanc_pt_BR.properties
  • rwiki/rwiki-tool/tool/src/bundle/uk/ac/cam/caret/sakai/rwiki/tool/bundle/Messages_pt_BR.properties
  • portal/portal-service-impl/impl/src/bundle/connection-manager_pt_BR.properties
  • admin-tools/src/bundle/sites_pt_BR.properties
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/cm/Messages_pt_BR.properties
  • podcasts/podcasts-api/src/bundle/org/sakaiproject/api/podcasts/bundle/Messages_pt_BR.properties
  • announcement/announcement-impl/impl/src/bundle/annc-access_pt_BR.properties
  • assignment/api/src/resources/assignment-noti-prefs_pt_BR.properties
  • samigo/samigo-app/src/java/org/sakaiproject/tool/assessment/bundle/AuthorFrontDoorMessages_pt_BR.properties
  • chat/chat-api/api/src/bundle/chat_pt_BR.properties
  • basiclti/basiclti-api/src/bundle/org/sakaiproject/lti/impl/LTIReportingJob_pt_BR.properties
  • admin-tools/src/bundle/users_pt_BR.properties
  • calendar/calendar-bundles/resources/calendar_pt_BR.properties
📚 Learning: 2025-09-22T12:50:58.927Z
Learnt from: ottenhoff
Repo: sakaiproject/sakai PR: 14087
File: portal/portal-impl/impl/src/bundle/sitenav.properties:230-233
Timestamp: 2025-09-22T12:50:58.927Z
Learning: Java ResourceBundle system automatically falls back to the default properties file (e.g., sitenav.properties) when keys are missing from locale-specific bundles (e.g., sitenav_fr_FR.properties). There is no need to add untranslated properties to locale bundles - this creates unnecessary maintenance overhead.

Applied to files:

  • admin-tools/src/bundle/sites_pt_BR.properties
  • admin-tools/src/bundle/users_pt_BR.properties
  • calendar/calendar-bundles/resources/calendar_pt_BR.properties
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: sakai-deploy
  • GitHub Check: maven-build
  • GitHub Check: maven-build
🔇 Additional comments (31)
chat/chat-impl/impl/src/bundle/chat-message_pt_BR.properties (1)

1-5: LGTM: Properly formatted Brazilian Portuguese translation file.

The attribution header is well-structured, and the translation entry is correctly formatted. The file follows standard .properties file conventions with valid syntax and appropriate Portuguese localization.

portal/portal-service-impl/impl/src/bundle/jumptotop_pt_BR.properties (1)

1-5: LGTM!

The Brazilian Portuguese translation resource file is well-formed and correctly structured. The translation key and value are valid, header attribution is appropriate, and the file follows standard Java properties conventions. The file integrates cleanly into the portal bundle structure as part of the SAK-51854 pt_BR localization effort.

portal/portal-service-impl/impl/src/bundle/connection-manager_pt_BR.properties (1)

1-26: Translation file is well-formatted and complete.

The Brazilian Portuguese localization file follows proper .properties format conventions with correct Unicode escape sequences for special characters, consistent key naming, and clear, user-friendly translations. Confirmation messages and pluralized messages (singular/plural result counts) are properly handled.

Please verify that all connection_manager_* keys in this file correspond to their counterparts in the English source file to ensure translation completeness and consistency across the UI.

entitybroker/mocks/src/java/actions-prefix_pt_BR.properties (1)

9-10: LGTM on grammar and translation updates.

Unlike the first file, this file correctly uses the feminine article "uma" paired with "descrição". The sentence structure ("Essa é uma descrição de prova de [Entity]") is grammatically sound in Portuguese.

jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/cm/Messages_pt_BR.properties (3)

1-4: Translation file header is properly attributed.

The file includes appropriate attribution to LARC/TIDIA-Ae Project as the translation source. This maintains transparency about the origin of the localization resources.


5-6: Unicode escaping for Portuguese characters is correctly applied.

Portuguese diacritical marks (á, í) are properly represented using Unicode escapes (\u00e1, \u00ed), which is the standard approach for non-ASCII characters in Java properties files.


8-36: Verified: English Messages.properties exists with all matching keys.

The verification confirms the English Messages.properties file at jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/cm/Messages.properties exists and contains all 30 keys matching the pt_BR translation file. No issues detected.

entitybroker/core-providers/src/java/session_pt_BR.properties (3)

1-4: Attribution header is clear and appropriate.

The header correctly credits the LARC/TIDIA-Ae translation sources, providing clear provenance for the Portuguese localization.


13-13: Typo fix in session.Deleteable is correct.

The correction from "immediata menta" to "imediatamente" improves the Portuguese grammar and readability.


26-26: Trailing whitespace cleanup is good.

Removing the trailing whitespace in session.field.userEid aligns with file hygiene best practices.

rwiki/rwiki-tool/tool/src/bundle/uk/ac/cam/caret/sakai/rwiki/tool/bundle/Messages_pt_BR.properties (1)

1-523: Translation bundle is complete and correctly formatted.

The file is a valid Java properties translation bundle with proper Unicode escaping for Portuguese special characters. All changed entries (marked with ~) follow the correct format and contain contextually appropriate translations. The file includes both basic UI strings and expanded help texts for permissions and features. No encoding errors or syntax issues detected.

samigo/samigo-app/src/java/org/sakaiproject/tool/assessment/bundle/AuthorFrontDoorMessages_pt_BR.properties (1)

64-66: Inconsistent trailing whitespace in symbol keys.

Lines 64 and 66 have trailing spaces after their values, while line 65 does not. Verify whether these spaces are intentional for UI rendering, or if they should be removed for consistency.

If spaces are unintentional, apply this diff:

-separator=| 
+separator=|
-column=: 
+column=:
admin-tools/src/bundle/sites_pt_BR.properties (2)

1-10: Proper header attribution and consistent formatting.


269-271: Well-structured validation error messages for site titles. The addition of the three new public keys (siteTitle.htmlStrippedToEmpty, siteTitle.maxLength, siteTitle.Empty) provides clear, localized feedback for form validation. Translations are appropriately phrased.

admin-tools/src/bundle/authz-tool_pt_BR.properties (1)

1-10: Complete and consistent authorization/roles terminology. The translations maintain clear terminology distinction between realms (Dom\u00ednio), roles (Papel), and permissions (Permiss\u00f5es). All UI strings are properly localized and formatted.

admin-tools/src/bundle/archive_pt_BR.properties (2)

38-53: Comprehensive batch and download functionality additions. The new batch/term workflow keys (Lines 38–46) and download section keys (Lines 47–53) provide complete localization for expanded archive functionality. Translations are clear and user-appropriate.


1-10: No breaking changes found in archive_pt_BR.properties. The old key archive.vm.archive does not exist in this file—it was properly replaced with the new variants (archive.vm.archive1, archive.vm.archive.batch, archive.vm.archive.single). The Velocity templates in admin-tools/src/webapp/vm/archive/ only reference the new keys, so functionality remains intact. The old key exists in some other locale files (Swedish, Mongolian, Hindi), but those are unrelated to this specific change.

admin-tools/src/bundle/users_pt_BR.properties (3)

1-10: Complete user management localization with proper structure. The file provides comprehensive translations for user administration workflows. Formatting and encoding are consistent throughout.


113-115: Appropriate i18n restriction notice preserved. The comment correctly flags that import file column header values must not be translated to maintain compatibility with import parsing logic. This demonstrates proper localization awareness.


137-144: Standard password strength messaging. The password strength terminology (Muito fraca, Fraca, Moderada, Forte) uses industry-standard phrasing and aligns with security best practices.

podcasts/podcasts-api/src/bundle/org/sakaiproject/api/podcasts/bundle/Messages_pt_BR.properties (2)

1-133: Localization file structure and content appear sound.

The overall structure of the pt_BR properties file is well-formed with:

  • Proper key=value pairs throughout
  • Correct Unicode escapes for special characters (ç, ã, õ, etc.)
  • Consistent translation quality and contextual appropriateness
  • No obvious typos or encoding issues in the Portuguese text

The addition of new UI action labels (lines 22-45), date formats (lines 51-55), user prompts (lines 82-83, 108), and permission descriptors (line 133) aligns with the stated PR objective to add Brazilian Portuguese localization.


51-51: Simplify non-standard day-of-week format pattern.

Line 51 uses EEEEEE (six E's), which Java's SimpleDateFormat treats as equivalent to EEEE (four E's). While it parses correctly, the extra characters are non-standard and reduce clarity. Simplify to EEEE for consistency with SimpleDateFormat conventions. Note: This pattern appears across all locale properties files and may benefit from systematic review.

profile2/api/src/resources/profile-message_pt_BR.properties (1)

1-10: Missing English base file for profile-message localization.

The PR adds profile2/api/src/resources/profile-message_pt_BR.properties without including the required English base file (profile-message.properties). Java i18n patterns require a default language file for fallback resolution. Without it, these translation keys will fail at runtime.

The correct structure should follow the existing pattern (e.g., profile-events):

  • English base: profile2/api/src/main/resources/profile-message.properties
  • Portuguese variant: profile2/api/src/main/resources/profile-message_pt_BR.properties

Add the missing English base file with corresponding message definitions before this translation file.

⛔ Skipped due to learnings
Learnt from: CR
Repo: sakaiproject/sakai PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-07T16:11:33.008Z
Learning: Applies to **/sakai-notifications.properties : Use sakai-notifications.properties for internationalized PWA installation messages
Learnt from: ottenhoff
Repo: sakaiproject/sakai PR: 14087
File: portal/portal-impl/impl/src/bundle/sitenav.properties:230-233
Timestamp: 2025-09-22T12:50:58.927Z
Learning: Java ResourceBundle system automatically falls back to the default properties file (e.g., sitenav.properties) when keys are missing from locale-specific bundles (e.g., sitenav_fr_FR.properties). There is no need to add untranslated properties to locale bundles - this creates unnecessary maintenance overhead.
content/content-tool/tool/src/bundle/helper_pt_BR.properties (3)

145-145: Verify translation accuracy for "revoke" action.

Line 145 maps cloudstorage.revoke to Cancelar (cancel), but "revoke" typically implies withdrawing/revoking permissions rather than canceling. Verify this translation aligns with the intended action and UI context. If the action is truly about removing/revoking access, consider Revogar or Remover Acesso instead.


7-127: Formatting and punctuation refinements are acceptable.

The whitespace, punctuation, and capitalization adjustments throughout lines 7–127 appear to be minor localization refinements (e.g., spacing around dashes, consistent capitalization in labels like "Atenção:") that improve consistency and readability. Unicode escape sequences for Portuguese characters (ã, é, ç) are correctly formatted.


141-160: Most new cloud storage and drive integration keys are properly used, but one appears orphaned.

Verification found that 15 of the 16 new keys added in lines 141–160 are correctly referenced in Velocity templates (sakai_filepicker_attach.vm, cloudstorage_onedrive_picker.vm, cloudstorage_googledrive_picker.vm). However, googledrive.table_summary is defined but never used in any template—the Google Drive picker uses a jstree component instead of an HTML table, unlike the OneDrive picker. Either remove this key or add it to the template if table functionality is planned.

dav/dav/src/bundle/org/sakaiproject/tool/dav/bundle/Messages_pt_BR.properties (3)

9-11: Clarify intent of commented-out keys.

Lines 10–11 contain commented-out keys marked under SAK-25981. Clarify whether these are:

  • Temporarily commented pending removal in a follow-up PR.
  • Permanently deprecated and should be removed from the file.
  • Awaiting a parallel update to other language files.

If these keys are no longer used, consider removing them entirely to keep the file clean and avoid future confusion.


7-7: No issues found. The key rename is correct and aligns with codebase expectations.

The verification confirms that the Java code (DavServlet.java line 1711) already uses contents_of_id, and all other locale files (English, French, German, Spanish, etc.) have already been updated to use this key name. The pt_BR change in this PR correctly aligns the Portuguese locale with the existing codebase—this is not a breaking change but rather a necessary correction to ensure Portuguese translations are properly loaded.


15-15: All language files properly updated with the new translation key.

Verification complete. The new key error_setting_header_values has been consistently added across all 17 language files in the bundle directory (base English plus 16 localized variants). The base English key exists in Messages.properties, and the Portuguese (pt_BR) variant is correctly included in the file under review.

announcement/announcement-impl/impl/src/bundle/annc-access_pt_BR.properties (1)

1-12: The original review comment is incorrect.

The English version of annc-access.properties already uses the _colon suffix for all keys (from_colon, date_colon, subject_colon, attachments_colon). The Brazilian Portuguese translation file (annc-access_pt_BR.properties) correctly maintains these identical key names with Portuguese translations—this is standard i18n practice and not a breaking change.

No breaking changes exist; no code migration needed.

rwiki/rwiki-util/radeox/src/bundle/radeox_messages_pt_BR.properties (1)

7-20: Ensure macro descriptions are complete and translatable.

The modified lines contain Portuguese translations for macro descriptions. Verify that:

  1. All macro descriptions have corresponding English originals in the base file (or unlocalized version)
  2. The translations preserve the meaning and technical intent of the original descriptions
  3. No untranslated keys (hardcoded English text mixed with Portuguese) remain

The descriptions appear to reference wiki syntax concepts (RFC, tables, code highlighting, file paths, xref, ISBN, API docs, InterWiki, ASIN). Ensure technical terminology is appropriately translated for the Brazilian audience.

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

♻️ Duplicate comments (6)
announcement/announcement-impl/impl/src/bundle/siteemaanc_pt_BR.properties (1)

13-13: Fix incorrect Portuguese word order on line 13.

Line 13 contains a word-order error: "no "{0}" site" is grammatically incorrect Portuguese. The correct order is "no site "{0}"" to match the pattern from line 12 and Portuguese grammar conventions.

Additionally, there's inconsistent spacing—line 13 is missing the space after = that appears on line 12.

Apply this diff to fix the word order and spacing:

-noti.header.sender.info.update=Um an\u00fancio foi atualizado por "{2}" no "{0}" site em (<a href="{1}">{1}</a>)
+noti.header.sender.info.update= Um an\u00fancio foi atualizado por "{2}" no site "{0}" em (<a href="{1}">{1}</a>)
chat/chat-api/api/src/bundle/chat_pt_BR.properties (5)

92-92: Clarify abbreviated week label.

Use the complete word "Semana" or the properly abbreviated "Sem." (with period) for consistency and clarity in the date picker UI.

-custom_date_entry_week_header=Sem
+custom_date_entry_week_header=Semana

(Or use "Sem." if following a specific abbreviated style guide.)


80-80: Fix missing preposition after "através".

Portuguese grammar requires "através de" (not just "através"). Consider "Publicação permitida através de {1}" or "Publicação permitida até {1}" if that better matches intended semantics.

-custom_date_display_end=Publicação permitida através {1}
+custom_date_display_end=Publicação permitida através de {1}

(Or use "até {1}" if semantically appropriate.)


215-215: Maintain consistent hyphenation: use "Bate-Papo" not "Bate Papo".

Throughout the file, "Bate-Papo" is hyphenated (per Brazilian Portuguese standard). Line 215 should match this convention.

-main = Sala de Bate Papo
+main = Sala de Bate-Papo

84-84: Fix Portuguese preposition in date comparison message.

"Posterior que" is not grammatically correct. Use the feminine form "posterior à" (with preposition contraction for feminine noun "data").

-A data final deve ser igual ou posterior que data de início.
+A data final deve ser igual ou posterior à data de início.

152-152: Fix typo: remove extra 'o' from "Criaçãoo".

The word ends with an extra 'o'; should be "Criação" (single 'o').

-channel_creation_date=Data de Criaçãoo
+channel_creation_date=Data de Criação
🧹 Nitpick comments (1)
basiclti/basiclti-impl/src/bundle/basicltisvc_pt_BR.properties (1)

22-23: Review phrasing of timeout error messages.

Lines 22–23 contain grammatically awkward Portuguese. Please review:

  • Line 22: Incapaz de enviar lançamento para URL remoto – consider rephrasing for clarity
  • Line 23: tendo problemas para alcançar ferramenta remota – lacks a subject; consider Dificuldades para alcançar a ferramenta remota or similar
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 77d9f7a and f322782.

📒 Files selected for processing (8)
  • announcement/announcement-impl/impl/src/bundle/siteemaanc_pt_BR.properties (1 hunks)
  • basiclti/basiclti-impl/src/bundle/basicltisvc_pt_BR.properties (1 hunks)
  • basiclti/basiclti-impl/src/bundle/email_pt_BR.properties (1 hunks)
  • basiclti/basiclti-impl/src/bundle/ltiservice_pt_BR.properties (1 hunks)
  • chat/chat-api/api/src/bundle/chat_pt_BR.properties (7 hunks)
  • feedback/src/main/resources/org/sakaiproject/feedback_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/backfillrole/Messages_pt_BR.properties (1 hunks)
  • lessonbuilder/components/src/resources/subnav_pt_BR.properties (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (5)
  • basiclti/basiclti-impl/src/bundle/email_pt_BR.properties
  • feedback/src/main/resources/org/sakaiproject/feedback_pt_BR.properties
  • lessonbuilder/components/src/resources/subnav_pt_BR.properties
  • jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/backfillrole/Messages_pt_BR.properties
  • basiclti/basiclti-impl/src/bundle/ltiservice_pt_BR.properties
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: ottenhoff
Repo: sakaiproject/sakai PR: 14087
File: portal/portal-impl/impl/src/bundle/sitenav.properties:230-233
Timestamp: 2025-09-22T12:50:58.927Z
Learning: Java ResourceBundle system automatically falls back to the default properties file (e.g., sitenav.properties) when keys are missing from locale-specific bundles (e.g., sitenav_fr_FR.properties). There is no need to add untranslated properties to locale bundles - this creates unnecessary maintenance overhead.
📚 Learning: 2025-10-07T16:11:33.008Z
Learnt from: CR
Repo: sakaiproject/sakai PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-07T16:11:33.008Z
Learning: Applies to **/sakai-notifications.properties : Use sakai-notifications.properties for internationalized PWA installation messages

Applied to files:

  • basiclti/basiclti-impl/src/bundle/basicltisvc_pt_BR.properties
  • announcement/announcement-impl/impl/src/bundle/siteemaanc_pt_BR.properties
  • chat/chat-api/api/src/bundle/chat_pt_BR.properties
📚 Learning: 2025-09-22T12:50:58.927Z
Learnt from: ottenhoff
Repo: sakaiproject/sakai PR: 14087
File: portal/portal-impl/impl/src/bundle/sitenav.properties:230-233
Timestamp: 2025-09-22T12:50:58.927Z
Learning: Java ResourceBundle system automatically falls back to the default properties file (e.g., sitenav.properties) when keys are missing from locale-specific bundles (e.g., sitenav_fr_FR.properties). There is no need to add untranslated properties to locale bundles - this creates unnecessary maintenance overhead.

Applied to files:

  • basiclti/basiclti-impl/src/bundle/basicltisvc_pt_BR.properties
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: maven-build
  • GitHub Check: sakai-deploy
  • GitHub Check: maven-build
🔇 Additional comments (1)
announcement/announcement-impl/impl/src/bundle/siteemaanc_pt_BR.properties (1)

1-27: Verify completeness of translation coverage.

This file adds new Portuguese translations for announcement notifications. Per Java ResourceBundle fallback behavior, locale-specific bundles (like this pt_BR file) only need to include keys that differ from the default English bundle. Ensure that all 27 keys represent actual translations and not mere duplicates of untranslated defaults, as adding untranslated keys creates maintenance overhead.

If the English equivalent file (siteemaanc.properties) is available in the repository, please verify that all keys in this pt_BR file correspond to intended translations and not just English defaults carried over.

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

♻️ Duplicate comments (10)
content/content-tool/tool/src/bundle/right_pt_BR.properties (1)

34-34: Duplicate: Fix spelling error in documentation comment (already flagged).

This typo was previously flagged: "utitlized" should be "utilized".

-# NOTE: These HTML files can be utitlized for the default copyright options or custom copyright options.
+# NOTE: These HTML files can be utilized for the default copyright options or custom copyright options.
config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/tool/tools_pt_BR.properties (1)

34-34: Untranslated English text: resolve or remove to enable fallback.

Line 34 contains "Admin Perms Site" in English instead of Portuguese. Per the Java ResourceBundle fallback mechanism, this entry should either be removed entirely (allowing the system to fall back to the default English bundle) or replaced with a proper Portuguese translation (e.g., "Permissões de Administração do Site").

Suggested fix:

-sakai.adminsiteperms.title                          = Admin Perms Site 
+sakai.adminsiteperms.title                          = Permissões de Administração do Site

Based on learnings: Java ResourceBundle automatically falls back to default properties when keys are missing from locale bundles—untranslated entries create maintenance overhead.

entitybroker/core-providers/src/java/membership_pt_BR.properties (1)

15-26: Fix malformed JSON example in membership documentation.

Line 20 contains a malformed JSON example with a stray backslash: "user2\","role" should be "user2","role". This documentation describes an API endpoint, and the invalid JSON syntax could confuse API consumers implementing against this endpoint.

Apply this diff to correct the JSON:

-[ {"id": "user1", "role": "access"}, {"id": "user2\","role": "maintain"} ]<br/> \
+[ {"id": "user1", "role": "access"}, {"id": "user2", "role": "maintain"} ]<br/> \
content/content-bundles/resources/metadata_pt_BR.properties (1)

52-99: Fix Portuguese grammar, spelling, and diacritical mark errors flagged in prior review.

This file still contains multiple typos and grammar errors that were specifically identified and provided with fixes in previous review comments. These issues affect educational metadata quality and should be corrected:

  • Line 52: "no Metadados" → "nos Metadados" (plural form correction)
  • Line 82: "aprendizage,." → "aprendizagem." (typo with incorrect punctuation)
  • Line 88: Double space "ou por" → "ou por" (remove extra space)
  • Line 89: "p\u00faplico-alvo" → "público-alvo" (spelling correction)
  • Line 91: "apredizagem" → "aprendizagem" (missing 'n')
  • Line 97: "Crítica." → "Crítica ou revisão da qualidade." (incomplete descriptor)
  • Line 98: "Revisar data." → "Data da revisão." (grammatical fix)
  • Line 99: "Revisar comentarios." → "Comentários da revisão." (accent + word order)
  • Line 123: "Grafico" → "Gráfico" (missing diacritical mark)

Apply this consolidated diff (combining all fixes):

-metadata.validation.error=erro de valida\u00e7\u00e3o no Metadados "{0}". Por favor, verifique seus campos.
+metadata.validation.error=erro de valida\u00e7\u00e3o nos Metadados "{0}". Por favor, verifique seus campos.

-descr.lom_status=O status de conclus\u00e3o ou condi\u00e7\u00e3o deste objeto de aprendizage,. 
+descr.lom_status=O status de conclus\u00e3o ou condi\u00e7\u00e3o deste objeto de aprendizagem.

-descr.lom_difficulty=Qu\u00e3o dif\u00edcil \u00e9 trabalhar com ou  por meio desse objeto de aprendizagem para o tipo de p\u00fablico-alvo pretendido.
+descr.lom_difficulty=Qu\u00e3o dif\u00edcil \u00e9 trabalhar com ou por meio desse objeto de aprendizagem para o tipo de público-alvo pretendido.

-descr.lom_learning_time=Tempo t\u00edpico ou aproximado que leva para trabalhar com ou por meio deste objeto de aprendizagem para o tipo de p\u00faplico-alvo pretendido.
+descr.lom_learning_time=Tempo t\u00edpico ou aproximado que leva para trabalhar com ou por meio deste objeto de aprendizagem para o tipo de público-alvo pretendido.

-descr.lom_technical_requirements=As habilidades t\u00e9cnicas necess\u00e1rias para usar este objeto de apredizagem.
+descr.lom_technical_requirements=As habilidades t\u00e9cnicas necess\u00e1rias para usar este objeto de aprendizagem.

-descr.lom_reviewer=Cr\u00edtica.
+descr.lom_reviewer=Cr\u00edtica ou revis\u00e3o da qualidade.

-descr.lom_review_date=Revisar data.
+descr.lom_review_date=Data da revis\u00e3o.

-descr.lom_review_comments=Revisar comentarios.
+descr.lom_review_comments=Coment\u00e1rios da revis\u00e3o.

-label.lom_learning_resource_type.graph=Grafico
+label.lom_learning_resource_type.graph=Gráfico
config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/siteemacon/siteemacon_pt_BR.properties (1)

1-70: Critical: Three unresolved blocking issues prevent merge.

This file contains three critical issues flagged in previous reviews that remain unresolved and must be fixed before merging:

  1. Character Encoding Corruption (lines 20, 22, 50, 52, 64-70): The file is encoded in Latin-1 (ISO-8859-1) instead of UTF-8, causing Portuguese diacritical marks to display as garbled characters (e.g., Descri­ção instead of Descrição, Localiza­ção instead of Localização, notifica­ção instead of notificação). All Java resource bundles must be UTF-8 encoded.

  2. Syntax Error (line 67): Missing closing bracket ] in db.subj.upd.dnd.toplevel key value. Line 68 has the correct syntax with closing bracket; line 67 lacks it. This will cause parsing failures and break bundle loading.

  3. Semantic Inconsistency (lines 10-12): The key anewresDnD mixes contradictory semantics—value states "Um recurso novo foi atualizado para" (a new resource was updated for), but a resource cannot be simultaneously new and updated. Compare: line 6 (anewres) = "adicionado" (added), line 8 (anewres2) = "atualizado" (updated). Clarify whether anewresDnD should represent new resources (added) or updated resources.

Fix encoding: Convert file from Latin-1 to UTF-8. Run iconv -f ISO-8859-1 -t UTF-8 siteemacon_pt_BR.properties -o siteemacon_pt_BR.properties.fixed && mv siteemacon_pt_BR.properties.fixed siteemacon_pt_BR.properties or use your IDE's encoding conversion tool, then verify diacriticals display correctly.

Fix line 67 syntax:

-db.subj.upd.dnd.toplevel = [ {0} - Itens alterados do top-nível do Escaninho
+db.subj.upd.dnd.toplevel = [ {0} - Itens alterados do top-nível do Escaninho ]

Fix line 10-12 semantics: Decide whether anewresDnD represents new (added) or updated resources, then align both singular and plural forms with the corresponding anewres or anewres2 semantic and phrasing.

msgcntr/messageforums-api/src/bundle/org/sakaiproject/api/app/messagecenter/bundle/Messages_pt_BR.properties (1)

69-71: Remove duplicate key definition.

The key stat_anon_user is defined twice (lines 69 and 71) with identical values. While properties files use the last definition, this is a merge error and should be cleaned up to avoid confusion.

Apply this diff to remove the duplicate:

 stat_anon_user = Usuário
 stat_eid = ID	  
-stat_anon_user = Usuário
 stat_authored = Autor
config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/type/types_pt_BR.properties (1)

134-134: Fix typo and character encoding on instructional text for folder access scheduling.

Line 134 contains two issues:

  1. The known typo c3ertas (should be certas)
  2. Character encoding corruption: conte�dosconteúdos, vis�velvisível, conseguir�oconseguirão, usu�riosusuários

Apply this diff:

-instr.access.fldr	 = As Pastas e seus conte�dos podem ser programados para serem vis�veis apenas para c3ertas datas. Os administradores do site sempre conseguir�o visualizar os itens ocultos, mesmo quando eles estiverem ocultos para outros usu�rios.
+instr.access.fldr	 = As Pastas e seus conteúdos podem ser programados para serem visíveis apenas para certas datas. Os administradores do site sempre conseguirão visualizar os itens ocultos, mesmo quando eles estiverem ocultos para outros usuários.
podcasts/podcasts-api/src/bundle/org/sakaiproject/api/podcasts/bundle/Messages_pt_BR.properties (2)

51-51: I need to verify whether EEEEEE is actually non-standard in Java SimpleDateFormat. Let me search for documentation on SimpleDateFormat patterns.

Clarify that the pattern is non-standard but functional, not broken.

The review's assertion needs refinement. EEEE displays the full name of the day of the week such as "Monday", "Tuesday" etc., and while that is the documented standard, EEEEE is used in SimpleDateFormat patterns and successfully formats dates with locale-specific output. Similarly, EEEEEEE (seven E's) has been used for long day-of-week display.

In SimpleDateFormat, repeating the 'E' character beyond the standard four produces the same output as EEEE—it functions correctly but is non-standard and redundant. The suggested fix to use EEEE is valid for code clarity and standards compliance, but the current EEEEEE is not broken, merely stylistically inconsistent with best practices.

-publish_date_format=EEEEEE',' dd MM yyyy hh:mm a z
+publish_date_format=EEEE',' dd MM yyyy hh:mm a z

115-115: Fix date format inconsistency in user-facing alert.

Line 115 instructs users to enter dates in MM/DD/AAAA format, but the defined date patterns (lines 51-54) consistently use dd/MM/yyyy format. This mismatch will confuse users and cause validation failures. Additionally, AAAA should be YYYY to match the other format strings.

Apply this fix:

-invalid_date_alert=Você deve inserir a data no seguinte formato: MM/DD/AAAA HH:MM AM/PM
+invalid_date_alert=Você deve inserir a data no seguinte formato: DD/MM/YYYY HH:MM AM/PM
content/content-tool/tool/src/bundle/helper_pt_BR.properties (1)

40-40: Fix spacing issue in upload size limit message (previously flagged).

Line 40 is missing a space between the placeholder and the unit: excedido {0}Mb. should be excedido {0} Mb. (or {0} MB. depending on convention). Without the space, the UI will render as "excedido 5Mb." instead of the correct "excedido 5 Mb.".

-sizelimitexceeded=O tamanho limite de upload excedido {0}Mb.
+sizelimitexceeded=O tamanho limite de upload excedido {0} Mb.
🧹 Nitpick comments (2)
config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/siteemacon/siteemacon_pt_BR.properties (1)

6-6: Minor: Inconsistent spacing around property key separator.

Lines 6 and 22 omit space after the = sign (anewres=, locsit=), while other properties include spacing (e.g., line 8: anewres2 = , line 20: descrip = ). For consistency across the file, standardize spacing.

-anewres= Um novo recurso foi adicionado em
+anewres = Um novo recurso foi adicionado em
-locsit= Localiza­ção: site
+locsit = Localiza­ção: site

Also applies to: 22-22

portal/portal-impl/impl/src/bundle/sitenav_pt_BR.properties (1)

1-219: Consider leveraging ResourceBundle fallback to reduce maintenance overhead.

Per the Java ResourceBundle contract, when a key is missing from a locale-specific bundle (e.g., sitenav_pt_BR.properties), it automatically falls back to the default bundle (e.g., sitenav.properties). If translations for certain keys are missing, the application will use the default language without errors.

To reduce maintenance burden, consider omitting untranslated keys from this bundle so they fall back to the default. This makes it easier to maintain and reduces the risk of stale or incorrect values being committed. Verify with the translation provider (LARC/TIDIA-Ae) whether all keys here are intentionally translated or if some can safely fall back.

Based on learnings: The retrieved feedback from ottenhoff (PR 14087) notes this pattern explicitly.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 767626a and 864a52a.

📒 Files selected for processing (42)
  • basiclti/basiclti-blis/src/bundle/blis_pt_BR.properties (1 hunks)
  • basiclti/basiclti-impl/src/bundle/ltiservice_pt_BR.properties (1 hunks)
  • basiclti/basiclti-oidc/src/bundle/lti11_pt_BR.properties (1 hunks)
  • basiclti/basiclti-portlet/src/bundle/basiclti_pt_BR.properties (1 hunks)
  • basiclti/basiclti-tool/src/bundle/ltitool_pt_BR.properties (1 hunks)
  • basiclti/web-ifp/src/bundle/iframe_pt_BR.properties (1 hunks)
  • chat/chat-impl/impl/src/bundle/chat_pt_BR.properties (1 hunks)
  • citations/citations-util/util/src/bundle/citations_pt_BR.properties (1 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/content/content_pt_BR.properties (1 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/emailimpl/email-impl_pt_BR.properties (1 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/siteemacon/siteemacon_pt_BR.properties (1 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/siteimpl/site-impl_pt_BR.properties (1 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/tool/tools_pt_BR.properties (1 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/type/types_pt_BR.properties (1 hunks)
  • content/content-bundles/resources/content_pt_BR.properties (1 hunks)
  • content/content-bundles/resources/metadata_pt_BR.properties (1 hunks)
  • content/content-bundles/resources/types_pt_BR.properties (1 hunks)
  • content/content-tool/tool/src/bundle/dropbox_pt_BR.properties (1 hunks)
  • content/content-tool/tool/src/bundle/helper_pt_BR.properties (1 hunks)
  • content/content-tool/tool/src/bundle/right_pt_BR.properties (1 hunks)
  • delegatedaccess/tool/src/java/org/sakaiproject/delegatedaccess/tool/DelegatedAccessApplication_pt_BR.properties (1 hunks)
  • entitybroker/core-providers/src/java/membership_pt_BR.properties (1 hunks)
  • entitybroker/core-providers/src/java/server-config_pt_BR.properties (1 hunks)
  • entitybroker/core-providers/src/java/session_pt_BR.properties (1 hunks)
  • entitybroker/core-providers/src/java/site_pt_BR.properties (1 hunks)
  • entitybroker/core-providers/src/java/user_pt_BR.properties (1 hunks)
  • entitybroker/mocks/src/java/actions-prefix_pt_BR.properties (1 hunks)
  • entitybroker/mocks/src/java/describe-prefix_pt_BR.properties (1 hunks)
  • entitybroker/rest/src/java/batch_pt_BR.properties (1 hunks)
  • entitybroker/rest/src/java/describe_pt_BR.properties (1 hunks)
  • help/help-component/src/bundle/TutorialMessages_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-tool/src/bundle/org/sakaiproject/tool/scheduler/bundle/Messages_pt_BR.properties (1 hunks)
  • jsf/jsf-widgets/src/java/org/sakaiproject/jsf/Configuration_pt_BR.properties (1 hunks)
  • mailarchive/mailarchive-impl/impl/src/bundle/mailarchive-noti-prefs_pt_BR.properties (1 hunks)
  • mailarchive/mailarchive-impl/impl/src/bundle/siteemaanc_pt_BR.properties (1 hunks)
  • message/message-tool/tool/src/bundle/recent_pt_BR.properties (1 hunks)
  • msgcntr/messageforums-api/src/bundle/org/sakaiproject/api/app/messagecenter/bundle/Messages_pt_BR.properties (1 hunks)
  • msgcntr/messageforums-app/src/bundle/forums_pt_BR.properties (1 hunks)
  • mycalendar/src/java/org/sakaiproject/mycalendar/WidgetApplication_pt_BR.properties (1 hunks)
  • podcasts/podcasts-api/src/bundle/org/sakaiproject/api/podcasts/bundle/Messages_pt_BR.properties (1 hunks)
  • portal/portal-impl/impl/src/bundle/sitenav_pt_BR.properties (1 hunks)
  • portal/portal-service-impl/impl/src/bundle/jumptotop_pt_BR.properties (1 hunks)
✅ Files skipped from review due to trivial changes (5)
  • chat/chat-impl/impl/src/bundle/chat_pt_BR.properties
  • basiclti/basiclti-tool/src/bundle/ltitool_pt_BR.properties
  • entitybroker/core-providers/src/java/server-config_pt_BR.properties
  • basiclti/basiclti-blis/src/bundle/blis_pt_BR.properties
  • jsf/jsf-widgets/src/java/org/sakaiproject/jsf/Configuration_pt_BR.properties
🚧 Files skipped from review as they are similar to previous changes (19)
  • mycalendar/src/java/org/sakaiproject/mycalendar/WidgetApplication_pt_BR.properties
  • basiclti/basiclti-oidc/src/bundle/lti11_pt_BR.properties
  • basiclti/basiclti-portlet/src/bundle/basiclti_pt_BR.properties
  • portal/portal-service-impl/impl/src/bundle/jumptotop_pt_BR.properties
  • basiclti/web-ifp/src/bundle/iframe_pt_BR.properties
  • entitybroker/mocks/src/java/describe-prefix_pt_BR.properties
  • basiclti/basiclti-impl/src/bundle/ltiservice_pt_BR.properties
  • jobscheduler/scheduler-tool/src/bundle/org/sakaiproject/tool/scheduler/bundle/Messages_pt_BR.properties
  • help/help-component/src/bundle/TutorialMessages_pt_BR.properties
  • entitybroker/core-providers/src/java/session_pt_BR.properties
  • delegatedaccess/tool/src/java/org/sakaiproject/delegatedaccess/tool/DelegatedAccessApplication_pt_BR.properties
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/emailimpl/email-impl_pt_BR.properties
  • msgcntr/messageforums-app/src/bundle/forums_pt_BR.properties
  • entitybroker/rest/src/java/batch_pt_BR.properties
  • entitybroker/core-providers/src/java/user_pt_BR.properties
  • mailarchive/mailarchive-impl/impl/src/bundle/siteemaanc_pt_BR.properties
  • entitybroker/mocks/src/java/actions-prefix_pt_BR.properties
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/siteimpl/site-impl_pt_BR.properties
  • citations/citations-util/util/src/bundle/citations_pt_BR.properties
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: ottenhoff
Repo: sakaiproject/sakai PR: 14087
File: portal/portal-impl/impl/src/bundle/sitenav.properties:230-233
Timestamp: 2025-09-22T12:50:58.927Z
Learning: Java ResourceBundle system automatically falls back to the default properties file (e.g., sitenav.properties) when keys are missing from locale-specific bundles (e.g., sitenav_fr_FR.properties). There is no need to add untranslated properties to locale bundles - this creates unnecessary maintenance overhead.
📚 Learning: 2025-10-07T16:11:33.008Z
Learnt from: CR
Repo: sakaiproject/sakai PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-07T16:11:33.008Z
Learning: Applies to **/sakai-notifications.properties : Use sakai-notifications.properties for internationalized PWA installation messages

Applied to files:

  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/content/content_pt_BR.properties
  • mailarchive/mailarchive-impl/impl/src/bundle/mailarchive-noti-prefs_pt_BR.properties
  • content/content-bundles/resources/content_pt_BR.properties
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/tool/tools_pt_BR.properties
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/siteemacon/siteemacon_pt_BR.properties
  • portal/portal-impl/impl/src/bundle/sitenav_pt_BR.properties
  • msgcntr/messageforums-api/src/bundle/org/sakaiproject/api/app/messagecenter/bundle/Messages_pt_BR.properties
  • message/message-tool/tool/src/bundle/recent_pt_BR.properties
  • podcasts/podcasts-api/src/bundle/org/sakaiproject/api/podcasts/bundle/Messages_pt_BR.properties
📚 Learning: 2025-09-22T12:50:58.927Z
Learnt from: ottenhoff
Repo: sakaiproject/sakai PR: 14087
File: portal/portal-impl/impl/src/bundle/sitenav.properties:230-233
Timestamp: 2025-09-22T12:50:58.927Z
Learning: Java ResourceBundle system automatically falls back to the default properties file (e.g., sitenav.properties) when keys are missing from locale-specific bundles (e.g., sitenav_fr_FR.properties). There is no need to add untranslated properties to locale bundles - this creates unnecessary maintenance overhead.

Applied to files:

  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/tool/tools_pt_BR.properties
  • portal/portal-impl/impl/src/bundle/sitenav_pt_BR.properties
📚 Learning: 2025-09-12T09:42:44.998Z
Learnt from: danielmerino
Repo: sakaiproject/sakai PR: 0
File: :0-0
Timestamp: 2025-09-12T09:42:44.998Z
Learning: RSF datepicker has an incomplete ISO datetime parsing implementation in DateHelper.normalize() that doesn't handle timezone formats consistently. The format 2025-09-26T11:23:00+02:00 fails to parse while 2025-09-15T15:00:00+02 works, requiring timezone format normalization in the RSF template.

Applied to files:

  • podcasts/podcasts-api/src/bundle/org/sakaiproject/api/podcasts/bundle/Messages_pt_BR.properties
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: sakai-deploy
  • GitHub Check: maven-build
  • GitHub Check: maven-build
🔇 Additional comments (18)
content/content-tool/tool/src/bundle/dropbox_pt_BR.properties (2)

1-4: Header attribution is a helpful addition.

The translator and project context metadata is good practice for maintenance and compliance tracking.


6-8: Translation entries appear well-formatted.

Unicode escaping (e.g., \u00e9 for é) is correct. However, this file view shows only the first few property entries, and without seeing the complete bundle, I cannot verify that all keys from the base dropbox.properties are translated or present.

Per ResourceBundle fallback behavior, any missing keys will automatically fall back to the default bundle, so the system will function correctly. However, for complete localization coverage, ensure all keys from the base bundle are included when possible.

mailarchive/mailarchive-impl/impl/src/bundle/mailarchive-noti-prefs_pt_BR.properties (1)

1-12: Well-structured pt_BR translation bundle with proper intentional empty values.

The file follows proper .properties structure with correct Unicode escaping. The empty values in prefs_description and prefs_title_override (lines 8–9) are intentionally preserved per SAK-21078 as noted in the inline comment. The Portuguese translations for notification options appear well-formed. The simplified header (lines 1–4) cleanly attributes the work to LARC/TIDIA-Ae Project.

entitybroker/core-providers/src/java/site_pt_BR.properties (3)

1-4: Verify translator attribution accuracy and protocol.

The translator header has been added with proper attribution to LARC/TIDIA-Ae. Ensure this format complies with your project's documentation and contributor attribution standards.


6-28: Unicode escaping and line continuation syntax are correct.

The multi-line property values use proper backslash line continuation and Unicode escape sequences for Portuguese special characters (é, ã, õ, á, etc.). Formatting is consistent with Java properties file conventions.


29-46: All six site action keys are properly defined in the base site.properties file.

Verification confirms that all six new keys (site.action.groups, site.action.userPerms, site.action.perms, site.action.setPerms, site.action.pages, and site.action.withPerm) exist in the base site.properties file. The Portuguese locale bundle is correctly providing translations for these keys, following proper Java ResourceBundle semantics. No issues found.

config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/tool/tools_pt_BR.properties (2)

235-235: Verify intentionality of untranslated "AnnotatedUrl".

Line 235 contains "AnnotatedUrl", which appears to be English/technical terminology. For consistency with the file's translation approach, clarify whether this is an intentional product name that should remain untranslated, or whether it requires a Portuguese equivalent.


1-243: Translation quality and completeness look solid overall.

The file demonstrates comprehensive Portuguese coverage with proper Unicode escape sequences for diacritics, consistent formatting, and well-translated UI strings across a broad range of Sakai tools and components. The sourcing from LARC/TIDIA-Ae project is evident in the quality and domain specificity of the translations.

content/content-bundles/resources/content_pt_BR.properties (1)

1-683: Translation file is well-structured and comprehensive.

The Brazilian Portuguese translations are extensive, consistently formatted, and properly use Unicode escaping for special characters. All entries appear complete with appropriate contextual translations across content management UI strings, metadata labels, and system messages. The multi-line entry at lines 665-666 correctly uses backslash continuation syntax.

msgcntr/messageforums-api/src/bundle/org/sakaiproject/api/app/messagecenter/bundle/Messages_pt_BR.properties (1)

93-94: Disregard this review comment. Lines 93-94 already use standard Unix LF line endings, not CRLF. The cat -A output shows $ at line endings (indicating LF only, no CR), not ^M$ (which would indicate CRLF). While the file does contain CR characters, they appear on line 938, not on the cited lines 93-94.

Likely an incorrect or invalid review comment.

config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/content/content_pt_BR.properties (1)

1-573: Portuguese localization file is correctly formatted and ready for integration.

The file contains 383 properly parsed key-value pairs with valid Unicode escapes for Portuguese diacriticals (ã, ç, é). Format validation confirms no encoding issues, malformed entries, or duplicate keys. The intentional empty keys (lines 561-562) are preserved as required by SAK-21078.

Minor trailing whitespace on line 407 is cosmetic and will not affect Java ResourceBundle parsing or functionality. The file integrates correctly with the Sakai localization system and will properly fall back to the default content.properties bundle when keys are absent.

config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/type/types_pt_BR.properties (1)

1-259: Fix three typos and address UTF-8 encoding validation failure.

The file fails UTF-8 encoding validation, and contains three spelling errors that should be corrected:

  1. Line 13: patapasta ("pata" means paw/hoof; context requires "pasta"/folder)
  2. Line 134: c3ertascertas (garbled character; should read "certas"/certain)
  3. Line 135: interlavointervalo (typo; should read "intervalo"/interval for time period context)

The UTF-8 encoding issue is broader than these visible typos. Verify the file encoding during the build/transfer process to ensure Brazilian Portuguese diacriticals (á, é, í, ó, ú, ã, õ, ç) render correctly for end users.

message/message-tool/tool/src/bundle/recent_pt_BR.properties (2)

33-39: The review comment is incorrect and should be disregarded.

The base file recent.properties contains the exact same commented entries (lines 30–45) that appear in recent_pt_BR.properties. Additionally, this pattern is consistent across the repository: most locale variants (ar, bg, ca, es, eu, fa_IR, fr_FR, ro_RO, sr, zh_CN) include approximately 33 commented lines.

The commented entries are not locale-specific padding added to the Brazilian Portuguese bundle; they are intentional placeholders that originate in the base file and are deliberately propagated across locale variants. The ResourceBundle fallback principle referenced in the review comment does not apply here because these entries are not missing—they are explicitly included and commented in both the base and locale files as part of the established codebase pattern.

No action is required.

Likely an incorrect or invalid review comment.


1-102: UTF-8 simplification is optional; translation verification requires external source materials.

The file's encoding and parameterization are correct. The project is configured for UTF-8 (project.build.sourceEncoding=UTF-8 in pom.xml), and all seven parameterized entries at lines 34, 42, 48–49, 65, 71–72 use consistent {0} syntax.

On Java 9+, ResourceBundle treats .properties files as UTF-8 by default, so converting Unicode escapes to native UTF-8 characters would improve readability on modern Java versions. However, this is a best-practice refactor, not a required fix—the decision depends on your target Java version and resource loading strategy.

Regarding translation accuracy: the original LARC/TIDIA-Ae source materials are not present in the repository, so spot-checking against them cannot be completed in-repo. If manual verification is needed, you'll need to consult external project documentation.

podcasts/podcasts-api/src/bundle/org/sakaiproject/api/podcasts/bundle/Messages_pt_BR.properties (1)

6-124: Approve: Comprehensive Brazilian Portuguese translations for Podcasts UI.

The translated content across UI labels, prompts, directions, alert messages, and permission descriptions appears complete and well-aligned with the original English strings. Translation quality is consistent throughout, and formatting/encoding (Unicode escapes for special characters) is correct.

content/content-tool/tool/src/bundle/helper_pt_BR.properties (1)

1-160: No issues found: pt_BR bundle correctly maintains translations without duplicating untranslated entries from the default bundle.

Verification confirms the pt_BR locale bundle is properly maintained:

  • 115 shared keys are all properly translated (confirmed via sampling: different values from default)
  • 5 missing keys (onedrive.*) correctly rely on ResourceBundle fallback mechanism to the default bundle
  • No untranslated duplicates exist between the bundles
  • 2 extra keys (expand.all, expandall) exist only in pt_BR and do not conflict with the default

The Java ResourceBundle system functions as designed—keys missing from locale bundles automatically fall back to the default, eliminating the need to maintain unnecessary untranslated copies.

entitybroker/rest/src/java/describe_pt_BR.properties (2)

1-5: Good: Header metadata properly attributes translation source.

The attribution block crediting LARC (Laboratory of Architecture and Computer Networks) and the TIDIA-Ae Project is clear and professional. This is helpful for maintenance and community credit.


6-77: File correctly follows i18n best practices: all keys are properly translated.

Verification confirms the describe_pt_BR.properties file includes all 45 keys from the default describe.properties, and every key has a Portuguese translation with no English fallback values. Since all content is translated, including all keys is the correct approach per Java ResourceBundle behavior—there are no untranslated keys to omit.

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

♻️ Duplicate comments (11)
delegatedaccess/tool/src/java/org/sakaiproject/delegatedaccess/tool/DelegatedAccessApplication_pt_BR.properties (3)

31-31: Fix typo in property key name (remains unresolved).

Line 31 has a typo in the key name: exapndNodes is missing an 'n'. This should be expandNodes to maintain consistency with the corresponding English property key. This issue was flagged in prior review and remains unresolved.

Apply this diff to fix the typo:

-exapndNodes=Expandir todos os n\u00f3s
+expandNodes=Expandir todos os n\u00f3s

143-143: Fix typo in property key name (remains unresolved).

Line 143 has a typo in the key name: allowedBeomceUser is missing a 'c'. This should be allowedBecomeUser to match the upstream English property key and maintain consistency across locales. This issue was flagged in prior review and remains unresolved.

Apply this diff to fix the typo:

-allowedBeomceUser=O usu\u00e1rio pode tornar qualquer outro usu\u00e1rio nesses sites
+allowedBecomeUser=O usu\u00e1rio pode tornar qualquer outro usu\u00e1rio nesses sites

144-144: Remove duplicate legend property key (remains unresolved).

Line 144 defines a duplicate legend key (legend=Lenda). The first occurrence is at line 129 (legend=Lenda:), which is the intended definition. In Java properties files, only the first occurrence is used, making line 144 dead code. This issue was flagged in prior review and remains unresolved.

Remove line 144:

 legend=Lenda:
 nodeIdParam=Configure o par\u00e2metro nodeId se voc\u00ea sabe o n\u00f3 que deseja atualizar. Se deixar em branco, toda a \u00e1rvore se atualizar\u00e1.
 administrationTools=Ferramentas Administrativas
 add.da.myworkspace=Adicionar Delegar Acesso em Meu Site
 add.da.myworkspace.desc=Isso adiciona a ferramenta Delegar Acesso em Meu Site de todos os usu\u00e1rios que tenha qualquer tipo de permiss\u00e3o em Delegar Acesso.  Por padr\u00e3o, um usu\u00e1rio ter\u00e1 a ferramenta Delegar Acesso adicionada/removida quando voc\u00ea atualizar as permiss\u00f5es dele. No entanto, \u00e0s vezes, voc\u00ea tem que excluir todos os Meu Site para ter o novo modelo do Meu site.
 addDaMyworkspaceTitle=Adicionar Delegar Acesso em Meu Site
 success.addDaMyworkspace=Voc\u00ea programou com sucesso a adi\u00e7\u00e3o da ferramenta Delegar Acesso para o Meu Site de todos os usu\u00e1rios.
 addDaMyworkspace.job.status.none=Nunca programado.
 status=Estado:
 na=N/D
 addDaMyworkspace.job.status.failed=Falha durante a \u00faltima execu\u00e7\u00e3o 
 addDaMyworkspace.job.status.scheduled=Programado
 addDaMyworkspace.job.status.success=\u00daltima execu\u00e7\u00e3o com sucesso
 allowBecomeUser=Permitir que os usu\u00e1rios usem a ferramenta Tornar-se Outro Usu\u00e1rio nesse site
 allowedBeomceUser=O usu\u00e1rio pode tornar qualquer outro usu\u00e1rio nesses sites
-legend=Lenda
 legendNodeDesc=N\u00f3 de Hierarquia
 legendSiteDesc=Site
 legendInactiveDesc=Inativo
chat/chat-api/api/src/bundle/chat_pt_BR.properties (4)

80-80: Fix preposition usage with "através" (unresolved from prior review).

Line 80 continues to omit the required preposition "de" after "através". Standard Portuguese requires "através de" or consider "até" depending on semantic intent.

-custom_date_display_end=Publicação permitida através {1}
+custom_date_display_end=Publicação permitida até {1}

(Or use "através de {1}" if that better matches the intended meaning.)


84-84: Fix Portuguese grammar: preposition agreement with "data" (feminine) (unresolved from prior review).

Line 84 uses "posterior que" which is grammatically incorrect. The noun "data" is feminine, requiring feminine agreement: "posterior à" (contraction of "a" + "a").

-A data final deve ser igual ou posterior que data de início.
+A data final deve ser igual ou posterior à data de início.

92-92: Clarify the incomplete abbreviation "Sem" (unresolved from prior review).

Line 92 uses "Sem" which is ambiguous—likely short for "Semana" but unclear without context. For clarity, use the full word or a properly marked abbreviation.

-custom_date_entry_week_header=Sem
+custom_date_entry_week_header=Semana

(Alternatively, use "Sem." with a period if space constraints require abbreviation and consistency with other UI labels supports this choice.)


215-215: Maintain consistent hyphenation: "Bate-Papo" (unresolved from prior review).

Line 215 uses "Bate Papo" (space-separated), but the file consistently uses the hyphenated form "Bate-Papo" elsewhere (e.g., lines 10, 63, 73) and this matches Brazilian Portuguese convention.

-main = Sala de Bate Papo
+main = Sala de Bate-Papo
content/content-bundles/resources/metadata_pt_BR.properties (2)

88-88: Remove extraneous double space in line 88.

Line 88 contains a double space between "ou" and "por": trabalhar com ou por meio. This should be a single space for proper formatting.

-descr.lom_difficulty=Quão difícil é trabalhar com ou  por meio desse objeto de aprendizagem para o tipo de público-alvo pretendido.
+descr.lom_difficulty=Quão difícil é trabalhar com ou por meio desse objeto de aprendizagem para o tipo de público-alvo pretendido.

52-52: Minor grammar correction needed: "no" should be "nos" (plural form).

Line 52 uses the singular article "no" with the plural noun "Metadados". Portuguese requires the plural form "nos" to agree with the noun.

-metadata.validation.error=erro de validação no Metadados "{0}". Por favor, verifique seus campos.
+metadata.validation.error=erro de validação nos Metadados "{0}". Por favor, verifique seus campos.
basiclti/basiclti-tool/src/bundle/ltitool_pt_BR.properties (2)

48-48: 🔴 CRITICAL: Properties file syntax error persists — trailing quote on line 48.

The trailing double-quote character remains unfixed from the previous review: tool.table=Ferramentas Externas (LTI) Instaladas". This will cause the properties parser to fail or treat the value incorrectly.

Apply this diff to remove the extraneous quote:

-tool.table=Ferramentas Externas (LTI) Instaladas"
+tool.table=Ferramentas Externas (LTI) Instaladas

12-20: 🔴 CRITICAL: Multiple unclosed and malformed HTML <strong> tags persist — regression from previous review.

Lines 12–20 contain the exact malformed HTML tags that were flagged in the previous review:

  • Lines 12, 14–15, 17–20: Incorrect closing tag pattern <strong. instead of </strong> (missing the slash, and period instead of >)
  • Line 13: Additional issue with stray quote: "{1}' instead of "{1}"

These malformed tags will break HTML rendering in the UI and cause invalid markup.

Apply this diff to fix all nine lines:

-access.groups2	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}" e "{2}"<strong. Se desejar, voc\u00ea pode restringir ainda mais o acesso a esse arquivo por grupo.
+access.groups2	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}" e "{2}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso a esse arquivo por grupo.
-access.groups3	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}', "{2}" e "{3}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso a esse arquivo por grupo.
+access.groups3	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}" e "{3}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso a esse arquivo por grupo.
-access.groups4	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}", "{3}" e "{4}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso esse arquivo por grupo.
+access.groups4	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}", "{3}" e "{4}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso a esse arquivo por grupo.
-access.groups5	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}", "{3}", "{4}" e "{5}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso esse arquivo por grupo.
+access.groups5	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}", "{3}", "{4}" e "{5}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso a esse arquivo por grupo.
-access.groups6	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}", "{3}", "{4}", "{5}" e "{6}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso esse arquivo por grupo.
+access.groups6	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}", "{3}", "{4}", "{5}" e "{6}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso a esse arquivo por grupo.
-access.groups7	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}", "{3}", "{4}", "{5}", "{6}" e "{7}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso esse arquivo por grupo.
+access.groups7	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}", "{3}", "{4}", "{5}", "{6}" e "{7}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso a esse arquivo por grupo.
-access.groups8	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}", "{3}", "{4}", "{5}", "{6}", "{7}" e "{8}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso esse arquivo por grupo.
+access.groups8	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}", "{3}", "{4}", "{5}", "{6}", "{7}" e "{8}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso a esse arquivo por grupo.
-access.groups9	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}", "{3}", "{4}", "{5}", "{6}", "{7}", "{8}" e "{9}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso esse arquivo por grupo.
+access.groups9	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}", "{3}", "{4}", "{5}", "{6}", "{7}", "{8}" e "{9}"</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso a esse arquivo por grupo.
-access.groupsX	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}", "{3}", "{4}", "{5}", "{6}", "{7}", "{8}" e "{9}" e outros</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso esse arquivo por grupo.
+access.groupsX	= Os recursos da pasta "{0}" s\u00f3 podem ser visualizados pelos grupos <strong>"{1}", "{2}", "{3}", "{4}", "{5}", "{6}", "{7}", "{8}" e "{9}" e outros</strong>. Se desejar, voc\u00ea pode restringir ainda mais o acesso a esse arquivo por grupo.

Note: I also fixed minor grammar issues (missing "a" in "acesso a esse arquivo") on lines 14–15, 17–20 to match line 12's text.

🧹 Nitpick comments (1)
basiclti/basiclti-tool/src/bundle/ltitool_pt_BR.properties (1)

87-87: Inconsistent character encoding approach (minor encoding hygiene issue).

Line 87 uses a Unicode escape sequence \u00edvel for the letter "í", while the rest of the file uses direct UTF-8 characters (e.g., accents in lines 6–86). This inconsistency may indicate a partial encoding conversion or data corruption during the rsync transfer.

For consistency and maintainability, use direct UTF-8 characters throughout the file instead of mixing escape sequences and literal characters. If the file is UTF-8 encoded, all accented Portuguese characters should be direct.

This is a minor hygiene issue — direct UTF-8 is more readable. Apply this change if aligning encoding strategy across the file:

-content.no.tools=Nenhuma Ferramenta Dispon\u00edvel
+content.no.tools=Nenhuma Ferramenta Disponível
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 864a52a and 07514b0.

📒 Files selected for processing (14)
  • basiclti/basiclti-tool/src/bundle/ltitool_pt_BR.properties (1 hunks)
  • chat/chat-api/api/src/bundle/chat_pt_BR.properties (6 hunks)
  • cloud-storage/googledrive/tool/src/main/resources/Messages_pt_BR.properties (1 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/siteemacon/siteemacon_pt_BR.properties (1 hunks)
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/type/types_pt_BR.properties (1 hunks)
  • content/content-bundles/resources/metadata_pt_BR.properties (1 hunks)
  • content/content-bundles/resources/types_pt_BR.properties (1 hunks)
  • delegatedaccess/tool/src/java/org/sakaiproject/delegatedaccess/tool/DelegatedAccessApplication_pt_BR.properties (1 hunks)
  • entitybroker/core-providers/src/java/notify_pt_BR.properties (1 hunks)
  • feedback/src/main/resources/org/sakaiproject/feedback_pt_BR.properties (1 hunks)
  • gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties (1 hunks)
  • jobscheduler/scheduler-test-component-shared/src/bundle/org/sakaiproject/component/app/scheduler/jobs/test/Messages_pt_BR.properties (1 hunks)
  • oauth/tool/src/resources/org/sakaiproject/oauth/tool/pages/SakaiPage_pt_BR.properties (1 hunks)
  • podcasts/podcasts-api/src/bundle/org/sakaiproject/api/podcasts/bundle/Messages_pt_BR.properties (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • oauth/tool/src/resources/org/sakaiproject/oauth/tool/pages/SakaiPage_pt_BR.properties
🚧 Files skipped from review as they are similar to previous changes (6)
  • entitybroker/core-providers/src/java/notify_pt_BR.properties
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/siteemacon/siteemacon_pt_BR.properties
  • feedback/src/main/resources/org/sakaiproject/feedback_pt_BR.properties
  • cloud-storage/googledrive/tool/src/main/resources/Messages_pt_BR.properties
  • config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/type/types_pt_BR.properties
  • jobscheduler/scheduler-test-component-shared/src/bundle/org/sakaiproject/component/app/scheduler/jobs/test/Messages_pt_BR.properties
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: ottenhoff
Repo: sakaiproject/sakai PR: 14087
File: portal/portal-impl/impl/src/bundle/sitenav.properties:230-233
Timestamp: 2025-09-22T12:50:58.927Z
Learning: Java ResourceBundle system automatically falls back to the default properties file (e.g., sitenav.properties) when keys are missing from locale-specific bundles (e.g., sitenav_fr_FR.properties). There is no need to add untranslated properties to locale bundles - this creates unnecessary maintenance overhead.
📚 Learning: 2025-10-07T16:11:33.008Z
Learnt from: CR
Repo: sakaiproject/sakai PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-07T16:11:33.008Z
Learning: Applies to **/sakai-notifications.properties : Use sakai-notifications.properties for internationalized PWA installation messages

Applied to files:

  • content/content-bundles/resources/types_pt_BR.properties
  • delegatedaccess/tool/src/java/org/sakaiproject/delegatedaccess/tool/DelegatedAccessApplication_pt_BR.properties
  • gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties
  • chat/chat-api/api/src/bundle/chat_pt_BR.properties
  • podcasts/podcasts-api/src/bundle/org/sakaiproject/api/podcasts/bundle/Messages_pt_BR.properties
📚 Learning: 2025-09-12T09:42:44.998Z
Learnt from: danielmerino
Repo: sakaiproject/sakai PR: 0
File: :0-0
Timestamp: 2025-09-12T09:42:44.998Z
Learning: RSF datepicker has an incomplete ISO datetime parsing implementation in DateHelper.normalize() that doesn't handle timezone formats consistently. The format 2025-09-26T11:23:00+02:00 fails to parse while 2025-09-15T15:00:00+02 works, requiring timezone format normalization in the RSF template.

Applied to files:

  • podcasts/podcasts-api/src/bundle/org/sakaiproject/api/podcasts/bundle/Messages_pt_BR.properties
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: maven-build
  • GitHub Check: maven-build
  • GitHub Check: sakai-deploy
🔇 Additional comments (5)
chat/chat-api/api/src/bundle/chat_pt_BR.properties (1)

14-14: Approved: Correct translations and wording improvements.

The following changes look good:

  • Line 14: "Ocultar Histórico" corrects the earlier typo.
  • Line 56: New key "control.submit" is appropriately translated.
  • Line 57: Preposition change ("de" → "do") improves semantics.
  • Line 211: English text correctly translated to Portuguese.

Also applies to: 56-57, 211-211

gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties (3)

286-286: ✓ Past critical issue resolved.

The mixed language error message previously flagged ("O arquivo carregadoontains no students...") has been corrected to a proper full Portuguese translation. Good catch by the developer implementing the feedback.


1-710: Comprehensive and well-structured Brazilian Portuguese translation.

The file provides thorough pt_BR translations for all Gradebook UI components, following best practices by translating all keys rather than relying on ResourceBundle fallback to default bundles. This reduces maintenance overhead and ensures consistent user experience. Unicode encoding is handled correctly throughout.


385-385: Review comment is incorrect. The placeholder syntax is intentional and correct.

The English properties file uses ${maximum} for the same key, confirming that ${máximo} is the intended template syntax, not an error. This is a framework-level pattern: other validator properties in the codebase also use ${label} style placeholders. The mixture of {0} and ${...} formats across the file reflects intentional usage—numeric placeholders for MessageFormat contexts and ${...} for template variable substitution in validators.

Likely an incorrect or invalid review comment.

podcasts/podcasts-api/src/bundle/org/sakaiproject/api/podcasts/bundle/Messages_pt_BR.properties (1)

51-54: The review comment contains a factual error about SimpleDateFormat patterns.

In SimpleDateFormat, E, EE, EEE produce abbreviated weekday names (e.g., "Tue"), while EEEE (4 or more Es) produces full weekday names (e.g., "Tuesday"). Extra Es beyond 4 don't change the result and are treated as full. Therefore, EEEEEE on line 51 is not non-standard—it is valid and functions identically to EEEE.

However, the review comment correctly identifies a legitimate format inconsistency: Lines 52–53 define the actual format patterns as dd/MM/yyyy, but line 115's alert message instructs users to enter DD/MM/AAAA HH:MM AM/PM. This mismatch causes user confusion. Additionally, the proposed fix adds Portuguese text ('de' MMMM 'de') that was not in the original, introducing unintended semantic changes.

The valid concern is the case mismatch and incorrect pattern in the alert (line 115 should align with the actual format patterns in lines 52–53), not the EEEEEE pattern itself.

Likely an incorrect or invalid review comment.

kunaljaykam and others added 3 commits November 19, 2025 01:11
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
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: 2

♻️ Duplicate comments (4)
chat/chat-api/api/src/bundle/chat_pt_BR.properties (4)

92-92: Clarify abbreviated week label.

Line 92 sets "Sem" which is incomplete in Portuguese. Clarify as either "Semana" (full word) or "Sem." (abbreviated with period) for UI consistency.

-custom_date_entry_week_header=Sem
+custom_date_entry_week_header=Semana

215-215: Apply consistent hyphenation to "Bate-Papo".

Line 215 uses "Bate Papo" (space-separated), but Brazilian Portuguese convention and other keys in this file use the hyphenated form "Bate-Papo".

-main = Sala de Bate Papo
+main = Sala de Bate-Papo

80-80: Fix missing preposition in "através".

Line 80 is missing the required preposition. In Portuguese, "através" requires "de" (e.g., "através de {1}").

-custom_date_display_end=Publicação permitida através {1}
+custom_date_display_end=Publicação permitida através de {1}

84-84: Fix incorrect preposition agreement in Portuguese.

Line 84 uses "posterior que" which violates Portuguese grammar. Since "data" is feminine, use "posterior à" instead.

-A data final deve ser igual ou posterior que data de início.
+A data final deve ser igual ou posterior à data de início.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 07514b0 and d8fa926.

📒 Files selected for processing (3)
  • chat/chat-api/api/src/bundle/chat_pt_BR.properties (6 hunks)
  • content/content-bundles/resources/metadata_pt_BR.properties (1 hunks)
  • gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • content/content-bundles/resources/metadata_pt_BR.properties
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: ottenhoff
Repo: sakaiproject/sakai PR: 14087
File: portal/portal-impl/impl/src/bundle/sitenav.properties:230-233
Timestamp: 2025-09-22T12:50:58.927Z
Learning: Java ResourceBundle system automatically falls back to the default properties file (e.g., sitenav.properties) when keys are missing from locale-specific bundles (e.g., sitenav_fr_FR.properties). There is no need to add untranslated properties to locale bundles - this creates unnecessary maintenance overhead.
📚 Learning: 2025-10-07T16:11:33.008Z
Learnt from: CR
Repo: sakaiproject/sakai PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-07T16:11:33.008Z
Learning: Applies to **/sakai-notifications.properties : Use sakai-notifications.properties for internationalized PWA installation messages

Applied to files:

  • chat/chat-api/api/src/bundle/chat_pt_BR.properties
  • gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: maven-build
  • GitHub Check: sakai-deploy
  • GitHub Check: maven-build
🔇 Additional comments (3)
gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties (1)

1-710: Excellent translation quality and resolution of prior issues.

The Brazilian Portuguese translations are comprehensive and well-structured. The critical issues flagged in previous reviews—mixed Portuguese/English text (line 286) and the typo "idnorada" (line 369)—have been successfully resolved. Unicode escaping is consistent throughout, placeholders are correctly positioned, and the coverage is thorough across UI labels, buttons, error messages, validation prompts, and help text for the Gradebook module. The translations align well with the project context (LARC/TIDIA-Ae).

Once the minor formatting issues (double colon and trailing whitespace) are addressed, this resource bundle should be ready for integration.

chat/chat-api/api/src/bundle/chat_pt_BR.properties (2)

56-57: New public surface keys properly translated.

The added keys (control.submit, menu items, permission descriptors) are all appropriately translated to Brazilian Portuguese with consistent terminology (e.g., "bate-papo" usage throughout). The update to line 57 (control.lab) maintains consistency with the broader messaging changes.

Also applies to: 213-217, 220-223


134-135: Message updates maintain grammatical correctness and improve clarity.

The updates and new messages use correct plural forms ("mensagens não lidas", "últimos {0} dias") and enhance UI clarity without introducing errors.

Also applies to: 164-166, 186-186, 188-188

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

♻️ Duplicate comments (7)
content/content-bundles/resources/metadata_pt_BR.properties (3)

52-52: Grammar: Correct "no Metadados" to "nos Metadados" (plural form).

The field uses singular "no" (in the) but "Metadados" is plural and requires "nos" (in the [plural]). This was flagged in previous review and should be corrected.

-metadata.validation.error=erro de validação no Metadados "{0}". Por favor, verifique seus campos.
+metadata.validation.error=erro de validação nos Metadados "{0}". Por favor, verifique seus campos.

74-76: Fix label consistency and grammar in reviewer-related fields.

  • Line 74: "Revisar" is an infinitive verb (to review); should be the noun "Revisor" (Reviewer) to match the description field at line 97.
  • Line 76: "Revisar Coment\u00e1rios" (Review Comments as imperative) should be "Comentários da Revisão" (Comments from the Review) for consistency with line 99.
-label.lom_reviewer=Revisar
+label.lom_reviewer=Revisor

-label.lom_review_comments=Revisar Coment\u00e1rios
+label.lom_review_comments=Comentários da Revisão

88-88: Remove double space between "ou" and "por".

Line 88 contains a double space that should be normalized to single space for proper formatting and consistency.

-descr.lom_difficulty=Quão difícil é trabalhar com ou  por meio desse objeto de aprendizagem para o tipo de público-alvo pretendido.
+descr.lom_difficulty=Quão difícil é trabalhar com ou por meio desse objeto de aprendizagem para o tipo de público-alvo pretendido.
chat/chat-api/api/src/bundle/chat_pt_BR.properties (4)

80-80: Unresolved: Fix Portuguese preposition usage in "através".

This issue was flagged in a previous review but remains unfixed. The correct Portuguese form is "através de" (as in "A informação foi transmitida através de e-mail"). Line 80 currently reads "Publicação permitida através {1}" which omits the required preposition.

-custom_date_display_end=Publicação permitida através {1}
+custom_date_display_end=Publicação permitida através de {1}

Alternatively, if the semantics require a deadline interpretation, use "até {1}" instead.


84-84: Unresolved: Fix Portuguese grammar — "posterior que" vs. "posterior à".

This issue was flagged previously but remains unfixed. In Portuguese, "posterior" requires gender agreement with the noun. Since "data" is feminine, the correct form is "posterior à" (with the feminine article contraction), not "posterior que".

-A data final deve ser igual ou posterior que data de início.
+A data final deve ser igual ou posterior à data de início.

92-92: Unresolved: Clarify abbreviated week label — "Sem" is incomplete.

This issue was flagged in a prior review but remains unresolved. "Sem" is an incomplete abbreviation for "Semana" (week) and lacks clarity in the UI. Either use the full word "Semana" or, if space-constrained, use the proper abbreviation "Sem." (with period).

-custom_date_entry_week_header=Sem
+custom_date_entry_week_header=Semana

215-215: Unresolved: Restore hyphenation in "Bate-Papo" for consistency.

This issue was flagged in a prior review but remains unresolved. Line 215 uses "Bate Papo" (space-separated), but Brazilian Portuguese convention and the file's own usage elsewhere (e.g., lines 10, 12, 63, 73) use the hyphenated form "Bate-Papo" for consistency.

-main = Sala de Bate Papo
+main = Sala de Bate-Papo
🧹 Nitpick comments (1)
gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties (1)

359-359: Minor: Remove trailing whitespace from localized values.

Lines 359 and 668 contain trailing whitespace/tabs after the values that appear unintended:

Apply this diff to clean up:

-importExport.export.csv.headers.studentName = Nome	   
+importExport.export.csv.headers.studentName = Nome
-metadata.noflags=Nenhuma notifica\u00e7\u00e3o	   
+metadata.noflags=Nenhuma notifica\u00e7\u00e3o

Also applies to: 668-668

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 07514b0 and d8fa926.

📒 Files selected for processing (3)
  • chat/chat-api/api/src/bundle/chat_pt_BR.properties (6 hunks)
  • content/content-bundles/resources/metadata_pt_BR.properties (1 hunks)
  • gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: ottenhoff
Repo: sakaiproject/sakai PR: 14087
File: portal/portal-impl/impl/src/bundle/sitenav.properties:230-233
Timestamp: 2025-09-22T12:50:58.927Z
Learning: Java ResourceBundle system automatically falls back to the default properties file (e.g., sitenav.properties) when keys are missing from locale-specific bundles (e.g., sitenav_fr_FR.properties). There is no need to add untranslated properties to locale bundles - this creates unnecessary maintenance overhead.
📚 Learning: 2025-10-07T16:11:33.008Z
Learnt from: CR
Repo: sakaiproject/sakai PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-07T16:11:33.008Z
Learning: Applies to **/sakai-notifications.properties : Use sakai-notifications.properties for internationalized PWA installation messages

Applied to files:

  • gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties
  • chat/chat-api/api/src/bundle/chat_pt_BR.properties
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: sakai-deploy
  • GitHub Check: maven-build
🔇 Additional comments (4)
gradebookng/bundle/src/main/bundle/gradebookng_pt_BR.properties (2)

1-5: Brazilian Portuguese translation file structure is well-formatted.

The file header correctly attributes the translations to LARC/TIDIA-Ae Project. The overall file structure follows proper Java properties format with appropriate use of Unicode escapes for Portuguese characters (ã, ç, õ, etc.).


286-286: Previous critical issues have been successfully resolved.

Line 286 now correctly shows a fully Portuguese translation: "O arquivo carregado não contém alunos inscritos neste site. A importação requer pelo menos uma entrada de aluno válida no arquivo." (previously mixed English/Portuguese).

Line 369 now correctly shows the proper spelling: "Esta coluna será ignorada" (previously "idnorada" → "ignorada").

Also applies to: 369-369

content/content-bundles/resources/metadata_pt_BR.properties (1)

1-176: Verify completeness against default properties file fallback behavior.

Per Java ResourceBundle design, locale-specific bundles (e.g., metadata_pt_BR.properties) only need entries that differ from the default (metadata.properties). Untranslated keys automatically fall back to the default file. Verify that this file contains only intentional pt_BR overrides and not duplicate entries that should rely on default fallback, as this reduces maintenance burden. Based on learnings

chat/chat-api/api/src/bundle/chat_pt_BR.properties (1)

28-30: Verify grammatical flow of concatenated message keys.

Lines 28–30 define three keys that are concatenated at runtime to form a single user-facing message:

missingchannel1 = Essa sala não pode ser encontrada. Talvez tenha sido removido pelo instrutor. Clique
here = aqui
missingchannel2 = vá para a sala principal.

The concatenated result would read: "Essa sala não pode ser encontrada. Talvez tenha sido removido pelo instrutor. Clique aqui vá para a sala principal."

This lacks a grammatical connector (conjunction or preposition) between "aqui" and "vá". It should be "Clique aqui e vá" or "Clique aqui para ir" to form a proper sentence.

Please verify how these three keys are concatenated at runtime and confirm whether the message requires a connector (e.g., "e" for and, or restructure missingchannel2 to read "e vá para a sala principal.").

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

this pr is ready to go
Claudia okayed it

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.

2 participants