Skip to content

Translation/update#834

Merged
Crustack merged 4 commits intomainfrom
translation/update
Feb 20, 2026
Merged

Translation/update#834
Crustack merged 4 commits intomainfrom
translation/update

Conversation

@Crustack
Copy link
Copy Markdown
Owner

@Crustack Crustack commented Feb 16, 2026

Closes #804
Closes #824
Closes #815

Summary by CodeRabbit

  • Chores
    • Extended localization coverage by adding translations for multiple languages
    • Updated and corrected existing translations for improved accuracy and consistency across all supported language variants

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Feb 16, 2026

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

Multiple language translation files are updated with new string resources for duplicate handling, cleanup operations, data migration, and note truncation features. Existing translations receive wording refinements across French, Ukrainian, Simplified Chinese, and German localization files.

Changes

Cohort / File(s) Summary
French Localization
app/src/main/res/values-fr/strings.xml
Added new strings: duplicate ("Dupliquer"), super_dark ("Noir"), and plurals resource duplicates with French singular/plural forms.
Ukrainian Localization
app/src/main/res/values-uk/strings.xml
Updated 13 existing strings with terminology changes (e.g., "елемент" → "пункт", "Датою створення" → "Створено"). Added new strings: clean_up, cleanup_finished_summary, cleanup_finished_title, note_text_too_long_truncated, note_too_big_truncating, migrating_data, migration_moving_attachments, migration_splitting_notes. Introduced plurals: duplicates, notes_too_big_truncating.
Chinese (Simplified) Localization
app/src/main/res/values-zh-rCN/strings.xml
Added new strings: auto_backup_skipped_files, clean_up, cleanup_finished_summary, cleanup_finished_title, migrating_data, migration_moving_attachments, migration_splitting_notes, note_text_too_long_truncated, note_too_big_truncating. Added plural: notes_too_big_truncating. Updated 2 existing strings with minor wording corrections.
German Localization
app/src/main/res/values-de/strings.xml
Added new strings: auto_backup_skipped_files, biometric_backup_advice, clean_up, cleanup_finished_summary, cleanup_finished_title, duplicate, migrating_data, migration_moving_attachments, migration_splitting_notes, note_text_too_long_truncated, note_too_big_truncating, super_dark. Added plurals: duplicates, notes_too_big_truncating.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Poem

🐰 Hop through languages, strings we add,
French, Ukrainian, Chinese—quite mad!
Duplicates, cleanups, migrations in sight,
Each tongue now speaks code, shining bright!
From bunny's translation warren so deep,
Global words translated, memories to keep.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The PR includes changes to TRANSLATIONS.md with updated language coverage percentages, which goes beyond the core translation file updates specified in the linked issues. Remove the TRANSLATIONS.md changes or clarify if documentation updates are part of the translation update scope. Focus on the three linked issues' core translation file modifications.
Title check ❓ Inconclusive The title "Translation/update" is vague and generic, not describing which languages or specific translation changes were made in this changeset. Use a more specific title like "Update translations for German, French, Ukrainian, and Simplified Chinese" to clearly indicate the scope of changes.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed The PR successfully updates translations for all three linked issues: French (#824), Ukrainian (#815), and Simplified Chinese (#804), with corresponding string resource additions and updates in the appropriate localized XML files.
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 unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch translation/update

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.

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: 3

🤖 Fix all issues with AI agents
In `@app/src/main/res/values-uk/strings.xml`:
- Line 92: The string resource named "copy" currently contains a trailing space
and was changed from the verb "Копіювати" to the noun "Копія"; remove the
trailing space and, if this is an action/button label, restore the verb form by
setting the value to "Копіювати" (otherwise keep "Копія" but without the
trailing space) so update the <string name="copy"> entry accordingly.
- Line 78: The string resource cleanup_finished_summary uses incorrect format
specifiers `%1d` and `%2d`; update the value so the positional specifiers
include the `$` (change `%1d` → `%1$d` and `%2d` → `%2$d`) so Android will map
the first and second integer arguments correctly in the cleanup_finished_summary
string.

In `@app/src/main/res/values-zh-rCN/strings.xml`:
- Line 78: The translation for the string resource cleanup_finished_summary
contains a broken format specifier "1$d" instead of "%1$d"; update the value for
the string named cleanup_finished_summary to replace "1$d" with "%1$d" so the
first numeric argument is formatted correctly (matching the French example where
"%1$d" is used) and ensure the final text uses "%1$d" and "%2$d" for the first
and second format arguments respectively.

<string name="convert_to_text_note">Перетворити на текстову нотатку</string>
<string name="copied_link">Посилання скопійовано</string>
<string name="copy">Копіювати</string>
<string name="copy">Копія </string>
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

Trailing space in copy string and verb-to-noun change.

The value "Копія " has a trailing space. Also, per the AI summary, this was changed from "Копіювати" (verb: "to copy") to "Копія" (noun: "a copy"). For an action/button label, the verb form is typically expected. Please verify this is intentional.

Proposed fix (if the verb form was intended)
-    <string name="copy">Копія </string>
+    <string name="copy">Копіювати</string>
📝 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
<string name="copy">Копія </string>
<string name="copy">Копіювати</string>
🤖 Prompt for AI Agents
In `@app/src/main/res/values-uk/strings.xml` at line 92, The string resource named
"copy" currently contains a trailing space and was changed from the verb
"Копіювати" to the noun "Копія"; remove the trailing space and, if this is an
action/button label, restore the verb form by setting the value to "Копіювати"
(otherwise keep "Копія" but without the trailing space) so update the <string
name="copy"> entry accordingly.

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: 2

🧹 Nitpick comments (2)
app/src/main/res/values-uk/strings.xml (2)

255-262: super_dark is absent from the Ukrainian file while being newly added to French and German in this PR.

Both values-fr/strings.xml and values-de/strings.xml introduce super_dark as new entries (marked with ~). The Ukrainian file does not include it, so the app will silently fall back to the default (English) string for Ukrainian users. If this was intentional, no action is needed; otherwise, consider adding it.

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

In `@app/src/main/res/values-uk/strings.xml` around lines 255 - 262, The Ukrainian
strings file is missing the newly added string resource super_dark introduced in
other locales; add a <string name="super_dark">...</string> entry to the
Ukrainian translations (values-uk strings) with an appropriate Ukrainian
translation (or the same text as in French/German/English if you don't have a
translation yet) so the app won't fall back to English for Ukrainian users; if
omitting it was intentional, no change is needed.

259-262: notes_too_big_truncating plurals: Ukrainian requires few and many categories in addition to one/other.

Ukrainian CLDR defines four plural categories: one (e.g. 1, 21, 31…), few (e.g. 2–4, 22–24…), many (e.g. 5–20, 25–30…), and other (fractions). With only one and other, quantities like 2 ("нотатки") and 5 ("нотаток") will both fall through to other, producing the "many notes" phrasing for a count of 2.

Note: this is a consistent limitation throughout the entire Ukrainian file (all existing plurals use only one/other with identical values), so this is a pre-existing pattern rather than a regression introduced here.

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

In `@app/src/main/res/values-uk/strings.xml` around lines 259 - 262, The plural
resource notes_too_big_truncating currently only defines "one" and "other", but
Ukrainian requires "one", "few", "many", and "other"; update the plurals block
for notes_too_big_truncating to include items for quantity="few" and
quantity="many" using the correct Ukrainian forms/word endings and the same
placeholders (%1$s and %2$s) as in the existing strings so counts like 2 and 5
use the proper grammatical forms; ensure the translations for "few" use
"нотатки" and for "many" use "нотаток" (and keep "one" as is and "other" for
fractions).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@app/src/main/res/values-de/strings.xml`:
- Line 44: The German string resource biometric_backup_advice contains a grammar
error: replace the incorrect phrase "an komplettes Backup" with the correct
indefinite article "ein komplettes Backup" in the string value for the resource
named biometric_backup_advice so the text reads "Es wird empfohlen ein
komplettes Backup zu erstellen bevor die Biometrische/PIN Sperre de-/aktiviert
wird, für den Fall dass die Verschlüsselung fehlschlägt".

In `@app/src/main/res/values-uk/strings.xml`:
- Line 162: The Ukrainian string for the key "every" is incorrect ("Загальні")
for repetition-frequency UI; update the value for string name="every" to a
proper Ukrainian equivalent such as "Кожен" (or "Усі" if the UX expects "All")
so it matches the intended meaning used in repeat/reminder contexts across
locales.

---

Duplicate comments:
In `@app/src/main/res/values-uk/strings.xml`:
- Line 92: The string resource named "copy" currently contains a trailing space
and uses the noun form ("Копія "), which is wrong for an action/button; update
the value for the resource key copy in strings.xml to the verb form without
trailing whitespace (use "Копіювати") so it matches the intended action label
and other locales.

---

Nitpick comments:
In `@app/src/main/res/values-uk/strings.xml`:
- Around line 255-262: The Ukrainian strings file is missing the newly added
string resource super_dark introduced in other locales; add a <string
name="super_dark">...</string> entry to the Ukrainian translations (values-uk
strings) with an appropriate Ukrainian translation (or the same text as in
French/German/English if you don't have a translation yet) so the app won't fall
back to English for Ukrainian users; if omitting it was intentional, no change
is needed.
- Around line 259-262: The plural resource notes_too_big_truncating currently
only defines "one" and "other", but Ukrainian requires "one", "few", "many", and
"other"; update the plurals block for notes_too_big_truncating to include items
for quantity="few" and quantity="many" using the correct Ukrainian forms/word
endings and the same placeholders (%1$s and %2$s) as in the existing strings so
counts like 2 and 5 use the proper grammatical forms; ensure the translations
for "few" use "нотатки" and for "many" use "нотаток" (and keep "one" as is and
"other" for fractions).

<string name="evernote">Імпортувати із Evernote</string>
<string name="evernote_help">Щоб імпортувати нотатки з Evernote, вам потрібно експортувати блокнот Evernote у форматі ENEX. Натисніть «Довідка», щоб дізнатися більше.\n\nЯкщо у вас уже є файл ENEX, натисніть «Імпортувати» та виберіть його.</string>
<string name="every">Усі</string>
<string name="every">Загальні</string>
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:

#!/bin/bash
# Check how the 'every' key is used in the codebase
rg -n '"every"' --type=kotlin --type=java -A2 -B2

Repository: Crustack/NotallyX

Length of output: 43


🏁 Script executed:

#!/bin/bash
# Check translations of "every" in different locale files
echo "=== German translation ===" 
rg -A1 'name="every"' app/src/main/res/values-de/
echo "=== French translation ===" 
rg -A1 'name="every"' app/src/main/res/values-fr/
echo "=== Default/English translation ===" 
rg -A1 'name="every"' app/src/main/res/values/strings.xml
echo "=== Ukrainian translation ===" 
rg -A1 'name="every"' app/src/main/res/values-uk/

Repository: Crustack/NotallyX

Length of output: 753


🏁 Script executed:

#!/bin/bash
# Check if there are other Ukrainian translation files to see the pattern
ls -la app/src/main/res/ | grep values

Repository: Crustack/NotallyX

Length of output: 2058


🏁 Script executed:

#!/bin/bash
# Check Russian translation for context (related language)
rg -A1 'name="every"' app/src/main/res/values-ru/strings.xml

Repository: Crustack/NotallyX

Length of output: 144


Ukrainian translation "Загальні" (General) is semantically incorrect for repetition-frequency context.

The every string key is used in reminder/repetition settings (e.g., "repeat every N days"). Other locales consistently use words meaning "every/each/all": English "Every", German "Alle", French "Chaque", Russian "Каждый". The current Ukrainian translation "Загальні" means "General" and fails to convey this meaning. The previous value "Усі" (All) was semantically closer.

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

In `@app/src/main/res/values-uk/strings.xml` at line 162, The Ukrainian string for
the key "every" is incorrect ("Загальні") for repetition-frequency UI; update
the value for string name="every" to a proper Ukrainian equivalent such as
"Кожен" (or "Усі" if the UX expects "All") so it matches the intended meaning
used in repeat/reminder contexts across locales.

@Crustack Crustack merged commit 31d6c73 into main Feb 20, 2026
1 check passed
@Crustack Crustack deleted the translation/update branch February 20, 2026 16:16
@coderabbitai coderabbitai bot mentioned this pull request Mar 15, 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.

French translations update Ukrainian translations update Simplified Chinese translations update

1 participant