version 1.32.0 release#1168
Conversation
Co-authored-by: Nathan <45531575+VampireChicken12@users.noreply.github.com> Co-authored-by: Dave Nicolson <david.nicolson@gmail.com> Co-authored-by: VampireChicken12 <Johnbrown51@yahoo.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carl Fürstenberg <azatoth@gmail.com> Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net> Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> fixer](https://github.com/postcss/autoprefixer) from 10.4.21 to 10.4.22. fix: Update playback buttons speed when player speed is changed in menu #1106 fixer](https://github.com/postcss/autoprefixer) from 10.4.22 to 10.4.23.
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nathan <45531575+VampireChicken12@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…1120) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
#1121) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…logic by using nested selectors
…g logic by using nested selectors
…ing nested selectors
…dent when a members only video exists in them
…ering with adjusting volume #1087
… element causing the feature to not work #1132
Bumps [eslint](https://github.com/eslint/eslint) from 9.38.0 to 9.39.2. - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](eslint/eslint@v9.38.0...v9.39.2) --- updated-dependencies: - dependency-name: eslint dependency-version: 9.39.2 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [zod](https://github.com/colinhacks/zod) from 4.2.1 to 4.3.5. - [Release notes](https://github.com/colinhacks/zod/releases) - [Commits](colinhacks/zod@v4.2.1...v4.3.5) --- updated-dependencies: - dependency-name: zod dependency-version: 4.3.5 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](lodash/lodash@4.17.21...4.17.23) --- updated-dependencies: - dependency-name: lodash-es dependency-version: 4.17.23 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](lodash/lodash@4.17.21...4.17.23) --- updated-dependencies: - dependency-name: lodash dependency-version: 4.17.23 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
scripts to run deep dark update scripts
WalkthroughA major refactoring of the extension's localization schema migrates translation structures from flat key-value pairs to deeply nested hierarchies using Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~90 minutes Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 18
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (7)
public/locales/fa-IR.json (1)
1-7:⚠️ Potential issue | 🟠 MajorPersian locale (fa-IR) contains no actual translations — all user-facing strings are in English.
Only
langName("فارسی") is in Persian. Every translation string throughout the file is English text. Unlike other locales (de-DE, ja-JP, ru-RU, etc.) which contain complete translations in their respective languages, fa-IR appears to be untranslated after the structural restructuring. This needs clarification: is this intentional (English fallback) or an oversight during the v1.32.0 refactor? If translations are pending, create a tracking issue to ensure they're completed before release.public/locales/he-IL.json (1)
1-7:⚠️ Potential issue | 🟠 MajorHebrew locale file contains only English translation strings instead of Hebrew translations.
The
langCodeis correctly set to"he-IL"andlangNameis"עברית"(Hebrew), but every user-facing string throughout the file is in English. For example, line 5 has"Copy video URL with timestamp"when it should be in Hebrew. Hebrew-speaking users selecting this locale will see a completely English UI, which defeats the purpose of localization.Additionally,
fa-IR.json(Persian/Farsi) exhibits the same issue—all strings are in English despite being intended for Persian-speaking users. Other locales likede-DE,es-ES, andru-RUare properly translated, making this a notable oversight.Either provide proper Hebrew (and Persian) translations before shipping this release, or remove these locales from the language selector until translations are available.
public/locales/cs-CZ.json (1)
1-889:⚠️ Potential issue | 🟠 MajorCzech locale (cs-CZ) contains no Czech translations.
Every user-facing string in this file is in English despite
langNamebeing "Čeština". This means Czech-speaking users selecting this locale will see an entirely English UI. If this is intentional (i.e., translations are pending), consider either omitting the locale from the selectable list until translations are ready, or adding a tracking issue for the missing translations.#!/bin/bash # Check if previous version of cs-CZ.json had any Czech text # by looking at git history for non-ASCII characters (Czech uses diacritics) git log --oneline -5 -- public/locales/cs-CZ.json echo "---" # Check how many values contain non-ASCII characters (suggesting actual translations) python3 -c " import json, sys with open('public/locales/cs-CZ.json', 'r') as f: data = json.load(f) def count_strings(obj, path=''): total = 0 translated = 0 if isinstance(obj, dict): for k, v in obj.items(): if k in ('langCode', 'langName'): continue t, tr = count_strings(v, f'{path}.{k}') total += t translated += tr elif isinstance(obj, str): total = 1 # Check if string contains non-ASCII chars (diacritics typical of Czech) if any(ord(c) > 127 for c in obj): translated = 1 return total, translated total, translated = count_strings(data) print(f'Total strings: {total}') print(f'Strings with non-ASCII chars (likely translated): {translated}') print(f'Untranslated: {total - translated}') "public/locales/hi-IN.json (1)
1-889:⚠️ Potential issue | 🟡 MinorHindi locale (hi-IN) is largely untranslated.
Only a small subset of
pages.content.featuresstrings have Hindi translations (e.g., button labels for copyTimestamp, featureMenu, forwardRewind, loop, maximize). The entirepages.options,settings.sections, and most ofpages.content.featuresremain in English. This is a significant gap for Hindi-speaking users.Also,
langNameon line 3 is "Hindi" (English) — other locales use the native name (e.g., "한국어", "日本語", "Italiano"). Consider using "हिन्दी" for consistency.public/locales/ca-ES.json (1)
1-889:⚠️ Potential issue | 🟠 MajorCatalan locale (ca-ES) is entirely untranslated — every string is in English.
Despite
langName: "Català", there is not a single Catalan string in this file. Even themessagessection (lines 5-6) is in English. This locale should either be removed from the selectable language list until translations are provided, or flagged with a tracking issue.This is the same concern as
cs-CZ.jsonbut more severe since even basic messages lack translation.public/locales/fr-FR.json (1)
14-69:⚠️ Potential issue | 🟠 MajorExtensive untranslated strings in the French locale.
Many strings across the file remain in English rather than being translated to French. Notable areas include:
copyTimestampUrlButton.extras.copied(Line 16: "Copied!" instead of e.g. "Copié !")forwardRewindButtons,hideEndScreenCardsButton,loopButton,maximizePlayerButtonbutton labels (Lines 24–59)miniPlayerButton(Lines 61–69)playbackSpeedButtons.extras(Lines 84–87)playlistManagementButtons.extrasandsaveToWatchLaterButton.extras(Lines 92–108)- Many
options.extrasentries (Lines 231–263)- The entire
miniPlayersection (Lines 286–315),deepDarkCSS(Lines 329–374),globalVolume(Lines 874–886), and various settings subsectionsConsider completing a translation pass on all newly introduced keys.
public/locales/en-GB.json (1)
2-2:⚠️ Potential issue | 🟡 Minor
langCodeshould be"en-GB"to match the filename and other locale conventions.All other locale files use
langCodevalues matching their filenames (e.g.,de-DE.jsonhas"de-DE",ja-JP.jsonhas"ja-JP"). Theen-GB.jsonfile uses"en-UK", which breaks this pattern and the BCP 47 standard. SincelangCodeis used in error messages (seecheckLocalesForMissingKeys.ts), the mismatch should be corrected for consistency.🔧 Suggested fix
- "langCode": "en-UK", + "langCode": "en-GB",
🤖 Fix all issues with AI agents
In `@eslint.config.mjs`:
- Line 80: The ESLint rule override "prettier/prettier" currently sets
endOfLine: "auto" which conflicts with the project's Prettier config
(prettier.config.mjs) that sets endOfLine: "lf"; either remove the endOfLine
option from the "prettier/prettier" rule in eslint.config.mjs so Prettier
remains the single source of truth, or make the change the other way by updating
prettier.config.mjs to use "auto" to match the ESLint override — modify the
"prettier/prettier" entry in eslint.config.mjs (or adjust prettier.config.mjs)
accordingly to keep both tools consistent.
In `@public/locales/de-DE.json`:
- Around line 61-69: Several new keys in the German locale remain in English;
update all untranslated strings (e.g., miniPlayerButton,
playlistManagementButtons.extras, saveToWatchLaterButton.extras,
openSettingsOnMajorOrMinorVersionChange, optionDisabled, settingSearch, the
entire miniPlayer section, deepDarkCSS parts, forwardRewindButtons settings, and
globalVolume) with proper German translations, preserving the JSON structure and
key names (e.g., "miniPlayerButton", "playlistManagementButtons.extras",
"globalVolume") and keeping nested objects intact; after translating each
string, validate the JSON (lint/format) to ensure no trailing commas or syntax
errors and run the localization tests or app to confirm strings render
correctly.
- Line 872: The JSON entry for the German translation has a stray acute accent
at the start of the "title" value; locate the object containing the "title" key
with the value "´Lautstärke-Boost Einstellungen" and remove the leading `´` so
it becomes "Lautstärke-Boost Einstellungen", ensuring the JSON string remains
properly quoted and escaped.
In `@public/locales/en-US.json`:
- Around line 256-263: Update the brand capitalization for the Youtube string
under the "youtubeDataApiV3Key" object: change the "input.title" value from
"Enter your Youtube Data API V3 key." to "Enter your YouTube Data API V3 key."
and apply the same change for the equivalent key path
("youtubeDataApiV3Key.input.title") in all other locale files to keep
translations consistent.
In `@public/locales/es-ES.json`:
- Around line 61-69: The Spanish locale file contains many untranslated English
strings; update public/locales/es-ES.json by translating all newly added keys
into Spanish — at minimum translate miniPlayerButton
(miniPlayerButton.button.label and .toggle.off/.on),
playlistManagementButtons.extras, saveToWatchLaterButton.extras,
openSettingsOnMajorOrMinorVersionChange, settingSearch, the entire miniPlayer
settings section, deepDarkCSS entries, onScreenDisplaySettings titles,
playerSpeed.settings.buttons, and the entire globalVolume section; ensure each
key (e.g., miniPlayerButton, playlistManagementButtons, saveToWatchLaterButton,
openSettingsOnMajorOrMinorVersionChange, settingSearch, miniPlayer, deepDarkCSS,
onScreenDisplaySettings, playerSpeed.settings.buttons, globalVolume) contains
correct Spanish strings and matches the existing JSON structure and punctuation
so the file remains valid.
- Around line 577-581: Fix the Spanish typos in the JSON value for the
"saveToWatchLaterButton" -> "enable" -> "label": replace "Habiliar el boton para
ver mas tarde" with the corrected text "Habilitar el botón para ver más tarde"
(fixing "Habiliar"→"Habilitar", "boton"→"botón", and adding the accent in
"más"). Ensure the updated string is placed exactly as the value for the "label"
key under the "enable" object.
In `@public/locales/fa-IR.json`:
- Around line 256-263: Update the user-facing branding inside the
youtubeDataApiV3Key localization object so "Youtube" is capitalized as "YouTube"
to match the rest of the file; locate strings under the youtubeDataApiV3Key key
(e.g., getApiKeyLinkText, input.label, input.title, title) and change any
occurrence of "Youtube" to "YouTube".
- Around line 499-503: Update the translation value for the key
"hideScrollbar.enable.title": replace the string "Hides the pages scrollbar"
with the corrected possessive form "Hides the page's scrollbar" so the grammar
is fixed (ensure the apostrophe is properly escaped/encoded if necessary for the
JSON format).
In `@public/locales/he-IL.json`:
- Around line 499-503: Update the translation value for the
"hideScrollbar.enable.title" key to use the possessive apostrophe: change "Hides
the pages scrollbar" to "Hides the page's scrollbar" so the JSON entry under
"hideScrollbar" -> "enable" -> "title" is corrected.
- Around line 148-151: The "reset" translation's title contains a comma splice:
update the "title" string (key "reset" -> "title") to separate the independent
clauses properly (e.g., replace the comma with a period and lowercase "Click" to
"click", or use a semicolon and lowercase "click") so the sentence reads
grammatically correct for the user-facing string.
- Around line 256-263: Fix inconsistent branding and punctuation in the
"youtubeDataApiV3Key" localization entries: change the input.title value from
"Enter your Youtube Data API V3 key." to use the correct casing "YouTube" and
remove the trailing period to match the title value; ensure the "title" remains
"YouTube API V3 key" and update only the string at key
youtubeDataApiV3Key.input.title so casing and punctuation are consistent.
In `@public/locales/ja-JP.json`:
- Around line 61-69: Translate the untranslated English strings into Japanese
for the specified localization keys: replace the values under "miniPlayerButton"
(e.g., "button.label", "button.toggle.off", "button.toggle.on"), and all strings
under "settings.sections.miniPlayer" and "settings.sections.globalVolume" with
appropriate Japanese text while preserving the JSON keys and structure (do not
change key names like miniPlayerButton, settings.sections.miniPlayer,
settings.sections.globalVolume); ensure phrasing is consistent with the rest of
the ja-JP file and keep any placeholders or punctuation intact.
- Around line 84-87: Update the Japanese translations for the "decreaseLimit"
and "increaseLimit" keys in the ja-JP locale: replace the incorrect "できまっせん"
with the correct "できません" so the values become "再生速度を下げるはできません ({{SPEED}})" and
"再生速度を上げるはできません ({{SPEED}})"; ensure you only change those strings for the keys
"decreaseLimit" and "increaseLimit" in the JSON.
In `@public/locales/ko-KR.json`:
- Around line 61-69: The miniPlayerButton entry contains English strings;
replace button.label ("Mini Player") and button.toggle.off/on ("Mini Player
off"/"Mini Player on") with their Korean equivalents to match the locale; update
the JSON keys under miniPlayerButton → button → label and miniPlayerButton →
button → toggle.off and toggle.on with appropriate Korean translations (e.g.,
label and toggle states consistent with other UI strings like loopButton and
maximizePlayerButton).
- Around line 286-316: The miniPlayer block is still in English; translate all
strings under the "miniPlayer" object (e.g., miniPlayer.button.label,
miniPlayer.button.title, miniPlayer.enable.label, miniPlayer.enable.title,
miniPlayer.settings.position.select.label,
miniPlayer.settings.position.select.options.{bottomCenter,bottomLeft,bottomRight,topCenter,topLeft,topRight},
miniPlayer.settings.position.select.title, miniPlayer.settings.size.label,
miniPlayer.settings.size.title, and miniPlayer.title) into Korean consistent
with the style used in neighboring sections (like customCSS and
forwardRewindButtons) while preserving the JSON keys and structure.
- Around line 874-886: Translate the untranslated strings under the globalVolume
object into Korean: replace enable.label, enable.title, settings.amount.label,
settings.amount.title, and the globalVolume.title with appropriate Korean
equivalents (matching tone and terminology used in volumeBoost translations),
ensuring consistency in phrasing and punctuation with other locale entries;
locate these keys by name (globalVolume, enable.label, enable.title,
settings.amount.label, settings.amount.title) and update their values to Korean.
In `@public/locales/nl-NL.json`:
- Around line 61-69: Several newly added keys in the Dutch locale are still in
English; update the translations for the identified keys by replacing English
strings with proper Dutch equivalents: translate miniPlayerButton
(button.toggle.off/on and button.label), playlistManagementButtons.extras,
saveToWatchLaterButton.extras, openSettingsOnMajorOrMinorVersionChange,
optionDisabled (all nested keys), the entire miniPlayer settings block, the
specified parts of deepDarkCSS, and the globalVolume section; ensure the JSON
keys (e.g., "miniPlayerButton", "playlistManagementButtons.extras",
"saveToWatchLaterButton.extras", "openSettingsOnMajorOrMinorVersionChange",
"optionDisabled", "miniPlayer", "deepDarkCSS", "globalVolume") retain their
names and only the string values are replaced with accurate Dutch translations,
preserving punctuation and interpolation placeholders if any.
- Around line 256-263: The translation for youtubeDataApiV3Key.getApiKeyLinkText
contains a typo ("gier") and should be corrected to a proper Dutch phrase;
update the value of getApiKeyLinkText under the youtubeDataApiV3Key object to
something like "Je kan er één hier verkrijgen" (or another natural Dutch
phrasing meaning "You can get one from here") so the link text reads correctly.
🧹 Nitpick comments (3)
package.json (1)
33-33:globalsbelongs indevDependencies.The
globalspackage is only consumed byeslint.config.mjsand is not needed at runtime. It should be moved fromdependenciestodevDependencies.Proposed fix
Move
"globals": "^17.0.0"fromdependenciestodevDependencies..all-contributorsrc (1)
274-282: Inconsistent field ordering for the SoSeDiK entry.All other contributor entries follow
avatar_url → contributions → login → name → profileordering, but this entry starts withlogin → name → avatar_url → profile → contributions. Consider reordering for consistency — the all-contributors CLI will likely normalize this on its next run anyway.public/locales/he-IL.json (1)
493-498: Informal tone: "Get rid of" differs from the style of other entries.Most other
titlestrings use formal phrasing (e.g., "Hides all shorts", "Hides the live stream chat")."Get rid of playlists from homepage"stands out as informal.✏️ Suggested wording
"hidePlaylistRecommendationsFromHomePage": { "enable": { "label": "Hide playlists from homepage", - "title": "Get rid of playlists from homepage" + "title": "Hides playlist recommendations from the homepage" } },
| "no-useless-escape": "off", | ||
| "prefer-const": ["error", { destructuring: "any", ignoreReadBeforeAssign: false }], | ||
| "prefer-destructuring": ["error", { array: true, object: true }, { enforceForRenamedProperties: true }], | ||
| "prettier/prettier": ["error", { endOfLine: "auto", useTabs: true }], |
There was a problem hiding this comment.
endOfLine: "auto" conflicts with Prettier config's "lf".
The Prettier config (prettier.config.mjs line 4) sets endOfLine: "lf", but this ESLint rule overrides it to "auto". This means eslint --fix will accept any line endings, while prettier --check/prettier --write will enforce LF — leading to inconsistent behavior between the two tools.
If the intent is to be lenient on line endings (e.g., for Windows contributors), update prettier.config.mjs to match. Otherwise, remove the endOfLine override here so the Prettier config is the single source of truth.
🤖 Prompt for AI Agents
In `@eslint.config.mjs` at line 80, The ESLint rule override "prettier/prettier"
currently sets endOfLine: "auto" which conflicts with the project's Prettier
config (prettier.config.mjs) that sets endOfLine: "lf"; either remove the
endOfLine option from the "prettier/prettier" rule in eslint.config.mjs so
Prettier remains the single source of truth, or make the change the other way by
updating prettier.config.mjs to use "auto" to match the ESLint override — modify
the "prettier/prettier" entry in eslint.config.mjs (or adjust
prettier.config.mjs) accordingly to keep both tools consistent.
| "miniPlayerButton": { | ||
| "button": { | ||
| "label": "Mini Player", | ||
| "toggle": { | ||
| "off": "Mini Player off", | ||
| "on": "Mini Player on" | ||
| } | ||
| } | ||
| }, |
There was a problem hiding this comment.
Many new strings remain untranslated (English) in the German locale.
Similar to other non-English locales, many newly added sections contain English rather than German translations. This includes miniPlayerButton (Lines 61–69), playlistManagementButtons.extras and saveToWatchLaterButton.extras (Lines 92–108), openSettingsOnMajorOrMinorVersionChange (Lines 231–233), optionDisabled (Lines 235–251), settingSearch (Line 254), the entire miniPlayer section (Lines 286–315), parts of deepDarkCSS (Lines 329–374), forwardRewindButtons settings (Lines 376–387), and the globalVolume section (Lines 874–886).
Consider a translation pass for all newly introduced keys.
🤖 Prompt for AI Agents
In `@public/locales/de-DE.json` around lines 61 - 69, Several new keys in the
German locale remain in English; update all untranslated strings (e.g.,
miniPlayerButton, playlistManagementButtons.extras,
saveToWatchLaterButton.extras, openSettingsOnMajorOrMinorVersionChange,
optionDisabled, settingSearch, the entire miniPlayer section, deepDarkCSS parts,
forwardRewindButtons settings, and globalVolume) with proper German
translations, preserving the JSON structure and key names (e.g.,
"miniPlayerButton", "playlistManagementButtons.extras", "globalVolume") and
keeping nested objects intact; after translating each string, validate the JSON
(lint/format) to ensure no trailing commas or syntax errors and run the
localization tests or app to confirm strings render correctly.
| } | ||
| } | ||
| }, | ||
| "title": "´Lautstärke-Boost Einstellungen" |
There was a problem hiding this comment.
Stray accent character in title.
Line 872: "´Lautstärke-Boost Einstellungen" has a spurious ´ at the start.
✏️ Proposed fix
- "title": "´Lautstärke-Boost Einstellungen"
+ "title": "Lautstärke-Boost Einstellungen"📝 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.
| "title": "´Lautstärke-Boost Einstellungen" | |
| "title": "Lautstärke-Boost Einstellungen" |
🤖 Prompt for AI Agents
In `@public/locales/de-DE.json` at line 872, The JSON entry for the German
translation has a stray acute accent at the start of the "title" value; locate
the object containing the "title" key with the value "´Lautstärke-Boost
Einstellungen" and remove the leading `´` so it becomes "Lautstärke-Boost
Einstellungen", ensuring the JSON string remains properly quoted and escaped.
| "youtubeDataApiV3Key": { | ||
| "getApiKeyLinkText": "You can get one from here", | ||
| "input": { | ||
| "label": "API Key", | ||
| "title": "Enter your Youtube Data API V3 key." | ||
| }, | ||
| "title": "YouTube API V3 key" | ||
| } |
There was a problem hiding this comment.
Minor: "Youtube" should be "YouTube" (brand capitalization).
Line 260: "Enter your Youtube Data API V3 key." — The official brand name uses a capital "T": "YouTube".
This same typo appears across all locale files at the equivalent path.
✏️ Proposed fix
"input": {
"label": "API Key",
- "title": "Enter your Youtube Data API V3 key."
+ "title": "Enter your YouTube Data API V3 key."
}📝 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.
| "youtubeDataApiV3Key": { | |
| "getApiKeyLinkText": "You can get one from here", | |
| "input": { | |
| "label": "API Key", | |
| "title": "Enter your Youtube Data API V3 key." | |
| }, | |
| "title": "YouTube API V3 key" | |
| } | |
| "youtubeDataApiV3Key": { | |
| "getApiKeyLinkText": "You can get one from here", | |
| "input": { | |
| "label": "API Key", | |
| "title": "Enter your YouTube Data API V3 key." | |
| }, | |
| "title": "YouTube API V3 key" | |
| } |
🤖 Prompt for AI Agents
In `@public/locales/en-US.json` around lines 256 - 263, Update the brand
capitalization for the Youtube string under the "youtubeDataApiV3Key" object:
change the "input.title" value from "Enter your Youtube Data API V3 key." to
"Enter your YouTube Data API V3 key." and apply the same change for the
equivalent key path ("youtubeDataApiV3Key.input.title") in all other locale
files to keep translations consistent.
| "miniPlayerButton": { | ||
| "button": { | ||
| "label": "Mini Player", | ||
| "toggle": { | ||
| "off": "Mini Player off", | ||
| "on": "Mini Player on" | ||
| } | ||
| } | ||
| }, |
There was a problem hiding this comment.
Many new strings remain untranslated (English) in the Spanish locale.
Numerous newly added sections contain English text instead of Spanish translations. This includes but is not limited to: miniPlayerButton (Lines 61–69), playlistManagementButtons.extras (Lines 94–96), saveToWatchLaterButton.extras (Lines 102–108), openSettingsOnMajorOrMinorVersionChange (Lines 231–233), settingSearch (Line 254), the entire miniPlayer settings section (Lines 286–316), large parts of deepDarkCSS (Lines 329–374), onScreenDisplaySettings titles (Lines 626, 651, 666), playerSpeed.settings.buttons (Lines 700–705), and the entire globalVolume section (Lines 874–886).
Consider doing a translation pass for all newly introduced keys to avoid a degraded UX for Spanish-speaking users.
🤖 Prompt for AI Agents
In `@public/locales/es-ES.json` around lines 61 - 69, The Spanish locale file
contains many untranslated English strings; update public/locales/es-ES.json by
translating all newly added keys into Spanish — at minimum translate
miniPlayerButton (miniPlayerButton.button.label and .toggle.off/.on),
playlistManagementButtons.extras, saveToWatchLaterButton.extras,
openSettingsOnMajorOrMinorVersionChange, settingSearch, the entire miniPlayer
settings section, deepDarkCSS entries, onScreenDisplaySettings titles,
playerSpeed.settings.buttons, and the entire globalVolume section; ensure each
key (e.g., miniPlayerButton, playlistManagementButtons, saveToWatchLaterButton,
openSettingsOnMajorOrMinorVersionChange, settingSearch, miniPlayer, deepDarkCSS,
onScreenDisplaySettings, playerSpeed.settings.buttons, globalVolume) contains
correct Spanish strings and matches the existing JSON structure and punctuation
so the file remains valid.
| "miniPlayerButton": { | ||
| "button": { | ||
| "label": "Mini Player", | ||
| "toggle": { | ||
| "off": "Mini Player off", | ||
| "on": "Mini Player on" | ||
| } | ||
| } | ||
| }, |
There was a problem hiding this comment.
New miniPlayerButton strings are untranslated in Korean locale.
The miniPlayerButton label and toggle states are in English. These should be translated to Korean for consistency with other button entries (e.g., loopButton, maximizePlayerButton which use Korean text like "연속 재생", "화면 크기에 맞추기").
🤖 Prompt for AI Agents
In `@public/locales/ko-KR.json` around lines 61 - 69, The miniPlayerButton entry
contains English strings; replace button.label ("Mini Player") and
button.toggle.off/on ("Mini Player off"/"Mini Player on") with their Korean
equivalents to match the locale; update the JSON keys under miniPlayerButton →
button → label and miniPlayerButton → button → toggle.off and toggle.on with
appropriate Korean translations (e.g., label and toggle states consistent with
other UI strings like loopButton and maximizePlayerButton).
| "miniPlayer": { | ||
| "button": { | ||
| "label": "Mini Player button", | ||
| "title": "Adds a button that opens the Mini Player" | ||
| }, | ||
| "select": { | ||
| "label": "동영상 화질", | ||
| "title": "항상 선택한 화질로 동영상이 재생됩니다." | ||
| }, | ||
| "title": "동영상 화질 자동 변경" | ||
| }, | ||
| "bottomButtons": { | ||
| "clear": { | ||
| "title": "확장과 관련된 데이터를 PC에서 모두 삭제합니다.", | ||
| "value": "데이터 삭제" | ||
| }, | ||
| "confirm": { | ||
| "title": "작업을 진행하려면 다시 누르세요", | ||
| "value": "확인" | ||
| }, | ||
| "openTab": { | ||
| "title": "새 탭에서 설정 열기" | ||
| }, | ||
| "reset": { | ||
| "title": "모든 설정을 기본값으로 변경합니다. 진행을 원하시면 확인을 누르세요", | ||
| "value": "초기화" | ||
| } | ||
| }, | ||
| "buttonPlacement": { | ||
| "select": { | ||
| "buttonNames": { | ||
| "copyTimestampUrlButton": "현재 시간 주소 복사 버튼", | ||
| "decreasePlaybackSpeedButton": "속도 조절 버튼", | ||
| "forwardButton": "빨리 감기 버튼", | ||
| "hideEndScreenCardsButton": "최종 화면 숨기기", | ||
| "increasePlaybackSpeedButton": "속도 조절 버튼", | ||
| "loopButton": "연속 재생 버튼", | ||
| "maximizePlayerButton": "화면 크기에 맞추기 버튼", | ||
| "openTranscriptButton": "스크립트 보기 버튼", | ||
| "rewindButton": "되감기 버튼", | ||
| "screenshotButton": "스크린샷 버튼", | ||
| "volumeBoostButton": "볼륨 부스트 버튼" | ||
| }, | ||
| "options": { | ||
| "below_player": { | ||
| "placement": "플레이어 컨트롤 아래", | ||
| "value": "아래" | ||
| }, | ||
| "feature_menu": { | ||
| "placement": "추가 기능 버튼", | ||
| "value": "추가 기능" | ||
| }, | ||
| "player_controls_left": { | ||
| "placement": "플레이어 컨트롤의 왼쪽", | ||
| "value": "왼쪽" | ||
| }, | ||
| "player_controls_right": { | ||
| "placement": "플레이어 컨트롤의 오른쪽", | ||
| "value": "오른쪽" | ||
| "enable": { | ||
| "label": "Open Mini Player when viewing comments", | ||
| "title": "Automatically opens the Mini Player when you scroll to comments." | ||
| }, | ||
| "settings": { | ||
| "position": { | ||
| "select": { | ||
| "label": "Default Mini Player position", | ||
| "options": { | ||
| "bottomCenter": "Bottom center", | ||
| "bottomLeft": "Bottom left", | ||
| "bottomRight": "Bottom right", | ||
| "topCenter": "Top center", | ||
| "topLeft": "Top left", | ||
| "topRight": "Top right" | ||
| }, | ||
| "title": "Sets the starting position before you move the Mini Player." | ||
| } | ||
| }, | ||
| "title": "{{BUTTON_NAME}} 을 {{PLACEMENT}} 에 배치하세요" | ||
| "size": { | ||
| "label": "Default Mini Player size", | ||
| "title": "Sets the initial size before you resize the Mini Player." | ||
| } | ||
| }, | ||
| "title": "Button placement settings" | ||
| "title": "Mini Player settings" | ||
| }, |
There was a problem hiding this comment.
Entire miniPlayer settings section is untranslated.
All labels, titles, and position options under settings.sections.miniPlayer are in English. This contrasts with other settings sections (e.g., customCSS, forwardRewindButtons, scrollWheelVolumeControl) which have Korean translations.
🤖 Prompt for AI Agents
In `@public/locales/ko-KR.json` around lines 286 - 316, The miniPlayer block is
still in English; translate all strings under the "miniPlayer" object (e.g.,
miniPlayer.button.label, miniPlayer.button.title, miniPlayer.enable.label,
miniPlayer.enable.title, miniPlayer.settings.position.select.label,
miniPlayer.settings.position.select.options.{bottomCenter,bottomLeft,bottomRight,topCenter,topLeft,topRight},
miniPlayer.settings.position.select.title, miniPlayer.settings.size.label,
miniPlayer.settings.size.title, and miniPlayer.title) into Korean consistent
with the style used in neighboring sections (like customCSS and
forwardRewindButtons) while preserving the JSON keys and structure.
| "globalVolume": { | ||
| "enable": { | ||
| "label": "선택한 테마 사용", | ||
| "title": "선택한 테마를 활성화합니다." | ||
| "label": "Always start videos with this volume", | ||
| "title": "Makes all videos begin at your selected volume automatically" | ||
| }, | ||
| "select": { | ||
| "label": "테마 선택", | ||
| "title": "적용할 테마를 선택하세요" | ||
| "settings": { | ||
| "amount": { | ||
| "label": "Video start volume", | ||
| "title": "The volume applied to every video when it begins playing" | ||
| } | ||
| }, | ||
| "title": "YouTube deep dark settings" | ||
| "title": "Global Volume Override" | ||
| } |
There was a problem hiding this comment.
globalVolume section is entirely untranslated.
The enable.label, enable.title, settings.amount, and section title are all in English. For consistency with other volume-related settings (e.g., volumeBoost which is fully translated to Korean), these should be translated.
🤖 Prompt for AI Agents
In `@public/locales/ko-KR.json` around lines 874 - 886, Translate the untranslated
strings under the globalVolume object into Korean: replace enable.label,
enable.title, settings.amount.label, settings.amount.title, and the
globalVolume.title with appropriate Korean equivalents (matching tone and
terminology used in volumeBoost translations), ensuring consistency in phrasing
and punctuation with other locale entries; locate these keys by name
(globalVolume, enable.label, enable.title, settings.amount.label,
settings.amount.title) and update their values to Korean.
| "miniPlayerButton": { | ||
| "button": { | ||
| "label": "Mini Player", | ||
| "toggle": { | ||
| "off": "Mini Player off", | ||
| "on": "Mini Player on" | ||
| } | ||
| } | ||
| }, |
There was a problem hiding this comment.
Many new strings remain untranslated (English) in the Dutch locale.
Similar to other non-English locales, numerous newly added sections contain English text instead of Dutch translations. This includes miniPlayerButton (Lines 61–69), playlistManagementButtons.extras (Lines 92–100), saveToWatchLaterButton.extras (Lines 102–107), openSettingsOnMajorOrMinorVersionChange (Lines 231–233), optionDisabled (Lines 235–251), the entire miniPlayer settings section (Lines 286–315), parts of deepDarkCSS (Lines 367–372), and the globalVolume section (Lines 874–886).
Consider a translation pass for all newly introduced keys.
🤖 Prompt for AI Agents
In `@public/locales/nl-NL.json` around lines 61 - 69, Several newly added keys in
the Dutch locale are still in English; update the translations for the
identified keys by replacing English strings with proper Dutch equivalents:
translate miniPlayerButton (button.toggle.off/on and button.label),
playlistManagementButtons.extras, saveToWatchLaterButton.extras,
openSettingsOnMajorOrMinorVersionChange, optionDisabled (all nested keys), the
entire miniPlayer settings block, the specified parts of deepDarkCSS, and the
globalVolume section; ensure the JSON keys (e.g., "miniPlayerButton",
"playlistManagementButtons.extras", "saveToWatchLaterButton.extras",
"openSettingsOnMajorOrMinorVersionChange", "optionDisabled", "miniPlayer",
"deepDarkCSS", "globalVolume") retain their names and only the string values are
replaced with accurate Dutch translations, preserving punctuation and
interpolation placeholders if any.
| "youtubeDataApiV3Key": { | ||
| "getApiKeyLinkText": "Je kan één gier verkrijgen", | ||
| "input": { | ||
| "label": "API sleutel", | ||
| "title": "Voer uw Youtube Data API V3 sleutel in." | ||
| }, | ||
| "title": "YouTube API V3 key" | ||
| } |
There was a problem hiding this comment.
Typo: "gier" (vulture) should be "hier" (here).
Line 257: "Je kan één gier verkrijgen" translates to "You can get one vulture" — this should be "Je kan er één hier verkrijgen" (or similar phrasing for "You can get one from here").
✏️ Proposed fix
"youtubeDataApiV3Key": {
- "getApiKeyLinkText": "Je kan één gier verkrijgen",
+ "getApiKeyLinkText": "Je kan er hier één verkrijgen",
"input": {📝 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.
| "youtubeDataApiV3Key": { | |
| "getApiKeyLinkText": "Je kan één gier verkrijgen", | |
| "input": { | |
| "label": "API sleutel", | |
| "title": "Voer uw Youtube Data API V3 sleutel in." | |
| }, | |
| "title": "YouTube API V3 key" | |
| } | |
| "youtubeDataApiV3Key": { | |
| "getApiKeyLinkText": "Je kan er hier één verkrijgen", | |
| "input": { | |
| "label": "API sleutel", | |
| "title": "Voer uw Youtube Data API V3 sleutel in." | |
| }, | |
| "title": "YouTube API V3 key" | |
| } |
🤖 Prompt for AI Agents
In `@public/locales/nl-NL.json` around lines 256 - 263, The translation for
youtubeDataApiV3Key.getApiKeyLinkText contains a typo ("gier") and should be
corrected to a proper Dutch phrase; update the value of getApiKeyLinkText under
the youtubeDataApiV3Key object to something like "Je kan er één hier verkrijgen"
(or another natural Dutch phrasing meaning "You can get one from here") so the
link text reads correctly.
|
🎉 This PR is included in version 1.32.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Summary by CodeRabbit
Release Notes
New Features
Documentation
Chores