mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-07-01 10:02:56 +01:00
ci(i18n): detect unused & missing translation keys + clean en.json key debt
Rebased onto develop (post #1663 sentence-case pass). Adds a dependency-free Bun checker (bun run i18n:check) wired into the lint matrix: flags keys used in code but missing from en.json, and keys present in en.json but referenced nowhere. Source-only - only en.json is checked/edited; Crowdin syncs the other locales. en.json: +8 missing source keys, -86 dead keys. Planned-feature keys kept and allow-listed with tracking issues: - home.settings.other.show_large_home_carousel (#1702 native media-bar) - home.settings.logs.delete_all_logs (#1703 iOS logs fix) - home.suggested_episodes (#1704) login: point the TV password modal at the existing login.login_button instead of a redundant login.login alias.
This commit is contained in:
46
scripts/i18n-keys.config.json
Normal file
46
scripts/i18n-keys.config.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"localesDir": "translations",
|
||||
"sourceLocale": "en",
|
||||
"srcDirs": [
|
||||
"app",
|
||||
"components",
|
||||
"hooks",
|
||||
"providers",
|
||||
"utils",
|
||||
"modules",
|
||||
"packages",
|
||||
"constants"
|
||||
],
|
||||
"srcExtensions": [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"],
|
||||
"excludeDirs": [
|
||||
"node_modules",
|
||||
"ios",
|
||||
"android",
|
||||
".expo",
|
||||
".git",
|
||||
"dist",
|
||||
"build",
|
||||
"translations"
|
||||
],
|
||||
"_ignoreUnusedNote": "Keys for planned features that are intentionally kept in en.json but not yet wired in code. They are exempt from the unused-key check until implemented. Remove an entry once its feature ships and uses the key. Pending implementation: home.settings.other.show_large_home_carousel (#1702 media-bar), home.settings.logs.delete_all_logs (#1703 iOS logs fix), home.suggested_episodes (#1704).",
|
||||
"ignoreUnused": [
|
||||
"watchlists.add_to_watchlist",
|
||||
"watchlists.remove_from_watchlist",
|
||||
"watchlists.create_one_first",
|
||||
"watchlists.no_compatible_watchlists",
|
||||
"pin.confirm_pin",
|
||||
"pin.pins_dont_match",
|
||||
"player.search_subtitles",
|
||||
"player.subtitle_search",
|
||||
"player.subtitle_download_hint",
|
||||
"player.subtitle_tracks",
|
||||
"player.using_jellyfin_server",
|
||||
"player.swipe_down_settings",
|
||||
"player.stopPlayback",
|
||||
"player.stopPlayingTitle",
|
||||
"player.stopPlayingConfirm",
|
||||
"home.settings.other.show_large_home_carousel",
|
||||
"home.settings.logs.delete_all_logs",
|
||||
"home.suggested_episodes"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user