fix(i18n): every label a screen reader or tooltip says is translated

- The Plex playlist rows' "reorder"/"remove", the Plex filter chip's "remove" and the player
  slider's "reset" were English literals; each now names its row or setting in HU/EN.
- The playlist show header's chevron had no accessible name; its decorative thumbnail button left
  the tab order.
- The opt-in Glass tuner panel was English only: every word is translated, and each slider's label
  now names its number box and range.
- New `local/literal-a11y-text` lint rule (with its contract test): a literal word in aria-label,
  title, placeholder, alt and the other spoken/shown attributes fails lint.
This commit is contained in:
2026-09-19 17:12:47 +02:00
parent 7b94e9a651
commit 4f72b193aa
13 changed files with 325 additions and 70 deletions
+3 -1
View File
@@ -34,5 +34,7 @@
"edit": "Click to type a priority (negatives allowed)"
},
"moreRefine": "{{count}} more — refine with search",
"matchMode": "Match"
"matchMode": "Match",
"removeNamed": "Remove {{name}}",
"resetNamed": "Reset {{name}}"
}
+3 -1
View File
@@ -327,7 +327,9 @@
"removeFailed": "Couldn't remove it from the playlist.",
"renameFailed": "Couldn't rename the playlist.",
"deleteFailed": "Couldn't delete the playlist.",
"reorderFailed": "Couldn't save the new order."
"reorderFailed": "Couldn't save the new order.",
"removeItem": "Remove “{{title}}” from the playlist",
"reorderItem": "Move “{{title}}”"
},
"people": {
"count_one": "{{count}} title",
@@ -249,5 +249,60 @@
"clear": "Clear",
"empty": "No event matches the filter.",
"emptyAll": "No events yet."
},
"tuner": {
"open": "Open the glass tuner",
"tab": "◐ GLASS",
"title": "◐ Glass Tuner",
"lab": "lab",
"collapse": "Collapse",
"treatment": "Dark treatment",
"tabs": {
"glass": "Glass",
"palette": "Palette"
},
"paletteHint": "Overrides the live scheme (inline on <html>). Reset clears these back to the scheme.",
"export": "Export → bake in",
"syncHint": "Load the values of the theme you're currently viewing (light or dark) into the sliders",
"sync": "⟳ Sync to current theme",
"copy": "Copy CSS",
"copied": "Copied ✓",
"reset": "Reset",
"slider": {
"blur": "Blur radius",
"saturate": "Saturation",
"darkBright": "Dark brightness",
"surfaceAlpha": "Panel opacity",
"cardAlpha": "Card opacity",
"menuAlpha": "Menu opacity",
"borderAlpha": "Border opacity",
"edge": "Edge-light rim",
"inset": "Top highlight",
"scrim": "Under-text scrim",
"ambient": "Ambient intensity"
},
"color": {
"bg": "Background",
"surface": "Surface",
"card": "Card",
"border": "Border",
"fg": "Text",
"muted": "Muted",
"accent": "Accent"
},
"preset": {
"current": {
"name": "Glass/image",
"hint": "The default (over image)"
},
"solid": {
"name": "Solid (flat)",
"hint": "As shown w/ image off"
},
"readable": {
"name": "Max readable",
"hint": "Solid + strong scrim"
}
}
}
}
+3 -1
View File
@@ -34,5 +34,7 @@
"edit": "Kattints a prioritás beírásához (negatív is lehet)"
},
"moreRefine": "még {{count}} — finomíts kereséssel",
"matchMode": "Egyezés"
"matchMode": "Egyezés",
"removeNamed": "{{name}}: eltávolítás",
"resetNamed": "{{name}}: alaphelyzet"
}
+3 -1
View File
@@ -327,7 +327,9 @@
"removeFailed": "Nem sikerült eltávolítani a lejátszási listáról.",
"renameFailed": "Nem sikerült átnevezni a lejátszási listát.",
"deleteFailed": "Nem sikerült törölni a lejátszási listát.",
"reorderFailed": "Nem sikerült menteni az új sorrendet."
"reorderFailed": "Nem sikerült menteni az új sorrendet.",
"removeItem": "„{{title}}” eltávolítása a listáról",
"reorderItem": "„{{title}}” áthelyezése"
},
"people": {
"count_one": "{{count}} cím",
@@ -249,5 +249,60 @@
"clear": "Ürítés",
"empty": "Nincs a szűrésnek megfelelő esemény.",
"emptyAll": "Még nincs esemény."
},
"tuner": {
"open": "Glass tuner megnyitása",
"tab": "◐ ÜVEG",
"title": "◐ Glass tuner",
"lab": "labor",
"collapse": "Összecsukás",
"treatment": "Sötét téma",
"tabs": {
"glass": "Üveg",
"palette": "Paletta"
},
"paletteHint": "Felülírja az élő színsémát (inline a <html>-en). A Visszaállítás a séma színeit adja vissza.",
"export": "Exportálás → beégetés",
"syncHint": "A most látott téma (világos vagy sötét) értékeinek betöltése a csúszkákba",
"sync": "⟳ Igazítás a jelenlegi témához",
"copy": "CSS másolása",
"copied": "Másolva ✓",
"reset": "Visszaállítás",
"slider": {
"blur": "Elmosás sugara",
"saturate": "Telítettség",
"darkBright": "Sötét fényerő",
"surfaceAlpha": "Panel fedése",
"cardAlpha": "Kártya fedése",
"menuAlpha": "Menü fedése",
"borderAlpha": "Keret fedése",
"edge": "Élfény-perem",
"inset": "Felső csúcsfény",
"scrim": "Szöveg alatti sötétítés",
"ambient": "Környezeti intenzitás"
},
"color": {
"bg": "Háttér",
"surface": "Felület",
"card": "Kártya",
"border": "Keret",
"fg": "Szöveg",
"muted": "Halvány",
"accent": "Kiemelés"
},
"preset": {
"current": {
"name": "Üveg/kép",
"hint": "Az alapérték (kép fölött)"
},
"solid": {
"name": "Tömör (lapos)",
"hint": "Ahogy kép nélkül látszik"
},
"readable": {
"name": "Legolvashatóbb",
"hint": "Tömör + erős sötétítés"
}
}
}
}