feat(design): the Copy rule — names, verbs, dates and units (E28 S3g)

The owner's picks (all the recommended options) become DESIGN.md's Copy
chapter and a sweep of both languages (742 values, no key drift):

- One name per feature: the rail's label, which may shorten it (Alerts
  -> Notifications, Fiókok -> Felhasználók, Download Center -> Downloads,
  Channel manager -> Channels); one "sync from YouTube" verb.
- Four verbs, four meanings (Delete / Remove / Dismiss / Discard, and
  their Hungarian pairs), checked against what each action does.
- Sentence case, the app's places capitalised; "…" on a command that
  asks first (a popover or form title got its own key without it);
  one-sentence messages without a stop or a tick, "Couldn't …"; curly
  quotes.
- Dates only from lib/format.ts, in the UI language: formatDateTime
  names the month and stops at the minute (it printed "9/27/2026,
  8:30:14 AM"), formatDateTimeSec for the log, the audit and the
  recorder; ui/RelativeTime pairs "3d ago" with the exact minute on
  hover. local/date-format refuses toLocale*String and Intl date
  formatters elsewhere.
- Units from Intl, short (formatUnit): runtimes, totals, the Scheduler
  countdown, the stats range, the player's tap skip. "2h 13m" was
  English in both languages.
- src/i18n/copyRule.test.ts holds the machine-readable part (quotes,
  "...", ticks, bare unit letters).
This commit is contained in:
2026-09-27 05:46:17 +02:00
parent 2c65edfffd
commit bd6aaa1e43
100 changed files with 1193 additions and 964 deletions
+28 -27
View File
@@ -5,7 +5,7 @@
"playAll": "Összes lejátszása",
"shuffle": "Keverés",
"rename": "Átnevezés",
"addItem": "Cím hozzáadása",
"addItem": "Cím hozzáadása…",
"delete": "Törlés",
"enableEdit": "Szerkesztés engedélyezése",
"removeItem": "Eltávolítás a kollekcióból",
@@ -21,15 +21,16 @@
"add": "Hozzáad",
"added": "Hozzáadva",
"deleteConfirm": "Törlöd a(z) „{{title}}” kollekciót? Ez a Plexből is eltávolítja.",
"editFailed": "A kollekció szerkesztése sikertelen",
"playFailed": "Nem sikerült összeállítani a lejátszási sort — próbáld újra.",
"playEmpty": "Ebben a kollekcióban még nincs mit lejátszani.",
"newCollection": "Új kollekció",
"editFailed": "Nem sikerült szerkeszteni a kollekciót",
"playFailed": "Nem sikerült összeállítani a lejátszási sort — próbáld újra",
"playEmpty": "Ebben a kollekcióban még nincs mit lejátszani",
"newCollection": "Új kollekció…",
"newCollectionTitle": "Új kollekció",
"namePlaceholder": "Kollekció neve",
"nameTaken": "Már létezik ilyen nevű kollekció.",
"nameTaken": "Már létezik ilyen nevű kollekció",
"newHint": "Válaszd ki az első címet — egy kollekcióhoz legalább egy elem kell.",
"createWith": "Létrehozás",
"deleteFailed": "Nem sikerült törölni a gyűjteményt."
"deleteFailed": "Nem sikerült törölni a gyűjteményt"
},
"searchPlaceholder": "Keresés a Plexben…",
"searchField": {
@@ -78,9 +79,9 @@
"duration": "Hossz",
"durationUnit": "perc",
"durationOpt": {
"short": "90 perc alatt",
"mid": "90–120 perc",
"long": "2 óra felett"
"short": "90 p alatt",
"mid": "90–120 p",
"long": "2 ó felett"
},
"added": "Plexhez adva",
"addedOpt": {
@@ -128,7 +129,7 @@
"markNextWatched": "S{{season}}·E{{episode}} megnézettnek jelöl",
"markNextUnwatched": "S{{season}}·E{{episode}} nem-nézettnek jelöl",
"nextUp": "Következik: S{{season}}·E{{episode}}",
"watchedFailed": "Nem sikerült frissíteni a megnézett állapotot — próbáld újra.",
"watchedFailed": "Nem sikerült frissíteni a megnézett állapotot — próbáld újra",
"seasons": "{{count}} évad",
"unified": {
"titles": "Címek",
@@ -159,7 +160,7 @@
"delete": "Törlés",
"deleteConfirm": "Törlöd a(z) „{{title}}” kollekciót a Plexből? Ez minden felhasználót érint.",
"note": "A változtatások a Plexbe íródnak, és minden kliensen/felhasználónál megjelennek.",
"others": "{{count}} meglévő kollekció kezelése…",
"others": "{{count}} meglévő kollekció kezelése",
"makeEditable": "Kezelem"
},
"player": {
@@ -174,8 +175,8 @@
"restart": "Újra az elejéről",
"prev": "Előző rész",
"next": "Következő rész",
"tapBack": "−{{n}} mp",
"tapForward": "+{{n}} mp",
"tapBack": "−{{d}}",
"tapForward": "+{{d}}",
"mute": "Némítás (m)",
"volume": "Hangerő",
"fullscreen": "Teljes képernyő (f)",
@@ -186,7 +187,7 @@
"subOff": "Ki",
"errNotFound": "Ez a fájl nem játszható le — a média nem érhető el a szerveren (hiányzik a Plex media-mount, vagy hibás az útvonal-leképezés). Kérd meg az adminisztrátort, hogy ellenőrizze a Plex beállításait.",
"errTranscode": "Ennek a fájlnak a formátuma transzkódolást igényel, ami még nem támogatott.",
"errGeneric": "A lejátszást nem sikerült elindítani. Próbáld újra.",
"errGeneric": "Nem sikerült elindítani a lejátszást. Próbáld újra.",
"help": "Billentyűparancsok",
"infoBtn": "Média infó",
"more": "Továbbiak",
@@ -222,9 +223,9 @@
"subStyle": "Feliratok",
"subPreparing": "Felirat előkészítése: {{label}}…",
"subUnavailable": {
"bitmap": "Ez a felirat képalapú, szövegként nem jeleníthető meg.",
"missing": "Ez a feliratsáv nem érhető el.",
"failed": "Ezt a feliratot nem sikerült betölteni."
"bitmap": "Ez a felirat képalapú, szövegként nem jeleníthető meg",
"missing": "Ez a feliratsáv nem érhető el",
"failed": "Nem sikerült betölteni ezt a feliratot"
},
"subSize": "Szövegméret",
"subPos": "Pozíció",
@@ -294,16 +295,16 @@
"transcode_sw": "Szoftveresen átkódolva (legnehezebb)"
},
"playlistAdd": {
"manage": "Listához adás",
"manage": "Listához adás…",
"title": "Listához adás — {{title}}",
"newPlaceholder": "Új lista neve…",
"create": "Létrehozás",
"none": "Még nincs lista. Hozz létre egyet fent.",
"count": "{{count}} elem",
"groupProgress": "{{in}} / {{size}}",
"addFailed": "Nem sikerült hozzáadni a lejátszási listához.",
"removeFailed": "Nem sikerült eltávolítani a lejátszási listáról.",
"createFailed": "Nem sikerült létrehozni a lejátszási listát."
"addFailed": "Nem sikerült hozzáadni a lejátszási listához",
"removeFailed": "Nem sikerült eltávolítani a lejátszási listáról",
"createFailed": "Nem sikerült létrehozni a lejátszási listát"
},
"playlist": {
"section": "Lejátszási listák",
@@ -326,10 +327,10 @@
"addShow": "Egész sorozat listához adása",
"addSeason": "Évad listához adása",
"addEpisode": "Epizód listához adása",
"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.",
"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",
"reorderItem": "„{{title}}” áthelyezése",
"rowMenu": "Elem műveletei",
"menu": "Lista műveletei",
@@ -337,7 +338,7 @@
"playSeason": "Évad lejátszása",
"removeFromPlaylist": "Eltávolítás a listáról",
"removedToast": "„{{title}}” eltávolítva a listáról",
"undoRemoveFailed": "Nem sikerült visszatenni a listára."
"undoRemoveFailed": "Nem sikerült visszatenni a listára"
},
"people": {
"count_one": "{{count}} cím",