Skip to content

New Crowdin updates - #327

Merged
samolego merged 12 commits into
masterfrom
l10n_master
Dec 22, 2025
Merged

New Crowdin updates#327
samolego merged 12 commits into
masterfrom
l10n_master

Conversation

@samolego

@samolego samolego commented Dec 5, 2025

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • Localization
    • Hebrew translations applied across uninstall flows, presets, clipboard messages, confirmations and general labels, including plural forms and phrasing adjustments.
    • Japanese translations added for many UI texts: logs, search, presets, uninstall prompts, onboarding/legal text, settings and clipboard labels.
    • Danish translations added for presets/import workflow, clipboard, preset management, Shizuku-related prompts, plural forms and various UI labels.
    • Content-only localization; no functional changes.

✏️ Tip: You can customize this high-level summary in your review settings.

Copilot AI review requested due to automatic review settings December 5, 2025 08:13
@coderabbitai

coderabbitai Bot commented Dec 5, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Localized string resources updated for Hebrew (values-iw-rIL), Japanese (values-ja-rJP) and Danish (values-da-rDK). Only string and plural values were changed; resource keys, code, manifests, and control flow remain unchanged.

Changes

Cohort / File(s) Change Summary
Hebrew localization
app/src/main/res/values-iw-rIL/strings.xml
Replaced many string and plural values with Hebrew translations covering uninstall flows, presets/imports, clipboard messages, logs, Shizuku/Canta prompts, settings, buttons/labels, and success/error messages. No structural or key changes.
Japanese localization
app/src/main/res/values-ja-rJP/strings.xml
Replaced many string and plural values with Japanese translations covering logs, copy actions, search, updates, settings, onboarding/legal texts, uninstall/preset flows, import/export, and related UI strings. Resource keys unchanged.
Danish localization
app/src/main/res/values-da-rDK/strings.xml
Replaced numerous string and plural values with Danish translations focused on presets/import workflow, presets management, Shizuku prompts, and UI labels. Keys and structure unchanged.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Verify plural forms and quantity placeholders (%d, %s) match code usage.
  • Check RTL rendering, punctuation and spacing for Hebrew.
  • Ensure escaped characters and HTML entities are preserved.

Possibly related PRs

Suggested reviewers

  • parayou1978

Poem

🐇
I hopped through letters, a nibble and a hum,
swapped tongues for buttons till the morning come.
Three new voices now chatter and play,
carrots and commas tucked neatly away. 🥕

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 title accurately reflects the main change: localization updates from Crowdin for multiple languages (Hebrew, Japanese, Danish) across string resources.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

📜 Recent review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 562c687 and 6dd54b7.

📒 Files selected for processing (1)
  • app/src/main/res/values-da-rDK/strings.xml

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.

Copilot AI left a comment

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.

Pull request overview

This PR updates Hebrew (Israeli) translations from Crowdin, translating several previously English strings into Hebrew. The changes primarily focus on translating plural forms for app selection and uninstall success messages, as well as a dialog title.

  • Translates four plural resources from English to Hebrew (num_selected_apps, success_uninstalled, success_reinstalled, and partial update to clear_selected_apps)
  • Updates terminology in one confirmation message from "אפליקציות" to "היישומים"
  • Translates the "Uninstall Options" dialog title to Hebrew

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread app/src/main/res/values-iw-rIL/strings.xml
Comment thread app/src/main/res/values-iw-rIL/strings.xml Outdated
Comment on lines 65 to 66
<string name="uninstall_app">Uninstall app</string>
<string name="reset_to_factory_version">Reset to factory version</string>

Copilot AI Dec 5, 2025

Copy link

Choose a reason for hiding this comment

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

Incomplete translation: While line 64 ("uninstall_options_title") was translated to Hebrew, these related strings remain in English. For a complete localization experience, these strings should also be translated to Hebrew to match the rest of the file.

Suggested change
<string name="uninstall_app">Uninstall app</string>
<string name="reset_to_factory_version">Reset to factory version</string>
<string name="uninstall_app">הסר התקנת יישום</string>
<string name="reset_to_factory_version">אפס לגרסת היצרן</string>

Copilot uses AI. Check for mistakes.

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 3

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c03cde1 and d0cb69b.

📒 Files selected for processing (1)
  • app/src/main/res/values-iw-rIL/strings.xml (3 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Upload results
  • GitHub Check: 🤖 Validate Android Build
🔇 Additional comments (2)
app/src/main/res/values-iw-rIL/strings.xml (2)

5-5: ✓ Confirmation message update looks good.

The Hebrew translation correctly conveys the intent of uninstalling multiple apps.


64-64: ✓ Uninstall options title correctly translated.

The Hebrew translation replaces the English text appropriately.

Comment on lines 26 to 31
<plurals name="num_selected_apps">
<item quantity="one">%d app selected</item>
<item quantity="two">%d apps selected</item>
<item quantity="many">%d apps selected</item>
<item quantity="other">%d apps selected</item>
<item quantity="one">יישום %d נבחר</item>
<item quantity="two">%d יישומים נבחרו</item>
<item quantity="many">%d יישומים נבחרו</item>
<item quantity="other">%d אפליקציות נבחרו</item>
</plurals>

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

🧩 Analysis chain

🏁 Script executed:

# Find all strings.xml files in the repository
find . -name "strings.xml" -type f | head -20

Repository: samolego/Canta

Length of output: 949


🏁 Script executed:

# Look at the complete Hebrew strings file to see context
cat -n app/src/main/res/values-iw-rIL/strings.xml | head -50

Repository: samolego/Canta

Length of output: 3232


🏁 Script executed:

# Check for other plural resources in the Hebrew file
rg -n "plurals name=" app/src/main/res/values-iw-rIL/strings.xml

Repository: samolego/Canta

Length of output: 231


🏁 Script executed:

# Compare with default English locale plurals
fd "values/strings.xml" | xargs grep -A 5 "plurals name=\"num_selected_apps\"" 2>/dev/null | head -30

Repository: samolego/Canta

Length of output: 40


🏁 Script executed:

# Find default values/strings.xml
fd "values/strings.xml$" | xargs grep -A 5 "plurals name=\"num_selected_apps\"" 2>/dev/null

Repository: samolego/Canta

Length of output: 42


🏁 Script executed:

# Check the generic Hebrew locale (values-he)
cat -n app/src/main/res/values-he/strings.xml | sed -n '20,45p'

Repository: samolego/Canta

Length of output: 1416


🏁 Script executed:

# Check if there are any comments or documentation about plural handling
rg -i "plural|hebrew|iw" README.md CONTRIBUTING.md 2>/dev/null || echo "No docs found"

Repository: samolego/Canta

Length of output: 3231


Address placeholder position and terminology inconsistency in num_selected_apps plural forms.

The num_selected_apps resource mixes placeholder positions:

  • one form: "יישום %d נבחר" (placeholder after noun)
  • two/many/other forms: "%d יישומים/אפליקציות" (placeholder before noun)

Additionally, terminology is inconsistent—the one form uses "יישום" while the other form uses "אפליקציות" instead of the "יישומים" used in two and many forms. Standardize both placeholder position and terminology across all quantities for consistent display.

🤖 Prompt for AI Agents
In app/src/main/res/values-iw-rIL/strings.xml around lines 26-31, the plurals
for num_selected_apps mix placeholder position and use inconsistent terms;
change all forms so the numeric placeholder appears before the noun and use the
same Hebrew term for the app plural (יישומים) across quantities—update the "one"
form to use the placeholder before the noun and replace "אפליקציות" in the
"other" form with "יישומים" so all items follow the same "%d יישומים" pattern
(adjust singular/plural wording appropriately for the one/two/many/other cases).

Comment on lines 32 to 37
<plurals name="success_uninstalled">
<item quantity="one">You have successfully uninstalled %d app!</item>
<item quantity="two">You have successfully uninstalled %d apps!</item>
<item quantity="many">You have successfully uninstalled %d apps!</item>
<item quantity="other">You have successfully uninstalled %d apps!</item>
<item quantity="one">הסרת בהצלחה את ההתקנה של אפליקציה %d!</item>
<item quantity="two">הסרת בהצלחה %d אפליקציות!</item>
<item quantity="many">הסרת בהצלחה %d אפליקציות!</item>
<item quantity="other">הסרת בהצלחה %d אפליקציות!</item>
</plurals>

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

🧩 Analysis chain

🏁 Script executed:

# First, let's examine the current file
cat -n app/src/main/res/values-iw-rIL/strings.xml | head -50

Repository: samolego/Canta

Length of output: 3232


🏁 Script executed:

# Check for other locale versions of this string to see the pattern
find . -name "strings.xml" -type f | head -20

Repository: samolego/Canta

Length of output: 949


🏁 Script executed:

# Look at the success_uninstalled string in different locales
rg -A 5 'plurals name="success_uninstalled"' --type xml

Repository: samolego/Canta

Length of output: 25886


🏁 Script executed:

# Check the success_reinstalled pattern and other similar strings in Hebrew
rg -A 5 'success_reinstalled|clear_selected_apps|num_selected_apps' app/src/main/res/values-iw-rIL/strings.xml

Repository: samolego/Canta

Length of output: 919


🏁 Script executed:

# Let me also check if there are any other Hebrew-related strings files
ls -la app/src/main/res/values-*he* 2>/dev/null || echo "Checking Hebrew variants..."
fd 'values.*he' app/src/main/res/

Repository: samolego/Canta

Length of output: 261


Fix redundant phrasing in Hebrew singular form.

The success_uninstalled plural one form has grammatical redundancy: "הסרת בהצלחה את ההתקנה של אפליקציה %d!" combines "הסרת" (removed) with "את ההתקנה" (the installation), creating a redundant construction. Align with the success_reinstalled pattern: "הסרת בהצלחה אפליקציה %d!" (Successfully uninstalled application %d!).

🤖 Prompt for AI Agents
In app/src/main/res/values-iw-rIL/strings.xml around lines 32 to 37, the Hebrew
plural "one" for success_uninstalled uses a redundant phrasing "הסרת בהצלחה את
ההתקנה של אפליקציה %d!"—replace it with the concise form used elsewhere "הסרת
בהצלחה אפליקציה %d!" to remove the extra "את ההתקנה של" and match the
success_reinstalled pattern; update only the singular <item quantity="one">
value accordingly.

Comment on lines 38 to 43
<plurals name="success_reinstalled">
<item quantity="one">You have successfully reinstalled %d app!</item>
<item quantity="two">You have successfully reinstalled %d apps!</item>
<item quantity="many">You have successfully reinstalled %d apps!</item>
<item quantity="other">You have successfully reinstalled %d apps!</item>
<item quantity="one">התקנת מחדש בהצלחה אפליקציה %d!</item>
<item quantity="two">התקנת מחדש בהצלחה %d אפליקציות!</item>
<item quantity="many">התקנת מחדש בהצלחה %d אפליקציות!</item>
<item quantity="other">התקנת מחדש בהצלחה %d אפליקציות!</item>
</plurals>

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:

cat -n app/src/main/res/values-iw-rIL/strings.xml | sed -n '1,100p'

Repository: samolego/Canta

Length of output: 7417


🌐 Web query:

Hebrew grammar number agreement placeholder %d singular

💡 Result:

Use the singular Hebrew form only when the count == 1. For localization you should handle these plural categories:

  • n == 1 → use singular (and pick the correct gendered singular form of the noun). [1][2]
  • n == 2 → use the dual/two form where applicable (Hebrew has special forms for “two”). [2]
  • all other values (0, 3, 4, … and >10) → use the plural/“other” form. (In practice 0 uses plural in Modern Hebrew; CLDR/ICU maps Hebrew to the plural categories one, two, other.) [3][4]

Implementation notes:

  • Do not assume 0 → singular; treat 0 as plural/other. [3]
  • Choose masculine vs. feminine wording for the noun/adjective based on the noun’s gender when rendering the singular and plural forms. [2]
  • Use an i18n pluralization system (ICU/CLDR or gettext/ICU message syntax) that supports Hebrew’s “one/two/other” categories rather than a naive "%d item(s)". [3][4]

Sources: Gesenius on Hebrew numerals and agreement (grammar details). [2] Unicode/CLDR (ICU) plural rules and Hebrew categories for localization. [3][4]

References

  1. Gesenius’ Hebrew Grammar — numerals and agreement.
  2. Gesenius (syntax of numerals / agreement).
  3. Unicode LDML / CLDR plural rules (Hebrew).
  4. Notes from localization communities (ICU/CLDR changes to Hebrew plurals).

🌐 Web query:

Android plurals quantity="one" how %d substitution works

💡 Result:

Short answer: quantity="one" is the plural form chosen by Android when the supplied count maps to the locale’s “one” rule (not necessarily only the numeric value 1 in all languages). If the plural string contains a numeric format placeholder (e.g. %d or %1$d), you must pass the count to getQuantityString (or pluralStringResource) twice: the first count selects the plural form, the second is used to replace the %d in the returned string.

Key points:

  • Define with at least "one" and "other". Put %d (or %1$d) inside the text when you want the number shown. [1]
  • Usage (Java/Kotlin): resources.getQuantityString(R.plurals.name, count, count) — first arg selects plural, second formats the %d. In Compose: pluralStringResource(R.plurals.name, quantity, quantity). [1][2]
  • Prefer positional specifiers like %1$d when strings may include multiple parameters or translators reorder phrases. [1][2]

Sources: Android developers docs on string plurals and Compose resources. [1][2]


Hebrew number agreement violation: %d placement and grammar incorrect in singular form.

The singular form "התקנת מחדש בהצלחה אפליקציה %d!" violates Hebrew number agreement rules. When quantity="one" is selected (count = 1), the placeholder becomes "התקנת מחדש בהצלחה אפליקציה 1!" — placing the number after the noun. Hebrew requires numbers to precede the noun for proper agreement. This should be restructured to "התקנת מחדש בהצלחה 1 אפליקציה!" or similar to follow Hebrew grammar conventions. The same issue exists in success_uninstalled.

🤖 Prompt for AI Agents
In app/src/main/res/values-iw-rIL/strings.xml around lines 38 to 43, the Hebrew
plural entries put the numeric placeholder %d after the noun for the singular
form which violates Hebrew grammar (number must precede the noun); update the
singular item(s) so the %d appears before the noun and rewrite the phrase for
proper agreement (e.g., move "%d" before "אפליקציה" and adjust word
order/inflection accordingly), and apply the same fix to the parallel
success_uninstalled plural entries to ensure consistent Hebrew number placement
and agreement.

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 1

♻️ Duplicate comments (5)
app/src/main/res/values-iw-rIL/strings.xml (5)

27-30: Placeholder position inconsistency in num_selected_apps plural forms.

In Hebrew, the numeral goes before the noun, but line 27 places the placeholder after the noun ("יישום %d נבחר") while lines 28–30 place it before ("%d יישומים נבחרו"). For consistency and proper Hebrew grammar, restructure line 27 to match the pattern in the other forms:

-        <item quantity="one">יישום %d נבחר</item>
+        <item quantity="one">%d יישום נבחר</item>

33-33: Redundant phrasing in success_uninstalled singular form.

Line 33 contains the redundant phrase "הסרת בהצלחה את ההתקנה של יישום %d!" which literally translates to "Successfully removed the installation of an app %d!" The phrase "את ההתקנה של" (the installation of) is redundant when paired with the verb "הסרת" (removed). Simplify to align with the pattern used in the success_reinstalled resource.

-        <item quantity="one">הסרת בהצלחה את ההתקנה של יישום %d!</item>
+        <item quantity="one">הסרת בהצלחה יישום %d!</item>

33-36: Hebrew number agreement violation in success_uninstalled singular form.

In Hebrew, the numeral must go before the noun, but the current form places it after: "הסרת בהצלחה יישום %d!" (when corrected from the redundancy above). The placeholder should precede the noun for proper agreement:

-        <item quantity="one">הסרת בהצלחה את ההתקנה של יישום %d!</item>
+        <item quantity="one">הסרת בהצלחה %d יישום!</item>

39-42: Hebrew number agreement violation in success_reinstalled singular form.

In Hebrew, the numeral must go before the noun, but line 39 places it after: "התקנת מחדש בהצלחה יישום %d!". Restructure to put the placeholder before the noun for proper Hebrew grammar:

-        <item quantity="one">התקנת מחדש בהצלחה יישום %d!</item>
+        <item quantity="one">התקנת מחדש בהצלחה %d יישום!</item>

5-5: Terminology inconsistency: "היישומים" vs. "אפליקציות" across the file.

Line 5 uses "היישומים" (the apps) in the uninstall confirmation message, but other success messages (lines 27–42) and throughout the file use "אפליקציות" (apps) or "יישומים" (apps). Previous review comments flagged this inconsistency. For a cohesive user experience, standardize terminology throughout the file. Consider whether this line should also use "האפליקציות" to maintain consistency.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d0cb69b and 2eec6bb.

📒 Files selected for processing (1)
  • app/src/main/res/values-iw-rIL/strings.xml (3 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: 🤖 Validate Android Build
🔇 Additional comments (1)
app/src/main/res/values-iw-rIL/strings.xml (1)

55-55: Localization completeness improved; new Hebrew translations added.

The PR significantly improves localization coverage by translating previously English-only strings (lines 64–122) to Hebrew, including preset management, Shizuku integration, advanced settings, and donation-related text. This enhancement addresses the incomplete translation issue flagged in previous reviews. The translations appear accurate and follow consistent terminology patterns.

Also applies to: 64-122

Comment thread app/src/main/res/values-iw-rIL/strings.xml
samolego and others added 5 commits December 5, 2025 14:11
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 0

Caution

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

⚠️ Outside diff range comments (1)
app/src/main/res/values-ja-rJP/strings.xml (1)

20-31: Translate plural strings to Japanese.

Four plural resources remain in English while the rest of the file uses Japanese translations:

  • clear_selected_apps (line 20)
  • num_selected_apps (line 23)
  • success_uninstalled (line 26)
  • success_reinstalled (line 29)

Japanese users will see these messages in English, creating an inconsistent experience.

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 88995ee and 016c895.

📒 Files selected for processing (1)
  • app/src/main/res/values-ja-rJP/strings.xml (2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: 🤖 Validate Android Build
🔇 Additional comments (1)
app/src/main/res/values-ja-rJP/strings.xml (1)

16-19: LGTM! Japanese translations successfully updated.

The Japanese translations have been properly added/updated for various UI strings including logs, settings, presets management, and related functionality. The XML structure is valid and the UTF-8 encoding is appropriate for Japanese text.

Also applies to: 32-34, 36-37, 39-43, 49-49, 52-53, 55-55, 57-57, 62-63, 65-65, 70-74, 77-77, 79-80

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 1

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dc8f386 and 562c687.

📒 Files selected for processing (1)
  • app/src/main/res/values-da-rDK/strings.xml (2 hunks)
🔇 Additional comments (1)
app/src/main/res/values-da-rDK/strings.xml (1)

24-35: LGTM! Plural forms correctly localized.

The plural forms maintain correct placeholder usage (%d) and appropriately distinguish between singular and plural cases in Danish.

Comment thread app/src/main/res/values-da-rDK/strings.xml Outdated
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@samolego
samolego merged commit 58fbbe8 into master Dec 22, 2025
1 of 2 checks passed
@samolego
samolego deleted the l10n_master branch December 22, 2025 05:31
@coderabbitai coderabbitai Bot mentioned this pull request Mar 1, 2026
@coderabbitai coderabbitai Bot mentioned this pull request Apr 21, 2026
@coderabbitai coderabbitai Bot mentioned this pull request Aug 7, 2026
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