Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/locales/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -220,5 +220,6 @@
"library_import_songshift": "استيراد قوائم التشغيل من SongShift",
"library_about_ytify": "حول ytify",
"nav_logout": "تسجيل الخروج",
"player_video_resolution": "الدقة"
"player_video_resolution": "الدقة",
"queue_reload_notification": ""

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Empty translation strings cause the UI to display nothing for that key. It is better to provide the translation: 'ستظهر التغييرات من الجلسة القادمة'.

Suggested change
"queue_reload_notification": ""
"queue_reload_notification": "ستظهر التغييرات من الجلسة القادمة"

}
3 changes: 2 additions & 1 deletion src/locales/bn.json
Original file line number Diff line number Diff line change
Expand Up @@ -220,5 +220,6 @@
"library_import_songshift": "SongShift থেকে প্লেলিস্ট ইমপোর্ট করুন",
"library_about_ytify": "ytify সম্পর্কে",
"nav_logout": "লগআউট",
"player_video_resolution": "রেজোলিউশন"
"player_video_resolution": "রেজোলিউশন",
"queue_reload_notification": ""
}
5 changes: 3 additions & 2 deletions src/locales/bs.json
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@
"settings_pwa_watch": "Gledaj",
"settings_pwa_download": "Preuzimanje",
"settings_pwa_always_ask": "Uvijek pitajte",
"settings_quality_worst": "Biću manje pripremljena",
"settings_quality_worst": "Najgore",
"settings_quality_low": "Nisko",
"settings_quality_medium": "Umjereno",
"settings_quality_high": "Visoko",
Expand Down Expand Up @@ -221,5 +221,6 @@
"library_import_songshift": "Uvezi playliste sa SongShift",
"library_about_ytify": "O ytify",
"nav_logout": "Odjavi se",
"player_video_resolution": "Odluka"
"player_video_resolution": "Odluka",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

The translation for 'Resolution' is 'Odluka', which means 'Decision'. In the context of video resolution, the correct term in Bosnian is 'Rezolucija'.

Suggested change
"player_video_resolution": "Odluka",
"player_video_resolution": "Rezolucija",

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

player_video_resolution translation appears incorrect.

On Line 224, "Odluka" translates to “decision,” not video “resolution.” This will confuse users in the player settings.

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

In `@src/locales/bs.json` at line 224, The translation for the key
"player_video_resolution" is incorrect ("Odluka" means "decision"); update the
value for player_video_resolution in the Bosnian locale to the correct term for
video resolution (e.g., "Rezolucija" or a context-appropriate variant) so the
player settings display the proper label; ensure the change only replaces the
string value for "player_video_resolution" and matches the surrounding JSON
formatting and style.

"updating": "Ažuriranje u toku..."
}
5 changes: 3 additions & 2 deletions src/locales/cnr.json
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@
"settings_pwa_watch": "Gledaj",
"settings_pwa_download": "Preuzimanje",
"settings_pwa_always_ask": "Uvijek pitajte",
"settings_quality_worst": "Biću manje pripremljena",
"settings_quality_worst": "Najgore",
"settings_quality_low": "Nisko",
"settings_quality_medium": "Umjereno",
"settings_quality_high": "Visoko",
Expand Down Expand Up @@ -221,5 +221,6 @@
"library_import_songshift": "Uvezi playliste sa SongShift",
"library_about_ytify": "O ytify",
"nav_logout": "Odjavi se",
"player_video_resolution": "Odluka"
"player_video_resolution": "Odluka",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

The translation for 'Resolution' is 'Odluka', which means 'Decision'. In the context of video resolution, the correct term in Montenegrin is 'Rezolucija'.

Suggested change
"player_video_resolution": "Odluka",
"player_video_resolution": "Rezolucija",

"updating": "Ažuriranje u toku..."
Comment on lines +224 to +225

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

Fix player_video_resolution mistranslation.

Line 224 uses "Odluka" (decision), which does not match the key meaning (“resolution”) and can confuse users in playback settings.

Suggested patch
-    "player_video_resolution": "Odluka",
+    "player_video_resolution": "Rezolucija",
📝 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
"player_video_resolution": "Odluka",
"updating": "Ažuriranje u toku..."
"player_video_resolution": "Rezolucija",
"updating": "Ažuriranje u toku..."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/locales/cnr.json` around lines 224 - 225, The value for the localization
key "player_video_resolution" is incorrect ("Odluka"); update the string value
in the locales JSON to the correct translation (e.g., "Rezolucija") for the
playback settings entry "player_video_resolution" so it accurately reflects
“resolution” in the CNR locale, and verify consistency with other locale files
using the same key.

}
5 changes: 3 additions & 2 deletions src/locales/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"loading": "Wird geladen...",
"about_description": "ytify ist eine ressourceneffiziente Audio-Streaming-Plattform, die YouTube- und YTMusic-Bibliothek nutzt.",
"about_learn_more": "Erfahren Sie mehr darüber, wie Sie es effektiv nutzen können.",
"about_support_project": "Unterstützen Sie das ytify-Projekt: Über UPI",
"about_support_project": "Unterstützen Sie das Projekt über UPI",
"about_support_earth": "Unterstützen Sie unsere Erde:",
"about_lifestyle_changes": "Lebensstiländerungen zur Bekämpfung des Klimawandels",
"about_crypto_any": "oder jede andere Kryptowährung über Trocador",
Expand Down Expand Up @@ -221,5 +221,6 @@
"library_about_ytify": "Über ytify",
"nav_logout": "Abmelden",
"player_video_resolution": "Auflösung",
"queue_reload_notification": "Änderungen werden ab der nächsten Sitzung angezeigt"
"queue_reload_notification": "Änderungen werden ab der nächsten Sitzung angezeigt",
"updating": "Aktualisierung läuft..."
}
3 changes: 2 additions & 1 deletion src/locales/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -220,5 +220,6 @@
"library_import_songshift": "Importar listas de reproducción desde SongShift",
"library_about_ytify": "Acerca de ytify",
"nav_logout": "Cerrar sesión",
"player_video_resolution": "Resolución"
"player_video_resolution": "Resolución",
"queue_reload_notification": ""

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Empty translation strings cause the UI to display nothing for that key. It is better to provide the translation: 'Los cambios aparecerán a partir de la próxima sesión'.

Suggested change
"queue_reload_notification": ""
"queue_reload_notification": "Los cambios aparecerán a partir de la próxima sesión"

}
10 changes: 6 additions & 4 deletions src/locales/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"loading": "Chargement...",
"about_description": "ytify est une plateforme de streaming audio économe en ressources qui exploite la bibliothèque YouTube et YouTube Music.",
"about_learn_more": "Apprenez-en davantage sur la manière de l'utiliser efficacement.",
"about_support_project": "Soutenez le projet ytify : via UPI",
"about_support_project": "Soutenez le projet via UPI",
"about_support_earth": "Soutenons notre planète :",
"about_lifestyle_changes": "Changements de mode de vie pour lutter contre le changement climatique",
"about_crypto_any": "ou toute autre cryptomonnaie via Trocador",
Expand Down Expand Up @@ -163,9 +163,9 @@
"settings_stable_volume": "Préférer un volume stable",
"settings_watchmode": "Mode vidéo",
"settings_library_sync": "Synchronisation cloud",
"settings_store_discoveries": "Enregistrer les flux associés dans Hub Discovery",
"settings_store_discoveries": "Activer la découverte audio",
"settings_clear_discoveries": "Cela effacera vos découvertes de $ existantes, continuer ?",
"settings_store_history": "Sauvegarder l'historique de lecture",
"settings_store_history": "Activer l'historique de lecture",
"settings_clear_history": "Cela effacera $ éléments de votre historique, continuer ?",
"settings_landscape_sections": "Sections de paysage maximales",
"settings_load_images": "Charger les images",
Expand Down Expand Up @@ -221,5 +221,7 @@
"library_about_ytify": "À propos de ytify",
"nav_logout": "Déconnexion",
"player_video_resolution": "Résolution",
"queue_reload_notification": "Les changements seront visibles dès la prochaine session"
"queue_reload_notification": "Les changements seront visibles dès la prochaine session",
"list_load_all": "Tout charger",
"updating": "Mise à jour en cours..."
}
3 changes: 2 additions & 1 deletion src/locales/hi.json
Original file line number Diff line number Diff line change
Expand Up @@ -220,5 +220,6 @@
"library_import_songshift": "SongShift से प्लेलिस्ट आयात करें",
"library_about_ytify": "ytify के बारे में",
"nav_logout": "लॉगआउट",
"player_video_resolution": "रेज़ोल्यूशन"
"player_video_resolution": "रेज़ोल्यूशन",
"queue_reload_notification": ""
Comment on lines +223 to +224

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
# Description: Check i18n fallback configuration for empty strings

# Search for i18n initialization and fallback configuration
rg -n -C5 -g '*.{ts,tsx,js,jsx}' 'i18n|fallbackLng|fallback.*locale'

# Find usage of queue_reload_notification to understand display context
ast-grep --pattern 'queue_reload_notification'

Repository: n-ce/ytify

Length of output: 36


🏁 Script executed:

# Check package.json for i18n dependencies
cat package.json | grep -i "i18n\|locale\|translation"

Repository: n-ce/ytify

Length of output: 36


🏁 Script executed:

# Find all locale files to understand structure
fd -e json "locales" --type f | head -20

Repository: n-ce/ytify

Length of output: 36


🏁 Script executed:

# Search for any i18n implementation more broadly (case-insensitive)
rg -i "queue_reload_notification" --type ts --type tsx --type js --type jsx -C 3

Repository: n-ce/ytify

Length of output: 81


🏁 Script executed:

# Look for how locale files are loaded or used
rg -n "locales\|\.json" --type ts --type tsx --type js --type jsx | grep -i "locale\|translation\|i18n" | head -20

Repository: n-ce/ytify

Length of output: 81


🏁 Script executed:

cat package.json

Repository: n-ce/ytify

Length of output: 952


🏁 Script executed:

# Find all JSON locale files
fd "\.json$" src/locales/

Repository: n-ce/ytify

Length of output: 474


🏁 Script executed:

# Look for Vue i18n implementation
rg -n "createI18n\|useI18n\|this.\$i18n" --type js

Repository: n-ce/ytify

Length of output: 202


🏁 Script executed:

# Search for how locale keys are referenced in Vue files
rg -n "queue_reload\|player_video" --type js | head -10

Repository: n-ce/ytify

Length of output: 202


🏁 Script executed:

# Find TypeScript source files
fd "\.ts$" src/ | head -20

Repository: n-ce/ytify

Length of output: 631


🏁 Script executed:

# Search for locale loading in TS files
rg -n "locales\|import.*locale" --type ts

Repository: n-ce/ytify

Length of output: 36


🏁 Script executed:

# Look for translation function or key usage pattern
rg -n "\$t\(|i18n\(|getTranslation\(|t\(" --type ts | head -15

Repository: n-ce/ytify

Length of output: 1060


🏁 Script executed:

# Check how locale files are loaded
rg -n "queue_reload\|player_video" -C 2

Repository: n-ce/ytify

Length of output: 36


🏁 Script executed:

# Check vite config for any locale plugin
cat src/../vite.config.ts | head -50

Repository: n-ce/ytify

Length of output: 1780


🏁 Script executed:

# Search for any imports of locale files
rg -n "from.*locales\|import.*locales" --type ts

Repository: n-ce/ytify

Length of output: 36


🏁 Script executed:

# Look for JSON imports in general
rg -n "\.json" --type ts | grep -E "import|from" | head -20

Repository: n-ce/ytify

Length of output: 276


🏁 Script executed:

# Check main app files (Solid.js entry point)
fd "^(index|main|app)\.(tsx?|jsx?)" src/

Repository: n-ce/ytify

Length of output: 392


🏁 Script executed:

# Look at the structure of en.json to understand if queue_reload_notification exists there
rg "queue_reload_notification" src/locales/

Repository: n-ce/ytify

Length of output: 1602


🏁 Script executed:

# Check the types definition for locales
cat src/types.d.ts

Repository: n-ce/ytify

Length of output: 2597


🏁 Script executed:

# Search for where queue_reload_notification is actually used/displayed
rg "queue_reload_notification" -C 5

Repository: n-ce/ytify

Length of output: 11812


🏁 Script executed:

# Check how translations are accessed in the app
rg -n "locales\[" --type ts --type tsx

Repository: n-ce/ytify

Length of output: 81


🏁 Script executed:

# Look for how translations are accessed/displayed
rg -n "\[.*\]" src/lib/stores/app.ts | grep -i "json\|locale" | head -20

Repository: n-ce/ytify

Length of output: 36


🏁 Script executed:

# Search for notification display code
rg -n "notification" --type js | head -20

Repository: n-ce/ytify

Length of output: 202


🏁 Script executed:

# Check app.ts to see full locale loading logic
sed -n '30,50p' src/lib/stores/app.ts

Repository: n-ce/ytify

Length of output: 344


🏁 Script executed:

# Search for where locales object/json is used
rg -n "locales\[|locales\(" --type js

Repository: n-ce/ytify

Length of output: 202


🏁 Script executed:

# Search for how translations are accessed in components (look for t() or similar pattern)
rg -n "store\.translations\|getTranslation" --type js | head -10

Repository: n-ce/ytify

Length of output: 202


🏁 Script executed:

# Look for the translation function definition
cat src/lib/stores/app.ts | head -100

Repository: n-ce/ytify

Length of output: 1205


🏁 Script executed:

# Search for notification display patterns
rg -n "Toast\|toast\|notify\|showNotification" --type js | head -15

Repository: n-ce/ytify

Length of output: 202


Empty translation will display as blank text for Hindi users.

The queue_reload_notification key contains an empty string in hi.json. The app's t() function returns empty strings as-is without fallback—it only falls back to the key name if the key itself is missing. Hindi users will see blank text instead of the English message ("Changes will appear from next session"). Either translate this key for Hindi, or implement fallback to English translations for empty values.

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

In `@src/locales/hi.json` around lines 223 - 224, The hi.json entry for
"queue_reload_notification" is an empty string so Hindi users see blank text;
either populate that key with a proper Hindi translation (e.g., set
"queue_reload_notification": "बदलाव अगले सत्र से दिखाई देंगे" in the hi.json
file) or modify the translation lookup function t() to treat empty-string values
as missing and fall back to the English translation for the same key (fetch from
en translations when value === ""), ensuring the change references the
"queue_reload_notification" key and t().

}
7 changes: 4 additions & 3 deletions src/locales/hr.json
Original file line number Diff line number Diff line change
Expand Up @@ -152,9 +152,9 @@
"settings_pwa_download": "Preuzimanja",
"settings_pwa_always_ask": "Uvijek pitaj",
"settings_quality_worst": "Najgore",
"settings_quality_low": "Nizak",
"settings_quality_low": "Nisko",
"settings_quality_medium": "Srednje",
"settings_quality_high": "Visok",
"settings_quality_high": "Visoko",
"settings_import_prompt": "Hoće li ovo nadpisati vaše trenutne postavke uvoženim postavkama? Nastaviti?",
"settings_more_options": "Više opcija",
"settings_display_suggestions": "Prikaži prijedloge za pretraživanje",
Expand Down Expand Up @@ -221,5 +221,6 @@
"library_import_songshift": "Uvezi playliste iz SongShift",
"library_about_ytify": "O ytify",
"nav_logout": "Odjava",
"player_video_resolution": "Rezolucija"
"player_video_resolution": "Rezolucija",
"updating": "Ažuriranje u tijeku..."
}
3 changes: 2 additions & 1 deletion src/locales/id.json
Original file line number Diff line number Diff line change
Expand Up @@ -220,5 +220,6 @@
"library_import_songshift": "Impor Daftar Putar dari SongShift",
"library_about_ytify": "Tentang ytify",
"nav_logout": "Logout",
"player_video_resolution": "Resolusi"
"player_video_resolution": "Resolusi",
"queue_reload_notification": ""
}
3 changes: 2 additions & 1 deletion src/locales/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -220,5 +220,6 @@
"library_import_songshift": "SongShiftからプレイリストをインポート",
"library_about_ytify": "ytifyについて",
"nav_logout": "ログアウト",
"player_video_resolution": "解像度"
"player_video_resolution": "解像度",
"queue_reload_notification": ""
}
3 changes: 2 additions & 1 deletion src/locales/nl.json
Original file line number Diff line number Diff line change
Expand Up @@ -221,5 +221,6 @@
"library_about_ytify": "Over ytify",
"nav_logout": "Uitloggen",
"player_video_resolution": "Resolutie",
"queue_reload_notification": "De wijzigingen worden vanaf de volgende sessie zichtbaar"
"queue_reload_notification": "De wijzigingen worden vanaf de volgende sessie zichtbaar",
"updating": "Wordt bijgewerkt..."
}
3 changes: 2 additions & 1 deletion src/locales/pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -220,5 +220,6 @@
"library_import_songshift": "Importuj playlisty z SongShift",
"library_about_ytify": "O ytify",
"nav_logout": "Wyloguj się",
"player_video_resolution": "Rozdzielczość"
"player_video_resolution": "Rozdzielczość",
"queue_reload_notification": ""
}
3 changes: 2 additions & 1 deletion src/locales/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -220,5 +220,6 @@
"library_import_songshift": "Importar listas de reprodução do SongShift",
"library_about_ytify": "Sobre o ytify",
"nav_logout": "Terminar sessão",
"player_video_resolution": "Resolução"
"player_video_resolution": "Resolução",
"queue_reload_notification": ""
}
3 changes: 2 additions & 1 deletion src/locales/ro.json
Original file line number Diff line number Diff line change
Expand Up @@ -220,5 +220,6 @@
"library_import_songshift": "Importă playlist-uri din SongShift",
"library_about_ytify": "Despre ytify",
"nav_logout": "Deconectare",
"player_video_resolution": "Rezoluție"
"player_video_resolution": "Rezoluție",
"queue_reload_notification": ""
}
3 changes: 2 additions & 1 deletion src/locales/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -220,5 +220,6 @@
"library_import_songshift": "Импорт плейлистов из SongShift",
"library_about_ytify": "О ytify",
"nav_logout": "Выйти",
"player_video_resolution": "Разрешение"
"player_video_resolution": "Разрешение",
"queue_reload_notification": ""

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Empty translation strings cause the UI to display nothing for that key. It is better to provide the translation: 'Изменения появятся со следующего сеанса'.

Suggested change
"queue_reload_notification": ""
"queue_reload_notification": "Изменения появятся со следующего сеанса"

}
Loading