Skip to content

New Crowdin updates#7689

Open
CrowdinBot wants to merge 704 commits intomasterfrom
l10n_master
Open

New Crowdin updates#7689
CrowdinBot wants to merge 704 commits intomasterfrom
l10n_master

Conversation

@CrowdinBot
Copy link
Copy Markdown
Collaborator

@CrowdinBot CrowdinBot commented Feb 16, 2026


Open with Devin

This change is Reviewable

Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 2 potential issues.

View 2 additional findings in Devin Review.

Open in Devin Review

<trans-unit id="dialogs.uninstall_success.content">
<source xml:lang="en">{app_title} was successfully uninstalled.</source>
<target xml:lang="id">{app_title} berhasil dicopot pemasangannya.</target>
<target xml:lang="id" state="needs-translation">{app_title} was successfully uninstalled.</target>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🚩 Indonesian translation reverted to English in velopack.xlf

The existing Indonesian translation for dialogs.uninstall_success.content was replaced with untranslated English text:

  • Before: <target xml:lang="id">{app_title} berhasil dicopot pemasangannya.</target>
  • After: <target xml:lang="id" state="needs-translation">{app_title} was successfully uninstalled.</target>

This is a translation regression — a valid Indonesian localization was replaced with English. The state="needs-translation" attribute was added, which suggests Crowdin intentionally reset this translation (perhaps due to a source string change or translator action). However, it's worth confirming this was intentional and not a Crowdin sync artifact that accidentally lost a valid translation.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +6225 to +6230
<target xml:lang="pt-PT" state="translated">Usando a assinatura da **Comunidade Local** por **{0}**. Expira {1}</target>
<note>ID: SubscriptionStatus.UsingLocalCommunitySubscription</note>
</trans-unit>
<trans-unit id="SubscriptionStatus.UsingEnterpriseSubscription" approved="yes">
<trans-unit id="SubscriptionStatus.UsingEnterpriseSubscription">
<source xml:lang="en">Using **Enterprise** subscription for {0}. Expires **{1}**</source>
<target xml:lang="pt-PT" state="final">Usando a assinatura de **Enterprise** para {0}. Expira **{1}**</target>
<target xml:lang="pt-PT" state="translated">Usando a assinatura de **Enterprise** para **{0}**. Expira **{1}**</target>
Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration bot Feb 16, 2026

Choose a reason for hiding this comment

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

🚩 Portuguese subscription translations remove approved status and add extra bold markdown around {0}

At DistFiles/localization/pt/Bloom.xlf:6308-6316, two Portuguese translations (SubscriptionStatus.UsingLocalCommunitySubscription and SubscriptionStatus.UsingEnterpriseSubscription) had approved="yes" removed and their state downgraded from final to translated. Additionally, {0} was wrapped in ** markdown bold markers (e.g., por {0}por **{0}**). In the source string for UsingLocalCommunitySubscription, {0} is NOT wrapped in **, but the translation adds it. This is inconsistent with the source pattern and the UsingProSubscription translation at line 6305 which correctly mirrors the source. The {0} placeholder will still work since string formatting happens before markdown rendering, but the visual result may differ from what was intended.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 2 new potential issues.

View 4 additional findings in Devin Review.

Open in Devin Review

<trans-unit id="dialogs.uninstall_success.content">
<source xml:lang="en">{app_title} was successfully uninstalled.</source>
<target xml:lang="id">{app_title} berhasil dicopot pemasangannya.</target>
<target xml:lang="id" state="needs-translation">{app_title} was successfully uninstalled.</target>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Indonesian uninstall success translation regressed to English source text

The Indonesian (id) velopack translation for dialogs.uninstall_success.content was replaced from a valid Indonesian translation to the English source text.

Translation Regression Details

The previous translation was:
{app_title} berhasil dicopot pemasangannya.

This was a proper Indonesian translation meaning the app was successfully uninstalled. The new version replaces it with:
{app_title} was successfully uninstalled. with state="needs-translation"

This appears to be a Crowdin sync issue that lost an existing translation. Indonesian users will now see English text for this uninstall success message instead of the previously available Indonesian translation.

Impact: Indonesian users see English instead of their native language for the uninstall success dialog.

Suggested change
<target xml:lang="id" state="needs-translation">{app_title} was successfully uninstalled.</target>
<target xml:lang="id" state="translated">{app_title} berhasil dicopot pemasangannya.</target>
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 1 new potential issue.

View 4 additional findings in Devin Review.

Open in Devin Review

Comment on lines +1542 to +1556
<trans-unit id="EditTab.CustomCover.Standard" translate="no">
<source xml:lang="en">Standard</source>
<target xml:lang="fr" state="needs-translation">Standard</target>
<note>ID: EditTab.CustomCover.Standard</note>
</trans-unit>
<trans-unit id="EditTab.CustomCover.CoverLayout" translate="no">
<source xml:lang="en">Cover Layout:</source>
<target xml:lang="fr" state="needs-translation">Cover Layout:</target>
<note>ID: EditTab.CustomCover.CoverLayout</note>
</trans-unit>
<trans-unit id="EditTab.CustomCover.Custom" translate="no">
<source xml:lang="en">Custom</source>
<target xml:lang="fr" state="needs-translation">Custom</target>
<note>ID: EditTab.CustomCover.Custom</note>
</trans-unit>
Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration bot Mar 3, 2026

Choose a reason for hiding this comment

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

🚩 New trans-units added with translate="no" won't be translatable

Several new trans-units were added to Bloom.xlf across all languages with translate="no" set — e.g., EditTab.CustomCover.Standard, EditTab.CustomCover.CoverLayout, EditTab.CustomCover.Custom, EditTab.Toolbox.ComicTool.Options.BecomeBackground, EditTab.Toolbox.ComicTool.Options.CoverImage, EditTab.Toolbox.ComicTool.Options.FieldType, and EditTab.Toolbox.ComicTool.Options.Language. This means translators on Crowdin won't be able to translate these strings. This appears intentional (possibly these are new strings not yet ready for translation, or strings that shouldn't be translated), but reviewers should confirm this is the desired behavior since some of these (like "Cover Layout:", "Field Type:", "Language:") seem like they should eventually be translatable.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

devin-ai-integration[bot]

This comment was marked as resolved.

Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 2 new potential issues.

View 4 additional findings in Devin Review.

Open in Devin Review

<trans-unit id="comic.template.paper.full.bleed" approved="yes">
<source xml:lang="en">This template tells Bloom that this book is a candidate for "<g id="genid-2" ctype="x-html-a" html:href="https://dw-wp.com/resources/cartooning-quickguides/layout-quickguides/quickguides-bleeds/">full bleed</g>" printing by a printshop. This feature is available with a Bloom subscription. If this feature is enabled, then in the Edit tab, you will see semi-opaque borders. The outer one is the "bleed"; this is the area that will probably be cut off by a printshop. The inner border is an area that <g id="genid-3" ctype="x-html-em">might</g> be cut off, so you should avoid putting things in there that would look really bad if they were cut off. To actually get a PDF that is ready for this commercial printing, please see the "PDF Options" under the Publish Tab.</source>
<target xml:lang="fr" state="final">Ce modèle indique à Bloom que ce livre est candidat à l'impression « <g id="genid-2" ctype="x-html-a" html:href="https://dw-wp.com/resources/cartooning-quickguides/layout-quickguides/quickguides-bleeds/">full bleed</g> » par une maison d'edition. Cette fonction n' est disponible qu'avec un abonnement Bloom. Si cette fonction est activée, on verra apparaître, dans l'onglet Édition, des bordures semi-opaques. La bordure extérieure est le « fond perdu » : la zone qui sera probablement coupée lors de l'impression. Puisque la bordure intérieure est une zone qui <g id="genid-3" ctype="x-html-em">pourrait</g> être coupée, il faut éviter d'y placer des éléments qui seraient assez deformés si coupés. Pour obtenir un PDF prêt pour l'impression commerciale, veuillez consulter les « Options PDF » sous l'onglet « Edition ».</target>
<target xml:lang="fr" state="final">Ce modèle indique à Bloom que ce livre est candidat à l'impression « <g id="genid-2" ctype="x-html-a" html:href= »https://dw-wp.com/resources/cartooning-quickguides/layout-quickguides/quickguides-bleeds/« >full bleed</g> » par une maison d'edition. Cette fonction n' est disponible qu'avec un abonnement Bloom. Si cette fonction est activée, on verra apparaître, dans l'onglet Édition, des bordures semi-opaques. La bordure extérieure est le « fond perdu » : la zone qui sera probablement coupée lors de l'impression. Puisque la bordure intérieure est une zone qui <g id="genid-3" ctype="x-html-em">pourrait</g> être coupée, il faut éviter d'y placer des éléments qui seraient assez deformés si coupés. Pour obtenir un PDF prêt pour l'impression commerciale, veuillez consulter les « Options PDF » sous l'onglet « Edition ».</target>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔴 Corrupted XML href attribute in French translation uses guillemets instead of quotes

In the French translation for comic.template.paper.full.bleed, the html:href attribute value has its double quotes replaced with French guillemets (« and »), producing html:href= »https://...« > instead of html:href="https://...". This corrupts the XML attribute, breaking the hyperlink in the rendered localized content. Compare with the source on line 26 which correctly uses html:href="https://...", and the v2 translation on line 33 which also correctly preserves the quotes.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +598 to +617
<trans-unit id="CollectionSettingsDialog.AdvancedTab.Program" translate="no">
<source xml:lang="en">Program</source>
<target xml:lang="ksw" state="needs-translation">Program</target>
<note>ID: CollectionSettingsDialog.AdvancedTab.Program</note>
</trans-unit>
<trans-unit id="CollectionSettingsDialog.AdvancedTab.QrCodes" translate="no">
<source xml:lang="en">QR Codes</source>
<target xml:lang="ksw" state="needs-translation">QR Codes</target>
<note>ID: CollectionSettingsDialog.AdvancedTab.QrCodes</note>
</trans-unit>
<trans-unit id="CollectionSettingsDialog.AdvancedTab.ShowQrCodes" translate="no">
<source xml:lang="en">Show QR Codes</source>
<target xml:lang="ksw" state="needs-translation">Show QR Codes</target>
<note>ID: CollectionSettingsDialog.AdvancedTab.ShowQrCodes</note>
</trans-unit>
<trans-unit id="CollectionSettingsDialog.AdvancedTab.ShowQrCodes.Description" translate="no">
<source xml:lang="en">Scanning the code or clicking the badge will take the user to the collection of books in this collection's primary language. Note, if you want to use this but your branding does not show it, contact us.</source>
<target xml:lang="ksw" state="needs-translation">Scanning the code or clicking the badge will take the user to the collection of books in this collection's primary language. Note, if you want to use this but your branding does not show it, contact us.</target>
<note>ID: CollectionSettingsDialog.AdvancedTab.ShowQrCodes.Description</note>
</trans-unit>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🚩 Inconsistent QR code translation IDs across locales

The ksw, qaa, and yua locales use a different set of translation IDs for QR code functionality (CollectionSettingsDialog.BookMakingTab.QrCodeBadgeLabelCaption, BookMakingTab.QrCodeBadgeText, BookMakingTab.QrCodeLabel, BookMakingTab.QrCodeShowLanguage) compared to all other ~30 locales which use CollectionSettingsDialog.AdvancedTab.QrCodes, AdvancedTab.ShowQrCodes, AdvancedTab.Caption, AdvancedTab.QrCodeBadgeText, etc. Not only are the IDs different, but the source strings differ too (e.g., "Show QR code for current language books" vs "Show QR Codes"). Neither set of IDs is currently referenced in the src/ source code, suggesting this is for an upcoming feature. When the feature lands, whichever set of IDs is used in code, the other locales will have missing translations. This should be reconciled before the feature goes live.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 2 new potential issues.

View 4 additional findings in Devin Review.

Open in Devin Review

<trans-unit id="EditTab.FrontMatter.OriginalCopyrightSentence" approved="yes">
<source xml:lang="en">This book is an adaptation of the original, {0}.</source>
<target xml:lang="prs" state="final">گرفته شده از اصلی، ‎{0}‏.</target>
<target xml:lang="prs" state="final">گرفته شده از اصلی، {‎0}‏.</target>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔴 Dari (prs) translation corrupts {0} placeholder with invisible LTR mark inside braces

In EditTab.FrontMatter.OriginalCopyrightSentence, the Left-to-Right Mark (U+200E) was moved from before the { to between { and 0, changing the placeholder from \u200E{0} to {\u200E0}. The string formatting system expects the literal {0} to perform substitution, but will now encounter {\u200E0} which will fail to match, causing the placeholder to not be replaced with the actual copyright information at runtime.

Prompt for agents
In DistFiles/localization/prs/Bloom.xlf at line 2119, the target element for EditTab.FrontMatter.OriginalCopyrightSentence has an invisible U+200E (Left-to-Right Mark) character that was moved inside the {0} placeholder. The current text is (with invisible chars shown): {U+200E 0}U+200F. It should be U+200E{0}U+200F (the LTR mark should be before the opening brace, not between the brace and the 0). Fix the target to restore the original placement: the LTR mark before the opening curly brace.
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

<trans-unit id="comic.template.paper.full.bleed.v2">
<source xml:lang="en">This template works best with "<g id="genid-2" ctype="x-html-a" html:href="https://docs.bloomlibrary.org/full-bleed">full bleed</g>" printing by a printshop. This feature is available with a Bloom subscription. If this feature is enabled in book settings, then in the Edit tab, you will see semi-opaque borders. The outer one is the "bleed"; this is the area that will probably be cut off by a printshop. The inner border is an area that <g id="genid-3" ctype="x-html-em">might</g> be cut off, so you should avoid putting things in there that would look really bad if they were cut off. To actually get a PDF that is ready for this commercial printing, please see the "PDF Options" under the Publish Tab.</source>
<target xml:lang="fr" state="needs-translation">This template works best with "<g id="genid-2" ctype="x-html-a" html:href="https://docs.bloomlibrary.org/full-bleed">full bleed</g>" printing by a printshop. This feature is available with a Bloom subscription. If this feature is enabled in book settings, then in the Edit tab, you will see semi-opaque borders. The outer one is the "bleed"; this is the area that will probably be cut off by a printshop. The inner border is an area that <g id="genid-3" ctype="x-html-em">might</g> be cut off, so you should avoid putting things in there that would look really bad if they were cut off. To actually get a PDF that is ready for this commercial printing, please see the "PDF Options" under the Publish Tab.</target>
<target xml:lang="fr" state="translated">Ce modèle fonctionne mieux avec l'impression "<g id="genid-2" ctype="x-html-a" html:href="https://docs.bloomlibrary.org/full-bleed"> à fond perdu </g>par une imprimerie. Cette fonctionnalité est disponible avec un abonnement Bloom. Si elle est activée dans les paramètres du livre, vous verrez des bordures semi-opaques dans l'onglet Édition. Celle qui se trouve à l'extérieur est le "fond perdu", la zone que l'imprimerie va couper en toute probabilite. La bordure intérieure est une zone qui <g id="genid-3" ctype="x-html-em">pourrait</g> être coupée. Vous devriez ainsi éviter d'y mettre des elements qui sortiraient plutôt mal si on les coupe. Pour obtenir un PDF prêt pour cette impression commerciale, veuillez consulter l'onglet Publier sous l'onglet "Options PDF".</target>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🚩 French v2 full-bleed translation has closing tag in wrong position

In the new French translation of comic.template.paper.full.bleed.v2 at DistFiles/localization/Paper Comic Book/ReadMe-fr.xlf:33, the closing </g> tag is misplaced. In the source, the pattern is "<g ...>full bleed</g>" printing (the closing tag is right after the link text). In the French translation, it reads "<g ...> à fond perdu </g>par une imprimerie — the closing </g> tag comes after extra spaces and the text that should follow the link (par une imprimerie) ends up outside the link, which is probably correct for French word order, but the opening " is never closed with a matching " after the </g>. This may not cause a runtime error since XLIFF <g> tags are handled specially, but the markup structure doesn't match the source pattern.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

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.

1 participant