Skip to content

ECHO-674 make conversation retranscribe anonymize option match Portal Editor Anonymize transcripts#484

Merged
ussaama merged 1 commit intomainfrom
retranscribe-pii-option-alignment
Mar 18, 2026
Merged

ECHO-674 make conversation retranscribe anonymize option match Portal Editor Anonymize transcripts#484
ussaama merged 1 commit intomainfrom
retranscribe-pii-option-alignment

Conversation

@ussaama
Copy link
Copy Markdown
Contributor

@ussaama ussaama commented Mar 18, 2026

  • Changed label from "Use PII Redaction" to "Anonymize transcript" for clarity.
  • Updated descriptions to specify that personal information will be replaced with placeholders and that audio playback, download, and retranscription will be disabled for the new conversation.
  • Added corresponding translations in German, Spanish, French, and Italian locales.

Summary by CodeRabbit

  • Documentation

    • Clarified transcript anonymization feature description to specify that personal information will be replaced with placeholders and audio playback, download, and retranscription will be disabled for the new conversation.
    • Updated UI label to "Anonymize transcript" for improved clarity.
  • Localization

    • Updated translations in German, Spanish, French, Italian, and Dutch to reflect the new anonymization feature text.

…ion component

- Changed label from "Use PII Redaction" to "Anonymize transcript" for clarity.
- Updated descriptions to specify that personal information will be replaced with placeholders and that audio playback, download, and retranscription will be disabled for the new conversation.
- Added corresponding translations in German, Spanish, French, and Italian locales.
@linear
Copy link
Copy Markdown

linear bot commented Mar 18, 2026

@ussaama ussaama requested a review from spashii March 18, 2026 11:16
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 18, 2026

Walkthrough

Updates UI text and translations for anonymization feature in RetranscribeConversation component. Changes "Use PII Redaction" label to "Anonymize transcript" and refreshes descriptions across all supported locales (en-US, de-DE, es-ES, fr-FR, it-IT, nl-NL) to emphasize placeholder replacement and disabled playback/download/retranscription behavior. Pure text updates, no logic modifications.

Changes

Cohort / File(s) Summary
Anonymization UI Component
echo/frontend/src/components/conversation/RetranscribeConversation.tsx
Updated Switch label from "Use PII Redaction" to "Anonymize transcript" and revised description text to clarify placeholder replacement and disabled features for anonymized conversations.
Localization Files
echo/frontend/src/locales/{en-US,de-DE,es-ES,fr-FR,it-IT,nl-NL}.po
Added new translation entries for "Anonymize transcript" and "Anonymize Transcripts" across all locales; updated existing project default messages to reflect placeholder-based wording and disabled audio/download/retranscription behavior; deprecated obsolete PII redaction phrasing as #~ entries.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

  • Dembrane/echo#437: Modifies the same RetranscribeConversation.tsx component with related anonymization UI changes (component/tooltip/disabled behavior).
  • Dembrane/echo#469: Updates identical localization strings across .po files for anonymization-related messaging.
  • Dembrane/echo#302: Performs frontend localization updates including nl-NL.po and related translation entries.

Suggested labels

improvement

🚥 Pre-merge checks | ✅ 3
✅ 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 clearly and specifically summarizes the main change: renaming the conversation retranscribe anonymize option to match the Portal Editor's naming convention.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch retranscribe-pii-option-alignment
📝 Coding Plan
  • Generate coding plan for human review comments

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

❤️ Share

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

Tip

You can enable review details to help with troubleshooting, context usage and more.

Enable the reviews.review_details setting to include review details such as the model used, the time taken for each step and more in the review comments.

Copy link
Copy Markdown
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: 4

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

Inline comments:
In `@echo/frontend/src/components/conversation/RetranscribeConversation.tsx`:
- Around line 178-182: The description text currently only checks
projectAnonymize and ignores the actual toggle state usePiiRedaction in the
RetranscribeConversation component; update the logic that builds the description
(the JSX passed to the description prop next to label "Anonymize transcript") to
branch on usePiiRedaction first and only state that personal info will be
replaced and that audio playback/download/retranscription will be disabled when
usePiiRedaction is true, and when usePiiRedaction is false show the
non-anonymized copy (but still mention "Project default: enabled" if
projectAnonymize is true to indicate the default); locate the description
construction near the label prop in RetranscribeConversation and adjust the
conditional expressions to reference usePiiRedaction then fall back to
projectAnonymize for the default note.

In `@echo/frontend/src/locales/en-US.po`:
- Around line 3659-3661: The message string with msgid "Project default:
enabled. Disables audio playback, download, and retranscription." is ambiguous
about scope; update that msgid/msgstr (and the duplicate around lines 3910–3913)
to explicitly state the restriction applies to the new conversation (e.g.,
append "for the new conversation" or similar), ensuring both occurrences are
changed consistently so readers know the restrictions target the newly created
conversation.
- Around line 810-813: The new locale strings (msgids "Project default:
enabled...", "Replaces personal information..." and "Anonymize transcript")
exist in en-US but are missing from nl-NL, de-DE, fr-FR, es-ES and it-IT; add
corresponding msgstr entries for these msgids in each of those locale .po files,
ensuring exact msgid matches and correct translation text for each language, and
run the localization validation/lint step to confirm coverage before merging.

In `@echo/frontend/src/locales/fr-FR.po`:
- Around line 3264-3266: The French translation uses "marqueurs" for
"placeholders" but project copy already uses "placeholders" — update the msgstr
for the msgid "Personal information will be replaced with placeholders. Audio
playback, download, and retranscription will be disabled for the new
conversation." (from
src/components/conversation/RetranscribeConversation.tsx:182) to use the same FR
term "placeholders" instead of "marqueurs", and make the same replacement for
the other occurrence referenced (around lines 3454-3456) so FR wording is
consistent across the file.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 0709025c-1174-456e-8080-e0583a07998b

📥 Commits

Reviewing files that changed from the base of the PR and between 68eaa10 and 7dba31a.

📒 Files selected for processing (13)
  • echo/frontend/src/components/conversation/RetranscribeConversation.tsx
  • echo/frontend/src/locales/de-DE.po
  • echo/frontend/src/locales/de-DE.ts
  • echo/frontend/src/locales/en-US.po
  • echo/frontend/src/locales/en-US.ts
  • echo/frontend/src/locales/es-ES.po
  • echo/frontend/src/locales/es-ES.ts
  • echo/frontend/src/locales/fr-FR.po
  • echo/frontend/src/locales/fr-FR.ts
  • echo/frontend/src/locales/it-IT.po
  • echo/frontend/src/locales/it-IT.ts
  • echo/frontend/src/locales/nl-NL.po
  • echo/frontend/src/locales/nl-NL.ts

Comment on lines +178 to +182
label={t`Anonymize transcript`}
description={
projectAnonymize
? t`Project default: enabled. This will replace personally identifiable information with <redacted>.`
: t`This will replace personally identifiable information with <redacted>.`
? t`Project default: enabled. Personal information will be replaced with placeholders. Audio playback, download, and retranscription will be disabled for the new conversation.`
: t`Personal information will be replaced with placeholders. Audio playback, download, and retranscription will be disabled for the new conversation.`
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Retranscribe UI and payload ==="
rg -n -C3 '\busePiiRedaction\b|\buseRetranscribeConversationMutation\b|\bmutateAsync\s*\(' \
  echo/frontend/src/components/conversation

echo
echo "=== Server-side anonymization implementation ==="
fd 'ner\.py$|quote_utils\.py$' echo/server -x sh -c '
  echo "--- {} ---"
  sed -n "1,220p" "{}"
'

echo
echo "=== End-to-end anonymization references ==="
rg -n -C3 '\banonymize_transcripts\b|\banonymiz(e|ed|ation)\b|\bredact(ed|ion)?\b|\bpii\b' \
  echo/frontend echo/server

Repository: Dembrane/echo

Length of output: 50370


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Frontend: retranscribeConversation function definition ==="
rg -n -A 10 'export.*retranscribeConversation|function retranscribeConversation' \
  echo/frontend/src --type ts --type tsx | head -50

echo
echo "=== Backend: retranscribe endpoint or handler ==="
fd -e py -e js -e ts | xargs rg -l 'retranscribe' | head -10

echo
echo "=== Backend: usePiiRedaction parameter handling ==="
rg -n 'usePiiRedaction|pii_redaction|piiRedaction' \
  echo/server echo/backend --type py --type js --type ts 2>/dev/null || echo "No matches in backend"

echo
echo "=== Backend: anonymization implementation status ==="
rg -n 'def.*anonymize|async.*anonymize|\banonymiz' \
  echo/server --type py --type js | head -30 || echo "No matches found"

Repository: Dembrane/echo

Length of output: 164


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Frontend: retranscribeConversation function definition ==="
rg -n -A 15 'export.*retranscribeConversation|function retranscribeConversation' \
  echo/frontend/src -t py -t js 2>/dev/null | head -60 || \
  fd retranscribeConversation echo/frontend/src -x cat {}

echo
echo "=== Find all retranscribe references in frontend ==="
fd -e ts -e tsx echo/frontend/src | xargs rg -l 'retranscribe' | head -5

echo
echo "=== Show retranscribeConversation API function ==="
fd -e ts -e tsx echo/frontend/src/components/conversation | xargs grep -A 20 'retranscribeConversation'

echo
echo "=== Backend handling of retranscribe ==="
fd -e py echo/server | xargs rg -l 'retranscribe' 2>/dev/null | head -5

echo
echo "=== Check for usePiiRedaction in backend ==="
fd -e py echo/server | xargs grep -n 'pii\|redaction\|anonymize' 2>/dev/null | head -20

Repository: Dembrane/echo

Length of output: 797


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== retranscribeConversation hook definition ==="
cat -n echo/frontend/src/components/conversation/hooks/index.ts | sed -n '620,660p'

echo
echo "=== retranscribeConversation call in RetranscribeConversation.tsx ==="
cat -n echo/frontend/src/components/conversation/RetranscribeConversation.tsx | sed -n '85,115p'

echo
echo "=== Backend: Search for retranscribe endpoint ==="
fd . echo/server -type f -name "*.py" | xargs grep -l retranscribe 2>/dev/null || echo "No retranscribe in backend"

echo
echo "=== Backend: Check directus or API integration ==="
fd . echo/server -type f -name "*.py" | xargs grep -l 'pii\|anonymize' 2>/dev/null | head -5

echo
echo "=== Check if server/backend exists and what files are there ==="
find echo/server -maxdepth 2 -type f -name "*.py" | head -10

Repository: Dembrane/echo

Length of output: 3137


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Check what's in echo/server ==="
ls -la echo/server 2>/dev/null | head -20 || echo "echo/server does not exist or is empty"

echo
echo "=== Check if there's a backend/server directory elsewhere ==="
find . -maxdepth 3 -type d -name "server" -o -name "backend" 2>/dev/null | head -10

echo
echo "=== Frontend retranscribeConversation function - check api.ts or similar ==="
fd . echo/frontend/src -name "*.ts" | xargs grep -l "retranscribeConversation" | xargs cat | grep -A 30 "retranscribeConversation\s*="

echo
echo "=== Check if retranscribeConversation makes a directus call ==="
fd . echo/frontend/src -name "*.ts" | xargs grep -B 5 -A 15 "retranscribeConversation.*=" | head -50

echo
echo "=== Check directus request types for retranscribe ==="
rg "retranscribe" echo/frontend/src/lib 2>/dev/null || echo "No retranscribe in lib"

Repository: Dembrane/echo

Length of output: 1728


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Find the retranscribeConversation function definition ==="
fd . echo/frontend/src -name "*.ts" | xargs grep -l "retranscribeConversation.*=" | xargs -I {} sh -c 'echo "File: {}"; cat "{}" | grep -A 25 "const retranscribeConversation\|export.*retranscribeConversation"'

echo
echo "=== Check dembrane server directory structure ==="
find echo/server/dembrane -type f -name "*.py" | head -20

echo
echo "=== Look for retranscribe in dembrane backend ==="
find echo/server/dembrane -type f -name "*.py" | xargs grep -l "retranscribe" 2>/dev/null || echo "No retranscribe found in backend"

echo
echo "=== Check for ner.py and quote_utils.py ==="
find echo/server -name "ner.py" -o -name "quote_utils.py" | xargs ls -la

Repository: Dembrane/echo

Length of output: 368


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Find retranscribeConversation function ==="
find echo/frontend/src -name "*.ts" -o -name "*.tsx" | xargs grep -l "retranscribeConversation = " | head -1 | xargs cat | grep -A 25 "const retranscribeConversation"

echo
echo "=== Backend structure ==="
find echo/server/dembrane -type f -name "*.py" | head -20

echo
echo "=== Search for retranscribe in backend ==="
find echo/server -type f -name "*.py" | xargs grep "retranscribe" 2>/dev/null | head -10

echo
echo "=== Check ner.py and quote_utils.py status ==="
find echo/server -type f \( -name "ner.py" -o -name "quote_utils.py" \) -exec ls -la {} \;

echo
echo "=== Check ner.py content ==="
find echo/server -name "ner.py" -exec cat {} \;

Repository: Dembrane/echo

Length of output: 2250


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Get retranscribe_conversation implementation ==="
cat echo/server/dembrane/api/conversation.py | grep -A 80 "async def retranscribe_conversation"

echo
echo "=== Check if anonymization/PII redaction is actually applied ==="
grep -n "use_pii_redaction\|pii\|anonymize\|redact" echo/server/dembrane/api/conversation.py | head -20

echo
echo "=== Check if ner.py or quote_utils.py exist ==="
find echo/server -name "ner.py" -o -name "quote_utils.py"

echo
echo "=== Search for PII/anonymization anywhere in backend ==="
find echo/server/dembrane -type f -name "*.py" | xargs grep -l "pii\|anonymize\|redact" 2>/dev/null | head -10

Repository: Dembrane/echo

Length of output: 4156


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Check task_process_conversation_chunk and use_pii_redaction handling ==="
grep -A 30 "task_process_conversation_chunk\|def.*process_conversation_chunk" echo/server/dembrane/tasks.py | head -60

echo
echo "=== Check transcribe.py for PII redaction ==="
grep -n "use_pii_redaction\|anonymize\|pii" echo/server/dembrane/transcribe.py | head -20

echo
echo "=== Check pii_regex.py ==="
head -50 echo/server/dembrane/pii_regex.py

echo
echo "=== Check how redaction is actually done ==="
grep -B 5 -A 15 "redact\|anonymize" echo/server/dembrane/transcribe.py | head -80

Repository: Dembrane/echo

Length of output: 8078


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Show exact lines 178-187 of RetranscribeConversation.tsx ==="
sed -n '175,190p' echo/frontend/src/components/conversation/RetranscribeConversation.tsx

echo
echo "=== Verify that use_pii_redaction is actually used in transcription ==="
grep -B 5 -A 10 "anonymize_transcripts\|use_pii_redaction" echo/server/dembrane/transcribe.py | grep -A 10 "def task_transcribe_audio_chunk\|def transcribe_audio" | head -50

Repository: Dembrane/echo

Length of output: 1545


UI description text ignores the toggle state.

The description prop branches on projectAnonymize only, not usePiiRedaction. When the toggle is OFF (unchecked), the modal still promises anonymization and disabled playback/download/retranscription, which is false. The backend correctly implements redaction via the use_pii_redaction parameter through the transcription pipeline, so the issue is purely on the frontend copy.

Fix
label={t`Anonymize transcript`}
description={
-	projectAnonymize
-		? t`Project default: enabled. Personal information will be replaced with placeholders. Audio playback, download, and retranscription will be disabled for the new conversation.`
-		: t`Personal information will be replaced with placeholders. Audio playback, download, and retranscription will be disabled for the new conversation.`
+	usePiiRedaction
+		? projectAnonymize
+			? t`Project default: enabled. Personal information will be replaced with placeholders. Audio playback, download, and retranscription will be disabled for the new conversation.`
+			: t`Personal information will be replaced with placeholders. Audio playback, download, and retranscription will be disabled for the new conversation.`
+		: projectAnonymize
+			? t`Project default: enabled. Enable this to anonymize the new conversation.`
+			: t`Personal information will not be anonymized. Audio playback, download, and retranscription will remain available.`
}
📝 Committable suggestion

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

Suggested change
label={t`Anonymize transcript`}
description={
projectAnonymize
? t`Project default: enabled. This will replace personally identifiable information with <redacted>.`
: t`This will replace personally identifiable information with <redacted>.`
? t`Project default: enabled. Personal information will be replaced with placeholders. Audio playback, download, and retranscription will be disabled for the new conversation.`
: t`Personal information will be replaced with placeholders. Audio playback, download, and retranscription will be disabled for the new conversation.`
label={t`Anonymize transcript`}
description={
usePiiRedaction
? projectAnonymize
? t`Project default: enabled. Personal information will be replaced with placeholders. Audio playback, download, and retranscription will be disabled for the new conversation.`
: t`Personal information will be replaced with placeholders. Audio playback, download, and retranscription will be disabled for the new conversation.`
: projectAnonymize
? t`Project default: enabled. Enable this to anonymize the new conversation.`
: t`Personal information will not be anonymized. Audio playback, download, and retranscription will remain available.`
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@echo/frontend/src/components/conversation/RetranscribeConversation.tsx`
around lines 178 - 182, The description text currently only checks
projectAnonymize and ignores the actual toggle state usePiiRedaction in the
RetranscribeConversation component; update the logic that builds the description
(the JSX passed to the description prop next to label "Anonymize transcript") to
branch on usePiiRedaction first and only state that personal info will be
replaced and that audio playback/download/retranscription will be disabled when
usePiiRedaction is true, and when usePiiRedaction is false show the
non-anonymized copy (but still mention "Project default: enabled" if
projectAnonymize is true to indicate the default); locate the description
construction near the label prop in RetranscribeConversation and adjust the
conditional expressions to reference usePiiRedaction then fall back to
projectAnonymize for the default note.

Comment on lines +810 to +813
#: src/components/conversation/RetranscribeConversation.tsx:178
msgid "Anonymize transcript"
msgstr "Anonymize transcript"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

required_locales=("en-US" "nl-NL" "de-DE" "fr-FR" "es-ES" "it-IT")
required_msgids=(
  "Anonymize transcript"
  "Project default: enabled. Disables audio playback, download, and retranscription."
  "Replaces personal information with placeholders. Disables audio playback, download, and retranscription."
)

for locale in "${required_locales[@]}"; do
  file="$(fd "${locale}\.po$" echo/frontend/src/locales | head -n1 || true)"
  if [[ -z "${file}" ]]; then
    echo "MISSING FILE: ${locale}.po"
    continue
  fi

  echo "== ${locale} :: ${file} =="
  for msg in "${required_msgids[@]}"; do
    if rg -nF "msgid \"${msg}\"" "${file}" >/dev/null; then
      echo "  OK    ${msg}"
    else
      echo "  MISS  ${msg}"
    fi
  done
done

Repository: Dembrane/echo

Length of output: 1748


Locale coverage incomplete for new msgids—these need to be added to all required locales before merge.

The verification gate confirms that while en-US.po has the new msgids, they're missing from nl-NL, de-DE, fr-FR, es-ES, and it-IT:

  • ✅ en-US: All 3 msgids present
  • ❌ nl-NL, de-DE, fr-FR, es-ES, it-IT: Missing "Project default: enabled..." and "Replaces personal information..."

Per coding guidelines, all supported languages must have coverage. Add the translations to the remaining locale files.

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

In `@echo/frontend/src/locales/en-US.po` around lines 810 - 813, The new locale
strings (msgids "Project default: enabled...", "Replaces personal
information..." and "Anonymize transcript") exist in en-US but are missing from
nl-NL, de-DE, fr-FR, es-ES and it-IT; add corresponding msgstr entries for these
msgids in each of those locale .po files, ensuring exact msgid matches and
correct translation text for each language, and run the localization
validation/lint step to confirm coverage before merging.

Comment on lines +3659 to +3661
msgid "Project default: enabled. Disables audio playback, download, and retranscription."
msgstr "Project default: enabled. Disables audio playback, download, and retranscription."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Copy lost scope clarity for retranscribe output.

Line 3659 and Line 3911 no longer say the restrictions apply to the new conversation, which can read broader than intended in this flow.

💡 Suggested copy tweak
-msgid "Project default: enabled. Disables audio playback, download, and retranscription."
-msgstr "Project default: enabled. Disables audio playback, download, and retranscription."
+msgid "Project default: enabled. Disables audio playback, download, and retranscription for the new conversation."
+msgstr "Project default: enabled. Disables audio playback, download, and retranscription for the new conversation."

-msgid "Replaces personal information with placeholders. Disables audio playback, download, and retranscription."
-msgstr "Replaces personal information with placeholders. Disables audio playback, download, and retranscription."
+msgid "Replaces personal information with placeholders. Disables audio playback, download, and retranscription for the new conversation."
+msgstr "Replaces personal information with placeholders. Disables audio playback, download, and retranscription for the new conversation."

Also applies to: 3910-3913

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

In `@echo/frontend/src/locales/en-US.po` around lines 3659 - 3661, The message
string with msgid "Project default: enabled. Disables audio playback, download,
and retranscription." is ambiguous about scope; update that msgid/msgstr (and
the duplicate around lines 3910–3913) to explicitly state the restriction
applies to the new conversation (e.g., append "for the new conversation" or
similar), ensuring both occurrences are changed consistently so readers know the
restrictions target the newly created conversation.

Comment on lines +3264 to +3266
#: src/components/conversation/RetranscribeConversation.tsx:182
msgid "Personal information will be replaced with placeholders. Audio playback, download, and retranscription will be disabled for the new conversation."
msgstr "Les informations personnelles seront remplacées par des marqueurs. La lecture audio, le téléchargement et la retranscription seront désactivés pour la nouvelle conversation."
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Not quite LGTM — keep the FR term for “placeholders” consistent.

These new descriptions use marqueurs, but the existing project-level anonymization copy in this same file already uses placeholders for the same behavior. Since this PR is meant to align the retranscribe copy with Portal Editor, FR users will otherwise see two different terms for one feature.

💬 Suggested wording
-msgstr "Les informations personnelles seront remplacées par des marqueurs. La lecture audio, le téléchargement et la retranscription seront désactivés pour la nouvelle conversation."
+msgstr "Les informations personnelles seront remplacées par des placeholders. La lecture audio, le téléchargement et la retranscription seront désactivés pour la nouvelle conversation."

-msgstr "Projet par défaut : activé. Les informations personnelles seront remplacées par des marqueurs. La lecture audio, le téléchargement et la retranscription seront désactivés pour la nouvelle conversation."
+msgstr "Projet par défaut : activé. Les informations personnelles seront remplacées par des placeholders. La lecture audio, le téléchargement et la retranscription seront désactivés pour la nouvelle conversation."

Also applies to: 3454-3456

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

In `@echo/frontend/src/locales/fr-FR.po` around lines 3264 - 3266, The French
translation uses "marqueurs" for "placeholders" but project copy already uses
"placeholders" — update the msgstr for the msgid "Personal information will be
replaced with placeholders. Audio playback, download, and retranscription will
be disabled for the new conversation." (from
src/components/conversation/RetranscribeConversation.tsx:182) to use the same FR
term "placeholders" instead of "marqueurs", and make the same replacement for
the other occurrence referenced (around lines 3454-3456) so FR wording is
consistent across the file.

@ussaama ussaama added this pull request to the merge queue Mar 18, 2026
Merged via the queue into main with commit df15abc Mar 18, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants