Implement policy changelog report action system messages for: Categories: Enabling/Disabling "Require description" and "Require attendees" - #97919
Conversation
…s in getWorkspaceCategoryUpdateMessage
…quirement updates changelog message
… requirement updates changelog message
|
Hey, I noticed you changed If you want to automatically generate translations for other locales, an Expensify employee will have to:
Alternatively, if you are an external contributor, you can run the translation script locally with your own OpenAI API key. To learn more, try running: npx ts-node ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
|
@MonilBhavsar Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
@MonilBhavsar - could you please run this workflow #97919 (comment) to generate the translations diff? Thanks! |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c477770686
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
This comment has been minimized.
This comment has been minimized.
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: View the translation diffdiff --git a/src/languages/de.ts b/src/languages/de.ts
index a26871a5d13..7e816cf9b61 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -8831,7 +8831,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
travel: (sourcePolicyName: string, sourcePolicyURL: string) => `Reiseeinstellungen von <a href="${sourcePolicyURL}">${sourcePolicyName}</a> kopiert`,
},
updateAreAttendeesRequired: (categoryName: string, newValue: boolean) => {
- return `hat die Teilnehmer der Kategorie „${categoryName}“ auf ${newValue ? 'erforderlich' : 'nicht erforderlich'} geändert (zuvor ${newValue ? 'nicht erforderlich' : 'erforderlich'})`;
+ return `hat die Kategorie „${categoryName}“ für Teilnehmende auf ${newValue ? 'erforderlich' : 'nicht erforderlich'} geändert (zuvor ${newValue ? 'nicht erforderlich' : 'erforderlich'})`;
},
},
roomMembersPage: {
diff --git a/src/languages/el.ts b/src/languages/el.ts
index 7b4a4e50a77..d8616e3f732 100644
--- a/src/languages/el.ts
+++ b/src/languages/el.ts
@@ -320,7 +320,6 @@ const translations: TranslationDeepObject<typeof en> = {
automatic: 'Αυτόματο',
showing: 'Εμφανίζονται',
of: 'του',
- // @context Carousel pagination counter showing the current item's position out of the total (e.g. "3 of 50").
currentOfTotal: ({current, total}: {current: number; total: number}) => `${current} από ${total}`,
default: 'Προεπιλογή',
update: 'Ενημέρωση',
@@ -9034,7 +9033,7 @@ ${reportName}`,
currency: (sourcePolicyName: string, sourcePolicyURL: string) => `αντιγράφηκε το νόμισμα από την πολιτική <a href="${sourcePolicyURL}">${sourcePolicyName}</a>`,
},
updateAreAttendeesRequired: (categoryName: string, newValue: boolean) => {
- return `άλλαξε τους συμμετέχοντες της κατηγορίας «${categoryName}» σε ${newValue ? 'υποχρεωτικό' : 'δεν απαιτείται'} (προηγουμένως ${newValue ? 'δεν απαιτείται' : 'υποχρεωτικό'})`;
+ return `άλλαξε τους συμμετέχοντες της κατηγορίας «${categoryName}» σε ${newValue ? 'υποχρεωτικό' : 'μη υποχρεωτικό'} (προηγουμένως ${newValue ? 'μη υποχρεωτικό' : 'υποχρεωτικό'})`;
},
},
roomMembersPage: {
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 51f19b6a56f..582b69c4eb1 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -8662,7 +8662,7 @@ El plan Controlar empieza en 9 $ por miembro activo al mes.`,
travel: (sourcePolicyName: string, sourcePolicyURL: string) => `copió la configuración de viaje de <a href="${sourcePolicyURL}">${sourcePolicyName}</a>`,
},
updateAreAttendeesRequired: (categoryName: string, newValue: boolean) => {
- return `cambió los asistentes de la categoría «${categoryName}» a ${newValue ? 'obligatorio' : 'no obligatorio'} (previamente ${newValue ? 'no obligatorio' : 'obligatorio'})`;
+ return `cambió los asistentes de la categoría «${categoryName}» a ${newValue ? 'obligatorio' : 'no es obligatorio'} (previamente ${newValue ? 'no es obligatorio' : 'obligatorio'})`;
},
},
roomMembersPage: {
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 8a1d69a4fe1..2d2c77c2b39 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -8865,7 +8865,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
travel: (sourcePolicyName: string, sourcePolicyURL: string) => `paramètres de déplacement copiés depuis <a href="${sourcePolicyURL}">${sourcePolicyName}</a>`,
},
updateAreAttendeesRequired: (categoryName: string, newValue: boolean) => {
- return `a modifié les participants de la catégorie « ${categoryName} » en ${newValue ? 'obligatoire' : 'non requis'} (précédemment ${newValue ? 'non requis' : 'obligatoire'})`;
+ return `a modifié les participants de la catégorie « ${categoryName} » en ${newValue ? 'obligatoire' : 'non obligatoire'} (précédemment ${newValue ? 'non obligatoire' : 'obligatoire'})`;
},
},
roomMembersPage: {
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index ac5ab7e20ad..41f1fbd9fc5 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -8693,7 +8693,7 @@ ${reportName}`,
travel: (sourcePolicyName: string, sourcePolicyURL: string) => `<a href="${sourcePolicyURL}">${sourcePolicyName}</a> から出張設定をコピーしました`,
},
updateAreAttendeesRequired: (categoryName: string, newValue: boolean) => {
- return `「${categoryName}」カテゴリの出席者を${newValue ? '必須' : '必須ではありません'}に変更しました(以前は${newValue ? '必須ではありません' : '必須'})。`;
+ return `「${categoryName}」カテゴリの出席者を${newValue ? '必須' : '必須ではありません'}に変更しました(以前は${newValue ? '必須ではありません' : '必須'})`;
},
},
roomMembersPage: {
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index c393de3365a..75c90e097cb 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -8776,7 +8776,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`,
travel: (sourcePolicyName: string, sourcePolicyURL: string) => `reiskosteninstellingen gekopieerd van <a href="${sourcePolicyURL}">${sourcePolicyName}</a>`,
},
updateAreAttendeesRequired: (categoryName: string, newValue: boolean) => {
- return `heeft de aanwezigen van categorie ‘${categoryName}’ gewijzigd naar ${newValue ? 'verplicht' : 'niet verplicht'} (voorheen ${newValue ? 'niet verplicht' : 'verplicht'})`;
+ return `heeft de deelnemers van categorie "${categoryName}" gewijzigd naar ${newValue ? 'verplicht' : 'niet verplicht'} (voorheen ${newValue ? 'niet verplicht' : 'verplicht'})`;
},
},
roomMembersPage: {
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 03ad74f0938..a05d28c273d 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -8754,7 +8754,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`,
travel: (sourcePolicyName: string, sourcePolicyURL: string) => `skopiowano ustawienia podróży z <a href="${sourcePolicyURL}">${sourcePolicyName}</a>`,
},
updateAreAttendeesRequired: (categoryName: string, newValue: boolean) => {
- return `zmienił(a) uczestników kategorii „${categoryName}” na ${newValue ? 'wymagane' : 'niewymagane'} (wcześniej ${newValue ? 'niewymagane' : 'wymagane'})`;
+ return `zmienił uczestników kategorii „${categoryName}” na ${newValue ? 'wymagane' : 'niewymagane'} (wcześniej ${newValue ? 'niewymagane' : 'wymagane'})`;
},
},
roomMembersPage: {
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 0ad6c858869..f8ea5b18c14 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -8468,7 +8468,7 @@ ${reportName}`,
travel: (sourcePolicyName: string, sourcePolicyURL: string) => `已从 <a href="${sourcePolicyURL}">${sourcePolicyName}</a> 复制出差设置`,
},
updateAreAttendeesRequired: (categoryName: string, newValue: boolean) => {
- return `已将“${categoryName}”类别的参与者更改为 ${newValue ? '必填' : '非必填'}(之前为 ${newValue ? '非必填' : '必填'})`;
+ return `将“${categoryName}”类别的出席者更改为 ${newValue ? '必填' : '非必填'}(之前为 ${newValue ? '非必填' : '必填'})`;
},
},
roomMembersPage: {
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
MonilBhavsar
left a comment
There was a problem hiding this comment.
Is this ready for review?
yes |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb Safari |
|
🚧 MonilBhavsar has triggered a test Expensify/App build. You can view the workflow run here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/MonilBhavsar in version: 9.4.53-0 🚀
|
|
🤖 No help site changes are required for this PR. This PR implements the workspace changelog / system message wording shown in the #admins room when an admin toggles the category rules Require description and Require attendees (e.g. Both category rule options are already accurately documented on the help site:
Both files already list, verbatim:
Help articles document the settings and features themselves, not the exact text of workspace changelog/audit messages, so there's nothing to add or update here. No draft help site PR was created. @rayane-d, if you believe the help site should additionally document these #admins room changelog messages, let me know and I'll draft a PR — otherwise no documentation update is needed for this change. |
|
Deploy Blocker #98482 was identified to be related to this PR. |

Explanation of Change
Implement policy changelog report action system messages for: Categories: Enabling/Disabling "Require description" and "Require attendees"
Fixed Issues
Part of https://github.com/Expensify/Expensify/issues/668645
PROPOSAL:
Tests
changed the "[category]" category attendees to required (previously not required)appears.changed the "[category]" category attendees to not required (previously required)appears.Offline tests
N/A
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
Same as tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari