feat(i18n): the server's closed English vocabularies named in the reader's language (E30 S2)
- lib/vocab + the `vocab` locale area: TMDB crew jobs and departments, auto-tags (D1 A: the data
stays English, the catalog is named at its one source, useTags), built-in download profiles,
YouTube topics; held key-for-key to the backend's own lists by backendIds.contract.
- Countries by ISO code: TMDB parse stores {code, name}; rows stored before are coded from TMDB's
own country list in one request (run_enrich); Intl names them, historic codes (YU, SU, XI…)
from the catalog.
- Player tracks named from the language tag, forced/SDH flags and codec tail, not Plex's
server-language displayTitle; no invented "Audio N" on the server.
- Download lifecycle notices (shared / expiring / expired / evicted) named from data; the share
notice carries the title.
- Scheduler: the job result rides along as data and is named per key (dashboard + run notice).
- Invite status named; a render crash's notice no longer shows the engine's English message.
- Fix: YouTube links …/wiki/Humour, the tagger looked for "Humor" — Comedy never came from a topic.
This commit is contained in:
@@ -32,6 +32,7 @@ const status = (over: Partial<SchedulerStatus> = {}): SchedulerStatus => ({
|
||||
last_started: null,
|
||||
last_finished: null,
|
||||
last_result: null,
|
||||
result: null,
|
||||
last_error: null,
|
||||
progress: null,
|
||||
},
|
||||
@@ -258,3 +259,25 @@ describe("Scheduler while paused (E28 audit F13)", () => {
|
||||
expect(runOne).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
describe("a job's last result (E30)", () => {
|
||||
it("is named from its data, not the server's English one-liner", async () => {
|
||||
const base = status();
|
||||
await mount({
|
||||
...base,
|
||||
jobs: [
|
||||
{
|
||||
...base.jobs[0]!,
|
||||
last_finished: new Date().toISOString(),
|
||||
last_result: "new=3, failed=0",
|
||||
result: { new: 3, failed: 0 },
|
||||
},
|
||||
],
|
||||
});
|
||||
// Key-echo i18n: the keys named, the counts shown.
|
||||
expect(
|
||||
await screen.findByText(/scheduler\.result\.new: 3 · scheduler\.result\.failed: 0/),
|
||||
).toBeTruthy();
|
||||
expect(screen.queryByText(/new=3/)).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user