Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 89 additions & 0 deletions config/locales/ca.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
---
ca:
decidim:
chatbot:
admin:
menu:
chatbot: Chatbot
settings:
edit:
title: Chatbot configuration
form:
cancel: Cancel
configuration_for: Configuration for %{workflow}
current_workflow: Current workflow (%{provider})
enabled: Enabled
loading: Loading...
no_extra_settings: No additional configuration needed for this workflow.
save: Save settings
index:
configure: Configure
title: Chatbot Settings
organization_welcome_form:
custom_text: Initial message (defaults to organization's short description)
delegate_workflow: Choose the workflow to handle the "Participate" button
errors:
invalid_delegate_workflow: The selected workflow is not valid or not configured.
no_workflows_available: No workflows available
single_participatory_space_form:
component: Choose the component
errors:
component_id_blank: Component is required
participatory_space_gid_blank: Participatory space is required
instructions: Instructions (optional) - displayed before showing the space information
participatory_space: Choose the participatory space
select_component: Select a component...
select_space: Select a participatory space...
select_space_first: Select a participatory space first
toggle:
disabled: Chatbot has been disabled.
enabled: Chatbot has been enabled.
update:
error: There was an error saving the settings.
success: Chatbot settings saved successfully.
messages:
deactivated: The chatbot is currently deactivated. Please try again later.
generic_error: Sorry, something went wrong while processing your request. Please try again later.
reset_workflows: Thanks for participating! You can start again by sending any message.
stale_cleared: Your previous session was cleared due to inactivity. Starting fresh!
providers:
whatsapp:
description: Enable to receive and respond to messages via WhatsApp Business API.
name: WhatsApp
workflows:
base:
buttons:
exit: Exit & go back
reset: End conversation
unprocessable_input: Sorry, I couldn't process that. Please try again with a different message or use "Exit & go back" or "End conversation" to start over.
comments:
buttons:
exit: Cancel & go back
submit: Publish comment
comment_created: 'Your comment has been published successfully! You can view it here:'
comment_creation_failed: Unfortunately, your comment could not be published. Please try again or contact support.
comment_received: Here is your comment, if you want to change it just send a new message. If you're happy with it, click "Publish comment".
instructions: Thanks for your interest in commenting "%{title}"! Please write your comment below and send it to me. You will have the chance to review and edit your comment before submitting it.
resource_not_found: Unfortunately, the requested resource could not be found. Please choose another one or exit and restart.
signature: |2-


Sent via %{provider}
organization_welcome:
title: Organization Welcome
proposals:
buttons:
comment: Comment proposal
more: View more
view_proposal: View proposal
comments_disabled: Commenting is disabled for this proposal.
no_more_proposals: There are no more proposals to show. Please choose one of the proposals above.
no_proposals: There are no proposals published yet. Please check back later.
remaining_proposals: There are %{count} more proposals. Click "View more" to see them.
single_participatory_space:
buttons:
more_info: More info
participate: Participate
no_spaces: There are no active participatory spaces at the moment. Please try again later.
not_ready_yet: This feature is not ready yet. Please try again later.
title: Single Participatory Space
Comment on lines 1 to 89
Copy link

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
# Find all locale files in the config/locales directory
echo "=== Checking what locale files exist ==="
find config/locales -name "*.yml" -type f | sort

echo ""
echo "=== File sizes comparison ==="
ls -lh config/locales/*.yml 2>/dev/null | grep -E "(ca|de|es|fr|ja|pt|en)" || echo "No matching files found"

Repository: openpoke/decidim-module-chatbot

Length of output: 797


🏁 Script executed:

#!/bin/bash
# Check if en.yml exists and compare sizes
echo "=== Comparing file sizes of all 6 locale files ==="
for file in ca de es fr ja pt; do
  wc -l "config/locales/${file}.yml" 2>/dev/null || echo "File config/locales/${file}.yml not found"
done

echo ""
echo "=== Check for English base ==="
wc -l config/locales/en.yml 2>/dev/null || echo "en.yml not found"

Repository: openpoke/decidim-module-chatbot

Length of output: 332


🏁 Script executed:

#!/bin/bash
# Extract and compare content (excluding first 2 lines with locale key)
echo "=== Comparing ca.yml vs de.yml (excluding top-level key) ==="
diff <(tail -n +3 config/locales/ca.yml) <(tail -n +3 config/locales/de.yml) | head -20

echo ""
echo "=== Comparing ca.yml vs en.yml (if en.yml exists) ==="
if [ -f config/locales/en.yml ]; then
  diff <(tail -n +3 config/locales/ca.yml) <(tail -n +3 config/locales/en.yml) | head -20
else
  echo "en.yml not found"
fi

Repository: openpoke/decidim-module-chatbot

Length of output: 383


🏁 Script executed:

#!/bin/bash
# Read first 20 lines of ca.yml and de.yml to spot check
echo "=== First 20 lines of ca.yml ==="
head -20 config/locales/ca.yml

echo ""
echo "=== First 20 lines of de.yml ==="
head -20 config/locales/de.yml

echo ""
echo "=== First 20 lines of en.yml ==="
head -20 config/locales/en.yml

Repository: openpoke/decidim-module-chatbot

Length of output: 1837


🏁 Script executed:

#!/bin/bash
# Extract just the content lines (skip YAML key line) for comparison
echo "=== Content of ca.yml (lines 3-20) ==="
sed -n '3,20p' config/locales/ca.yml

echo ""
echo "=== Content of de.yml (lines 3-20) ==="
sed -n '3,20p' config/locales/de.yml

echo ""
echo "=== Content of en.yml (lines 3-20) ==="
sed -n '3,20p' config/locales/en.yml

echo ""
echo "=== Are ca and de identical (except locale key)? ==="
diff <(sed '1,2d' config/locales/ca.yml) <(sed '1,2d' config/locales/de.yml) && echo "YES - identical" || echo "NO - different"

Repository: openpoke/decidim-module-chatbot

Length of output: 2005


🏁 Script executed:

#!/bin/bash
# Check specific translation examples
echo "=== Checking specific keys across files ==="
echo "ca.yml line with 'cancel':"
grep -n "cancel:" config/locales/ca.yml | head -1

echo ""
echo "de.yml line with 'cancel':"
grep -n "cancel:" config/locales/de.yml | head -1

echo ""
echo "en.yml line with 'cancel':"
grep -n "cancel:" config/locales/en.yml | head -1

echo ""
echo "=== Check actual values for 'enabled' key ==="
grep "enabled:" config/locales/ca.yml
grep "enabled:" config/locales/de.yml
grep "enabled:" config/locales/en.yml

Repository: openpoke/decidim-module-chatbot

Length of output: 566


🏁 Script executed:

#!/bin/bash
# Copy files and compare directly
cp config/locales/ca.yml /tmp/ca.yml
cp config/locales/de.yml /tmp/de.yml
cp config/locales/en.yml /tmp/en.yml
cp config/locales/es.yml /tmp/es.yml
cp config/locales/fr.yml /tmp/fr.yml
cp config/locales/ja.yml /tmp/ja.yml
cp config/locales/pt.yml /tmp/pt.yml

echo "=== Full diff: ca.yml vs de.yml ==="
diff /tmp/ca.yml /tmp/de.yml | head -30

echo ""
echo "=== Full diff: ca.yml vs en.yml (showing first 30 lines of diff) ==="
diff /tmp/ca.yml /tmp/en.yml | head -40

echo ""
echo "=== Full diff: ca.yml vs es.yml ==="
diff /tmp/ca.yml /tmp/es.yml | head -20

Repository: openpoke/decidim-module-chatbot

Length of output: 2507


🏁 Script executed:

#!/bin/bash
# Check if all 6 non-English files are identical to each other
echo "=== Checking if all 6 non-English files are identical ==="
for file in de es fr ja pt; do
  if diff /tmp/ca.yml /tmp/${file}.yml > /dev/null 2>&1; then
    echo "${file}.yml: IDENTICAL to ca.yml"
  else
    echo "${file}.yml: DIFFERENT from ca.yml"
  fi
done

echo ""
echo "=== Last 10 lines of ca.yml ==="
tail -10 /tmp/ca.yml

echo ""
echo "=== Last 10 lines of en.yml ==="
tail -10 /tmp/en.yml

echo ""
echo "=== Checking for non-English content in ca.yml ==="
# Look for accented characters or non-ASCII to detect translations
grep -n '[áàâäéèêëíìîïóòôöúùûüñç]' /tmp/ca.yml | head -5 || echo "No Catalan accents found (file likely untranslated)"

Repository: openpoke/decidim-module-chatbot

Length of output: 1462


All translation values in the six locale files are untranslated English — no actual Catalan, German, Spanish, French, Japanese, or Portuguese strings are present.

The files ca.yml, de.yml, es.yml, fr.yml, ja.yml, and pt.yml are byte-for-byte identical except for the top-level locale key. Every string value is in English:

  • Line 12: cancel: Cancel (should be "Cancel·la" in Catalan, "Abbrechen" in German, etc.)
  • Line 15: enabled: Enabled (should be "Activat", "Aktiviert", etc.)
  • All 85 lines of user-facing text (Lines 44–85) are entirely in English

Shipping these files means the application will advertise support for six languages while displaying only English to users in those locales, degrading their experience. Verify that the Crowdin project has completed translations for these languages before syncing, or remove these files until translations are ready.

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

In `@config/locales/ca.yml` around lines 1 - 85, The locale files (e.g., top-level
key "ca:" under decidim.chatbot) contain only English strings (keys like
"cancel", "enabled", messages under "workflows", "providers", etc.); replace
each English value with the correct Catalan translations (or remove the locale
file) and ensure the Crowdin translation sync is complete before committing;
specifically update values for keys such as cancel, enabled, loading, save,
configuration_for, current_workflow,
messages.deactivated/reset_workflows/generic_error,
providers.whatsapp.description/name, and all workflows.* strings, or omit the
locale files until verified translations exist.

89 changes: 89 additions & 0 deletions config/locales/de.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
---
de:
decidim:
chatbot:
admin:
menu:
chatbot: Chatbot
settings:
edit:
title: Chatbot configuration
form:
cancel: Cancel
configuration_for: Configuration for %{workflow}
current_workflow: Current workflow (%{provider})
enabled: Enabled
loading: Loading...
no_extra_settings: No additional configuration needed for this workflow.
save: Save settings
index:
configure: Configure
title: Chatbot Settings
organization_welcome_form:
custom_text: Initial message (defaults to organization's short description)
delegate_workflow: Choose the workflow to handle the "Participate" button
errors:
invalid_delegate_workflow: The selected workflow is not valid or not configured.
no_workflows_available: No workflows available
single_participatory_space_form:
component: Choose the component
errors:
component_id_blank: Component is required
participatory_space_gid_blank: Participatory space is required
instructions: Instructions (optional) - displayed before showing the space information
participatory_space: Choose the participatory space
select_component: Select a component...
select_space: Select a participatory space...
select_space_first: Select a participatory space first
toggle:
disabled: Chatbot has been disabled.
enabled: Chatbot has been enabled.
update:
error: There was an error saving the settings.
success: Chatbot settings saved successfully.
messages:
deactivated: The chatbot is currently deactivated. Please try again later.
generic_error: Sorry, something went wrong while processing your request. Please try again later.
reset_workflows: Thanks for participating! You can start again by sending any message.
stale_cleared: Your previous session was cleared due to inactivity. Starting fresh!
providers:
whatsapp:
description: Enable to receive and respond to messages via WhatsApp Business API.
name: WhatsApp
workflows:
base:
buttons:
exit: Exit & go back
reset: End conversation
unprocessable_input: Sorry, I couldn't process that. Please try again with a different message or use "Exit & go back" or "End conversation" to start over.
comments:
buttons:
exit: Cancel & go back
submit: Publish comment
comment_created: 'Your comment has been published successfully! You can view it here:'
comment_creation_failed: Unfortunately, your comment could not be published. Please try again or contact support.
comment_received: Here is your comment, if you want to change it just send a new message. If you're happy with it, click "Publish comment".
instructions: Thanks for your interest in commenting "%{title}"! Please write your comment below and send it to me. You will have the chance to review and edit your comment before submitting it.
resource_not_found: Unfortunately, the requested resource could not be found. Please choose another one or exit and restart.
signature: |2-


Sent via %{provider}
organization_welcome:
title: Organization Welcome
proposals:
buttons:
comment: Comment proposal
more: View more
view_proposal: View proposal
comments_disabled: Commenting is disabled for this proposal.
no_more_proposals: There are no more proposals to show. Please choose one of the proposals above.
no_proposals: There are no proposals published yet. Please check back later.
remaining_proposals: There are %{count} more proposals. Click "View more" to see them.
single_participatory_space:
buttons:
more_info: More info
participate: Participate
no_spaces: There are no active participatory spaces at the moment. Please try again later.
not_ready_yet: This feature is not ready yet. Please try again later.
title: Single Participatory Space
Comment on lines +1 to +89
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

German translations are missing — file contains English text only.

This locale file is declared as de: (German) but all string values remain in English. For example:

  • Line 12: cancel: Cancel → should be cancel: Abbrechen
  • Line 16: loading: Loading... → should be loading: Laden...
  • Line 18: save: Save settings → should be save: Einstellungen speichern

German-speaking users will see untranslated English text throughout the chatbot UI. Please ensure actual German translations are provided before merging, or coordinate with Crowdin to sync completed translations.

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

In `@config/locales/de.yml` around lines 1 - 89, The de locale contains English
strings under keys like de.decidem.chatbot.admin.form.cancel,
de.decidem.chatbot.admin.form.loading, de.decidem.chatbot.admin.form.save and
many others; replace those English values with proper German translations (e.g.,
"Cancel" -> "Abbrechen", "Loading..." -> "Laden...", "Save settings" ->
"Einstellungen speichern") across all keys under de.decidem.chatbot.* or
synchronize the file with Crowdin/your translation source so the entire subtree
(admin, messages, providers, workflows, etc.) is translated into German before
merging.

89 changes: 89 additions & 0 deletions config/locales/es.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
---
es:
decidim:
chatbot:
admin:
menu:
chatbot: Chatbot
settings:
edit:
title: Chatbot configuration
form:
cancel: Cancel
configuration_for: Configuration for %{workflow}
current_workflow: Current workflow (%{provider})
enabled: Enabled
loading: Loading...
no_extra_settings: No additional configuration needed for this workflow.
save: Save settings
index:
configure: Configure
title: Chatbot Settings
organization_welcome_form:
custom_text: Initial message (defaults to organization's short description)
delegate_workflow: Choose the workflow to handle the "Participate" button
errors:
invalid_delegate_workflow: The selected workflow is not valid or not configured.
no_workflows_available: No workflows available
single_participatory_space_form:
component: Choose the component
errors:
component_id_blank: Component is required
participatory_space_gid_blank: Participatory space is required
instructions: Instructions (optional) - displayed before showing the space information
participatory_space: Choose the participatory space
select_component: Select a component...
select_space: Select a participatory space...
select_space_first: Select a participatory space first
toggle:
disabled: Chatbot has been disabled.
enabled: Chatbot has been enabled.
update:
error: There was an error saving the settings.
success: Chatbot settings saved successfully.
messages:
deactivated: The chatbot is currently deactivated. Please try again later.
generic_error: Sorry, something went wrong while processing your request. Please try again later.
reset_workflows: Thanks for participating! You can start again by sending any message.
stale_cleared: Your previous session was cleared due to inactivity. Starting fresh!
providers:
whatsapp:
description: Enable to receive and respond to messages via WhatsApp Business API.
name: WhatsApp
workflows:
base:
buttons:
exit: Exit & go back
reset: End conversation
unprocessable_input: Sorry, I couldn't process that. Please try again with a different message or use "Exit & go back" or "End conversation" to start over.
comments:
buttons:
exit: Cancel & go back
submit: Publish comment
comment_created: 'Your comment has been published successfully! You can view it here:'
comment_creation_failed: Unfortunately, your comment could not be published. Please try again or contact support.
comment_received: Here is your comment, if you want to change it just send a new message. If you're happy with it, click "Publish comment".
instructions: Thanks for your interest in commenting "%{title}"! Please write your comment below and send it to me. You will have the chance to review and edit your comment before submitting it.
resource_not_found: Unfortunately, the requested resource could not be found. Please choose another one or exit and restart.
signature: |2-


Sent via %{provider}
organization_welcome:
title: Organization Welcome
proposals:
buttons:
comment: Comment proposal
more: View more
view_proposal: View proposal
comments_disabled: Commenting is disabled for this proposal.
no_more_proposals: There are no more proposals to show. Please choose one of the proposals above.
no_proposals: There are no proposals published yet. Please check back later.
remaining_proposals: There are %{count} more proposals. Click "View more" to see them.
single_participatory_space:
buttons:
more_info: More info
participate: Participate
no_spaces: There are no active participatory spaces at the moment. Please try again later.
not_ready_yet: This feature is not ready yet. Please try again later.
title: Single Participatory Space
Comment on lines +1 to +89
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Spanish translations are missing — file contains English text only.

This locale file is declared as es: (Spanish) but all string values remain in English. For example:

  • Line 12: cancel: Cancel → should be cancel: Cancelar
  • Line 16: loading: Loading... → should be loading: Cargando...
  • Line 18: save: Save settings → should be save: Guardar configuración

Spanish-speaking users will see untranslated English text throughout the chatbot UI. Please ensure actual Spanish translations are provided before merging, or coordinate with Crowdin to sync completed translations.

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

In `@config/locales/es.yml` around lines 1 - 89, The es locale currently contains
English strings; replace all English values under the es.decidim.chatbot
namespace with Spanish translations (e.g., form.cancel -> "Cancelar",
form.loading -> "Cargando...", form.save -> "Guardar configuración") and
translate other keys such as messages.deactivated, messages.generic_error,
messages.reset_workflows, providers.whatsapp.description,
workflows.base.unprocessable_input, workflows.comments.* (comment_created,
comment_creation_failed, instructions, signature),
organization_welcome_form.custom_text and single_participatory_space.*; ensure
every value under es.decidim.chatbot is translated to Spanish or sync completed
translations from Crowdin if you use it, keeping key names (e.g., form.cancel,
organization_welcome_form.delegate_workflow, workflows.proposals.no_proposals)
unchanged.

89 changes: 89 additions & 0 deletions config/locales/fr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
---
fr:
decidim:
chatbot:
admin:
menu:
chatbot: Chatbot
settings:
edit:
title: Chatbot configuration
form:
cancel: Cancel
configuration_for: Configuration for %{workflow}
current_workflow: Current workflow (%{provider})
enabled: Enabled
loading: Loading...
no_extra_settings: No additional configuration needed for this workflow.
save: Save settings
index:
configure: Configure
title: Chatbot Settings
organization_welcome_form:
custom_text: Initial message (defaults to organization's short description)
delegate_workflow: Choose the workflow to handle the "Participate" button
errors:
invalid_delegate_workflow: The selected workflow is not valid or not configured.
no_workflows_available: No workflows available
single_participatory_space_form:
component: Choose the component
errors:
component_id_blank: Component is required
participatory_space_gid_blank: Participatory space is required
instructions: Instructions (optional) - displayed before showing the space information
participatory_space: Choose the participatory space
select_component: Select a component...
select_space: Select a participatory space...
select_space_first: Select a participatory space first
toggle:
disabled: Chatbot has been disabled.
enabled: Chatbot has been enabled.
update:
error: There was an error saving the settings.
success: Chatbot settings saved successfully.
messages:
deactivated: The chatbot is currently deactivated. Please try again later.
generic_error: Sorry, something went wrong while processing your request. Please try again later.
reset_workflows: Thanks for participating! You can start again by sending any message.
stale_cleared: Your previous session was cleared due to inactivity. Starting fresh!
providers:
whatsapp:
description: Enable to receive and respond to messages via WhatsApp Business API.
name: WhatsApp
workflows:
base:
buttons:
exit: Exit & go back
reset: End conversation
unprocessable_input: Sorry, I couldn't process that. Please try again with a different message or use "Exit & go back" or "End conversation" to start over.
comments:
buttons:
exit: Cancel & go back
submit: Publish comment
comment_created: 'Your comment has been published successfully! You can view it here:'
comment_creation_failed: Unfortunately, your comment could not be published. Please try again or contact support.
comment_received: Here is your comment, if you want to change it just send a new message. If you're happy with it, click "Publish comment".
instructions: Thanks for your interest in commenting "%{title}"! Please write your comment below and send it to me. You will have the chance to review and edit your comment before submitting it.
resource_not_found: Unfortunately, the requested resource could not be found. Please choose another one or exit and restart.
signature: |2-


Sent via %{provider}
organization_welcome:
title: Organization Welcome
proposals:
buttons:
comment: Comment proposal
more: View more
view_proposal: View proposal
comments_disabled: Commenting is disabled for this proposal.
no_more_proposals: There are no more proposals to show. Please choose one of the proposals above.
no_proposals: There are no proposals published yet. Please check back later.
remaining_proposals: There are %{count} more proposals. Click "View more" to see them.
single_participatory_space:
buttons:
more_info: More info
participate: Participate
no_spaces: There are no active participatory spaces at the moment. Please try again later.
not_ready_yet: This feature is not ready yet. Please try again later.
title: Single Participatory Space
Loading