Add localization for E1, E5, and E10 features across 12 locales#473
Add localization for E1, E5, and E10 features across 12 locales#473rainxchzed merged 4 commits intomainfrom
Conversation
Adds translated strings to `core:presentation` supporting several feature workstreams: the External Import wizard (E1) including the unlink dialog, Download Mirroring (E5) with mirror testing, App List sorting (E10), the Feedback reporting system, and Pre-release channel UX. Locales updated: ES, TR, ZH-rCN, KO, FR, HI, RU, JA, BN, AR, PL, and IT.
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (15)
WalkthroughAdds many new localized Compose string/plural resources across multiple locales and adjusts confidence/percent formatting in core strings and two UI composables. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Review rate limit: 5/8 reviews remaining, refill in 16 minutes and 10 seconds.Comment |
There was a problem hiding this comment.
Actionable comments posted: 14
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@core/presentation/src/commonMain/composeResources/values-ar/strings-ar.xml`:
- Around line 806-814: The Arabic string resources use literal backslash-n
sequences; replace every double-escaped "\\n" and "\\n\\n" with actual newline
characters ("\n" and "\n\n") in the affected string entries (e.g.,
external_import_empty_all_matched, external_import_permission_body) so the
multiline text renders with real line breaks; update each string value
accordingly while keeping the existing text and quotes intact.
- Line 925: Replace the English label for the string resource named
mirror_status_down with its Arabic translation in the strings-ar XML (e.g., use
an appropriate Arabic phrase such as "(غير متصل)" or "(متوقف)"), ensuring you
update only the value inside <string name="mirror_status_down"> so the resource
matches the Arabic locale and preserves punctuation/parentheses and RTL
characters correctly.
In `@core/presentation/src/commonMain/composeResources/values-bn/strings-bn.xml`:
- Line 901: The string resource named "mirror_status_down" is still English;
update its value to the Bengali translation (e.g., replace "(down)" with the
appropriate Bengali word/phrase such as "(নিম্ন)" or the project's chosen term)
so it matches the localized adjacent status labels; edit the string for
mirror_status_down in the values-bn resource file and ensure it follows the same
punctuation/format as "mirror_status_up" and other status strings.
- Around line 798-806: The two string resources
external_import_empty_all_matched and external_import_permission_body contain
literal backslash-n sequences (\\n) so the UI will render "\n" instead of line
breaks; replace each literal "\\n" with a real escaped newline sequence "\n"
(i.e., change "\\n" to "\n" in the string values) so Android will render actual
newlines—update both external_import_empty_all_matched and
external_import_permission_body accordingly.
In `@core/presentation/src/commonMain/composeResources/values-es/strings-es.xml`:
- Around line 764-772: The Spanish string resources use literal escaped newlines
(\\n) which render as backslash-n instead of line breaks; update the affected
string values (e.g., external_import_empty_all_matched and
external_import_permission_body) to use real newlines in the XML value (replace
the "\\n" and "\\n\\n" sequences with actual line breaks) so the text displays
across lines as intended while preserving the surrounding XML element and
attribute names.
In `@core/presentation/src/commonMain/composeResources/values-fr/strings-fr.xml`:
- Around line 765-773: Replace the double-escaped newlines (\\n) in the French
string resources so they render as actual newlines: update string entries such
as external_import_empty_all_matched and external_import_permission_body to use
a single escaped newline (\n) or real line breaks instead of literal "\\n" so
the UI shows line breaks correctly; ensure any other occurrences in the same
diff (e.g., external_import_empty_no_apps_body) are fixed the same way.
In `@core/presentation/src/commonMain/composeResources/values-hi/strings-hi.xml`:
- Around line 803-811: The two string resources
external_import_empty_all_matched and external_import_permission_body contain
double-escaped newlines ("\\n"); replace the literal backslash-backslash-n
sequences with real newline escapes ("\n") so the platform renders actual line
breaks (update external_import_empty_all_matched and
external_import_permission_body to use \n instead of \\n).
In `@core/presentation/src/commonMain/composeResources/values-it/strings-it.xml`:
- Around line 804-812: The multiline strings use escaped backslashes so users
will see literal "\n"; update the newline escapes to actual newlines in the
affected string resources (replace "\\n" with "\n") for
external_import_empty_all_matched and external_import_permission_body so the
wizard text renders line breaks correctly; locate and edit the values for string
names external_import_empty_all_matched and external_import_permission_body in
the strings-it.xml and split the text into real newlines instead of the
two-character sequence.
In `@core/presentation/src/commonMain/composeResources/values-ja/strings-ja.xml`:
- Around line 763-771: The strings external_import_empty_all_matched and
external_import_permission_body contain double-escaped backslash-newline
sequences (e.g., "\\n" and "\\n\\n") which render literally; replace those with
single escape sequences ("\n" and "\n\n") inside the string values so they
produce actual newlines in the UI while preserving the rest of the Japanese text
in external_import_empty_all_matched and external_import_permission_body.
In `@core/presentation/src/commonMain/composeResources/values-ko/strings-ko.xml`:
- Around line 798-806: Replace the literal escaped backslashes used for newlines
in the string resources so Android treats them as newline characters: change
occurrences of "\\n" to "\n" inside the string entries
external_import_empty_all_matched and external_import_permission_body (and any
other entries in this file using "\\n"), ensuring the XML string values contain
actual newline escape sequences rather than double-escaped backslashes.
In `@core/presentation/src/commonMain/composeResources/values-pl/strings-pl.xml`:
- Around line 777-785: The Polish strings use double-escaped newlines (\\n)
which will render as literal "\n"; update the string resources
external_import_empty_all_matched and external_import_permission_body to use a
single-escaped newline (\n) (i.e., replace each \\n with \n inside the <string>
text) so actual line breaks are rendered, then verify the XML remains
well-formed and the localized UI shows real newlines.
In `@core/presentation/src/commonMain/composeResources/values-ru/strings-ru.xml`:
- Around line 777-785: The listed Russian string resources (e.g.,
external_import_empty_all_matched and external_import_permission_body, plus any
other strings containing "\\n" like external_import_permission_body) currently
contain escaped sequences ("\\n" / "\\n\\n") that will render as literal
backslash-n; replace those escaped sequences with real newline characters
(actual line breaks) inside the XML string values so the UI shows proper line
breaks (preserve existing text and spacing, only remove the backslashes and
split into separate lines where "\\n" / "\\n\\n" appear).
In `@core/presentation/src/commonMain/composeResources/values-tr/strings-tr.xml`:
- Around line 801-809: Several multiline translation strings contain escaped
newline sequences ("\\n") which render as literal backslashes in the UI; replace
those with actual newline characters ("\n") inside the value text for each
affected string (e.g., external_import_empty_all_matched,
external_import_permission_body, and other entries using "\\n") so the XML
contains real line breaks in the string content while preserving XML validity
and existing string names.
In
`@core/presentation/src/commonMain/composeResources/values-zh-rCN/strings-zh-rCN.xml`:
- Around line 765-773: Replace the literal backslash-n sequences with real
newlines in the translated strings: update the string value for
external_import_empty_all_matched to use an actual newline instead of "\\n", and
update external_import_permission_body to use actual newline characters where it
currently contains "\\n\\n" (so the UI renders real line breaks). Ensure no
escaped backslashes remain in these string values.
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 6bc9ccf5-7006-49d7-84c3-bcb92ba66478
📒 Files selected for processing (12)
core/presentation/src/commonMain/composeResources/values-ar/strings-ar.xmlcore/presentation/src/commonMain/composeResources/values-bn/strings-bn.xmlcore/presentation/src/commonMain/composeResources/values-es/strings-es.xmlcore/presentation/src/commonMain/composeResources/values-fr/strings-fr.xmlcore/presentation/src/commonMain/composeResources/values-hi/strings-hi.xmlcore/presentation/src/commonMain/composeResources/values-it/strings-it.xmlcore/presentation/src/commonMain/composeResources/values-ja/strings-ja.xmlcore/presentation/src/commonMain/composeResources/values-ko/strings-ko.xmlcore/presentation/src/commonMain/composeResources/values-pl/strings-pl.xmlcore/presentation/src/commonMain/composeResources/values-ru/strings-ru.xmlcore/presentation/src/commonMain/composeResources/values-tr/strings-tr.xmlcore/presentation/src/commonMain/composeResources/values-zh-rCN/strings-zh-rCN.xml
Replaces incorrectly double-escaped newlines (`\\n`) with standard newlines (`\n`) in the `external_import_empty_all_matched` and `external_import_permission_body` strings across multiple locales, including Spanish, French, Italian, Japanese, Korean, and Russian. Additionally, this commit localizes the `mirror_status_down` string for Arabic and Bengali, replacing the literal "(down)" with its translated equivalent.
Removes unnecessary backslash escapes for single quotes (`\'` to `'`) across Turkish, French, and Italian translations. This ensures consistent string formatting and prevents potential rendering of literal backslashes in the UI for these locales.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@core/presentation/src/commonMain/composeResources/values-it/strings-it.xml`:
- Line 802: The current Italian strings like
external_import_completion_skipped_subline (and the similar “+1 altre” string at
line 853) use a plain string with a numeric placeholder and thus render
incorrectly for singular; convert these to Android plurals resources (create a
<plurals name="external_import_completion_skipped"> with <item quantity="one">
and <item quantity="other"> forms) and replace usages to call
getQuantityString(...) so the singular ("1 elemento saltato — puoi ripetere la
scansione dalle Impostazioni.") and plural ("%d elementi saltati — puoi ripetere
la scansione dalle Impostazioni.") render naturally; do the same for the other
string at line 853.
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 8328367b-460a-46fd-95f5-1c3918ff90ec
📒 Files selected for processing (12)
core/presentation/src/commonMain/composeResources/values-ar/strings-ar.xmlcore/presentation/src/commonMain/composeResources/values-bn/strings-bn.xmlcore/presentation/src/commonMain/composeResources/values-es/strings-es.xmlcore/presentation/src/commonMain/composeResources/values-fr/strings-fr.xmlcore/presentation/src/commonMain/composeResources/values-hi/strings-hi.xmlcore/presentation/src/commonMain/composeResources/values-it/strings-it.xmlcore/presentation/src/commonMain/composeResources/values-ja/strings-ja.xmlcore/presentation/src/commonMain/composeResources/values-ko/strings-ko.xmlcore/presentation/src/commonMain/composeResources/values-pl/strings-pl.xmlcore/presentation/src/commonMain/composeResources/values-ru/strings-ru.xmlcore/presentation/src/commonMain/composeResources/values-tr/strings-tr.xmlcore/presentation/src/commonMain/composeResources/values-zh-rCN/strings-zh-rCN.xml
✅ Files skipped from review due to trivial changes (2)
- core/presentation/src/commonMain/composeResources/values-ar/strings-ar.xml
- core/presentation/src/commonMain/composeResources/values-ru/strings-ru.xml
🚧 Files skipped from review as they are similar to previous changes (3)
- core/presentation/src/commonMain/composeResources/values-zh-rCN/strings-zh-rCN.xml
- core/presentation/src/commonMain/composeResources/values-ko/strings-ko.xml
- core/presentation/src/commonMain/composeResources/values-fr/strings-fr.xml
| <item quantity="one">Ora tracciata %1$d app.</item> | ||
| <item quantity="other">Ora tracciate %1$d app.</item> | ||
| </plurals> | ||
| <string name="external_import_completion_skipped_subline">%1$d saltate — puoi ripetere la scansione dalle Impostazioni.</string> |
There was a problem hiding this comment.
Use count-neutral wording for these dynamic counts.
Line 802 and Line 853 read incorrectly when the value is 1 (1 saltate, +1 altre). Please rephrase them so both singular and plural cases render naturally.
💡 Suggested wording
- <string name="external_import_completion_skipped_subline">%1$d saltate — puoi ripetere la scansione dalle Impostazioni.</string>
+ <string name="external_import_completion_skipped_subline">Hai saltato %1$d app — puoi ripetere la scansione dalle Impostazioni.</string>
- <string name="external_import_auto_summary_more_count">+%1$d altre</string>
+ <string name="external_import_auto_summary_more_count">+%1$d in più</string>Also applies to: 853-853
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@core/presentation/src/commonMain/composeResources/values-it/strings-it.xml`
at line 802, The current Italian strings like
external_import_completion_skipped_subline (and the similar “+1 altre” string at
line 853) use a plain string with a numeric placeholder and thus render
incorrectly for singular; convert these to Android plurals resources (create a
<plurals name="external_import_completion_skipped"> with <item quantity="one">
and <item quantity="other"> forms) and replace usages to call
getQuantityString(...) so the singular ("1 elemento saltato — puoi ripetere la
scansione dalle Impostazioni.") and plural ("%d elementi saltati — puoi ripetere
la scansione dalle Impostazioni.") render naturally; do the same for the other
string at line 853.
Removes the literal `%%` suffix from `external_import_card_preselect_known` and `external_import_match_confidence_chip` across all localized `strings.xml` files. The percentage symbol is now appended programmatically in `RepoCandidateRow.kt` and `CandidateCard.kt` after fetching the string resource. This ensures consistent formatting of confidence scores and simplifies translation templates by removing the need for escaped percentage signs in XML.
Adds translated strings to
core:presentationsupporting several feature workstreams: the External Import wizard (E1) including the unlink dialog, Download Mirroring (E5) with mirror testing, App List sorting (E10), the Feedback reporting system, and Pre-release channel UX.Locales updated: ES, TR, ZH-rCN, KO, FR, HI, RU, JA, BN, AR, PL, and IT.
Summary by CodeRabbit
New Features
Localization
Bug Fixes