Skip to content

feat: Italian localization#33

Merged
panteLx merged 3 commits intopanteLx:mainfrom
albanobattistella:patch-1
Dec 7, 2025
Merged

feat: Italian localization#33
panteLx merged 3 commits intopanteLx:mainfrom
albanobattistella:patch-1

Conversation

@albanobattistella
Copy link
Contributor

@albanobattistella albanobattistella commented Dec 6, 2025

Summary by CodeRabbit

  • New Features
    • Added Italian language support with comprehensive translations for UI strings across many sections (common, validation, forms, app, calendar, color, password, notes, shifts, presets, stats, sync, onboarding, footer, external sync), including labels, placeholders, statuses, errors and action texts with placeholders like {name} and {date}.

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

Added Italian localization for application messages.
@coderabbitai
Copy link

coderabbitai bot commented Dec 6, 2025

Walkthrough

A new Italian localization resource file (messages/it.json) was added, containing translated UI strings across sections such as common, validation, form, app, calendar, password, note, shift, preset, calendar_grid, stats, sync, onboarding, version, footer, and externalSync. No functional logic changes.

Changes

Cohort / File(s) Summary
Localization Resources
messages/it.json
New Italian translation file with UI strings for 15+ sections (labels, placeholders, descriptions, statuses, error messages, action texts). Includes interpolation placeholders like {name} and {date}.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

  • Verify translation accuracy and consistency with Italian conventions
  • Confirm JSON structure matches other localization files
  • Ensure interpolation placeholders ({name}, {date}, etc.) align with source keys

Poem

🐰
Saluti in italiano, fresco e snello,
Chiavi e frasi in un gustoso pennello.
Saltello contento tra stringhe e suoni,
Traduzioni pronte, sorrisi e buoni doni.
Viva l'italiano — un piccolo magico anello! 🎉

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.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Title check ✅ Passed The title 'feat: Italian localization' clearly and concisely describes the main change: adding Italian language translations to the project.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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

@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

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b28c649 and dc23ecc.

📒 Files selected for processing (1)
  • messages/it.json (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: CR
Repo: panteLx/BetterShift PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-04T19:12:37.208Z
Learning: Applies to messages/{de,en}.json : All translations for new features must be added to both `messages/de.json` and `messages/en.json`
Learnt from: CR
Repo: panteLx/BetterShift PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-04T19:12:37.208Z
Learning: Applies to **/*.tsx : Use `useTranslations()` from next-intl for all user-facing text and load translations from `messages/{de,en}.json`
📚 Learning: 2025-12-04T19:12:37.208Z
Learnt from: CR
Repo: panteLx/BetterShift PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-04T19:12:37.208Z
Learning: Applies to messages/{de,en}.json : All translations for new features must be added to both `messages/de.json` and `messages/en.json`

Applied to files:

  • messages/it.json
📚 Learning: 2025-12-04T19:12:37.208Z
Learnt from: CR
Repo: panteLx/BetterShift PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-04T19:12:37.208Z
Learning: Applies to **/*.tsx : Use `useTranslations()` from next-intl for all user-facing text and load translations from `messages/{de,en}.json`

Applied to files:

  • messages/it.json
🪛 Biome (2.1.2)
messages/it.json

[error] 28-28: expected , but instead found {

Remove {

(parse)


[error] 28-28: Property key must be double quoted

(parse)


[error] 28-28: expected : but instead found }

Remove }

(parse)


[error] 28-28: expected , but instead found "? Anche tutti i turni, i preset e le note saranno eliminati."

Remove "? Anche tutti i turni, i preset e le note saranno eliminati."

(parse)


[error] 28-28: expected : but instead found ,

Remove ,

(parse)


[error] 51-51: expected , but instead found {

Remove {

(parse)


[error] 51-51: Property key must be double quoted

(parse)


[error] 51-51: expected : but instead found }

Remove }

(parse)


[error] 51-51: expected , but instead found ""

Remove ""

(parse)


[error] 51-51: expected : but instead found ,

Remove ,

(parse)


[error] 52-52: expected , but instead found {

Remove {

(parse)


[error] 52-52: Property key must be double quoted

(parse)


[error] 52-52: expected : but instead found }

Remove }

(parse)


[error] 52-52: expected , but instead found ""

Remove ""

(parse)


[error] 52-52: expected : but instead found ,

Remove ,

(parse)


[error] 98-98: Expected a property but instead found '"shift_one"'.

Expected a property here.

(parse)


[error] 98-98: Invalid escape sequence

Valid escape sequences are: \\, \/, /", \b\, \f, \n, \r, \t or any unicode escape sequence \uXXXX where X is hexedecimal number.

(parse)


[error] 98-98: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 98-98: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 98-99: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 99-99: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 99-99: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 99-99: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 99-100: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 100-100: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 100-100: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 100-100: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 100-101: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 101-101: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 101-101: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 101-101: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 101-102: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 102-102: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 102-102: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 102-102: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 102-103: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 103-103: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 103-103: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 103-103: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 103-104: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 104-104: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 104-104: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 104-104: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 104-105: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 105-105: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 105-105: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 105-105: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 105-106: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 106-106: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 106-106: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 106-106: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 106-107: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 107-107: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 107-107: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 107-107: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 107-108: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 108-108: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 108-108: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 108-109: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 109-110: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 110-110: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 110-110: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 110-135: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 135-136: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 136-136: Invalid escape sequence

Valid escape sequences are: \\, \/, /", \b\, \f, \n, \r, \t or any unicode escape sequence \uXXXX where X is hexedecimal number.

(parse)


[error] 136-146: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 146-146: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 146-146: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 146-146: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 146-153: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 153-154: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 154-154: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 154-154: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 154-160: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 160-161: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 161-161: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 161-161: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 161-165: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 165-166: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 166-166: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 166-166: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 166-168: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 168-169: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 169-169: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 169-169: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 169-173: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 173-174: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 174-174: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 174-174: End of file expected

Use an array for a sequence of values: [1, 2]

(parse)


[error] 51-51: The key was already declared.

This where a duplicated key was declared again.

If a key is defined multiple times, only the last definition takes effect. Previous definitions are ignored.

(lint/suspicious/noDuplicateObjectKeys)

🔇 Additional comments (1)
messages/it.json (1)

1-232: Ensure this Italian translation file includes all keys from the reference locale files.

This file must maintain feature parity with messages/en.json and messages/de.json. To verify completeness, compare all translation keys across these files to confirm no new features or messages have been added to English/German without corresponding Italian entries.

@panteLx
Copy link
Owner

panteLx commented Dec 7, 2025

Thank you for your contribution! As im planning to update the translation keys in one of the next updates ill wait until i merge ur PR.

Check out #35 to learn more

@panteLx
Copy link
Owner

panteLx commented Dec 7, 2025

@albanobattistella just finished restructuring the message keys. can you update ur translations to the new structure?

Check out https://github.com/panteLx/BetterShift/blob/main/messages/en.json

@albanobattistella
Copy link
Contributor Author

@albanobattistella just finished restructuring the message keys. can you update ur translations to the new structure?

Check out https://github.com/panteLx/BetterShift/blob/main/messages/en.json

Hi,
Done!

@panteLx panteLx added the feature request New feature or request label Dec 7, 2025
@github-project-automation github-project-automation bot moved this to Backlog in BetterShift Dec 7, 2025
@panteLx panteLx moved this from Backlog to In progress in BetterShift Dec 7, 2025
@panteLx panteLx changed the title Create Italian localization feat: Italian localization Dec 7, 2025
@panteLx panteLx merged commit 67a0b48 into panteLx:main Dec 7, 2025
1 of 2 checks passed
@github-project-automation github-project-automation bot moved this from In progress to Done in BetterShift Dec 7, 2025
@panteLx
Copy link
Owner

panteLx commented Dec 7, 2025

Thank you for your contribution! Ill include it in the :latest docker tag on the next release. Use :dev to use it now :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature request New feature or request

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants