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:
@@ -1,5 +1,6 @@
|
||||
import { readdirSync, readFileSync } from "node:fs";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { vocabKey } from "../lib/vocab";
|
||||
|
||||
// Every id the BACKEND owns and the UI names must have its name in both languages. The UI looks these
|
||||
// up with the raw id as the fallback — `t(\`config.fields.${key}.label\`, key)` — so a missing key never
|
||||
@@ -147,6 +148,45 @@ const youtubeReasons = [
|
||||
).matchAll(/"(\w+)"/g),
|
||||
].map((m) => m[1]!);
|
||||
|
||||
// E30: the closed English vocabularies the backend WRITES into data, named through `vocab.<group>`
|
||||
// (lib/vocab) by their letters-and-digits key. A word the backend adds shows in English until named —
|
||||
// so each list is read from its source here: the TMDB crew jobs kept, every auto-tag the tagger can
|
||||
// create, and the built-in download profiles of the latest migration that seeds them.
|
||||
const pyStrings = (block: string | undefined, re: RegExp) =>
|
||||
[...(block ?? "").matchAll(re)].map((m) => m[1]!);
|
||||
const between = (src: string, start: string, end: string) => src.split(start)[1]?.split(end)[0];
|
||||
const tmdbPy = backend("plex/tmdb.py");
|
||||
const crewJobs = [
|
||||
...new Set([
|
||||
...pyStrings(between(tmdbPy, "_MOVIE_CREW_JOBS = (", ")"), /"([^"]+)"/g),
|
||||
...pyStrings(between(tmdbPy, "_TV_CREW_JOBS = (", ")"), /"([^"]+)"/g),
|
||||
]),
|
||||
];
|
||||
const autotagPy = backend("sync/autotag.py");
|
||||
const autoTags = [
|
||||
...new Set([
|
||||
...pyStrings(between(autotagPy, "LANG_NAMES = {", "}"), /:\s*"([^"]+)"/g),
|
||||
...pyStrings(between(autotagPy, "TOPIC_COLORS = {", "}"), /"([^"]+)":/g),
|
||||
...pyStrings(between(autotagPy, "_TOPIC_SLUGS = {", "}"), /:\s*"([^"]+)"/g),
|
||||
...pyStrings(between(autotagPy, "_CATEGORY_NAMES = {", "}"), /:\s*"([^"]+)"/g),
|
||||
...pyStrings(between(autotagPy, "def map_topic_slug", "\n\n\n"), /return "([^"]+)"/g),
|
||||
]),
|
||||
];
|
||||
const migrations = readdirSync(new URL("../../../backend/alembic/versions/", import.meta.url))
|
||||
.filter((f) => f.endsWith(".py"))
|
||||
.sort();
|
||||
const seeding = migrations
|
||||
.map((f) =>
|
||||
readFileSync(new URL(`../../../backend/alembic/versions/${f}`, import.meta.url), "utf-8"),
|
||||
)
|
||||
.filter((src) => src.includes("_BUILTINS = ["))
|
||||
.pop();
|
||||
const builtinProfiles = pyStrings(
|
||||
between(seeding ?? "", "_BUILTINS = [", "\n]"),
|
||||
/^\s+\("([^"]+)",/gm,
|
||||
);
|
||||
const VOCAB = { crewJob: crewJobs, autoTag: autoTags, profile: builtinProfiles };
|
||||
|
||||
/** The ids under `prefix` a locale names, `prefix.<id>` or `prefix.<id>.<anything>`. */
|
||||
const idsUnder = (keys: Set<string>, prefix: string) =>
|
||||
new Set(
|
||||
@@ -170,6 +210,13 @@ describe("backend ids have their names in both languages", () => {
|
||||
expect(goneWhats).toEqual(expect.arrayContaining(["playlist", "download", "job"]));
|
||||
expect(opaqueWhats).toEqual([]);
|
||||
expect(youtubeReasons).toEqual(["quota", "reconnect", "unavailable"]);
|
||||
expect(crewJobs).toEqual(
|
||||
expect.arrayContaining(["Director", "Creator", "Director of Photography"]),
|
||||
);
|
||||
expect(autoTags).toEqual(
|
||||
expect.arrayContaining(["English", "Gaming", "Health & Fitness", "Hobbies", "Sports"]),
|
||||
);
|
||||
expect(builtinProfiles).toEqual(expect.arrayContaining(["720p (MP4)", "Video only (MP4)"]));
|
||||
expect(refusedReasons).toEqual(
|
||||
expect.arrayContaining(["weak_password", "setting_too_low", "plex_write_failed"]),
|
||||
);
|
||||
@@ -254,6 +301,17 @@ describe("backend ids have their names in both languages", () => {
|
||||
).toEqual([]);
|
||||
});
|
||||
|
||||
it(`${lang}: every crew job, auto-tag and built-in profile the backend writes, and no other`, () => {
|
||||
for (const [group, words] of Object.entries(VOCAB)) {
|
||||
const wanted = words.map((w) => `vocab.${group}.${vocabKey(w)}`);
|
||||
expect(missing(wanted), group).toEqual([]);
|
||||
expect(
|
||||
[...keys].filter((k) => k.startsWith(`vocab.${group}.`) && !wanted.includes(k)),
|
||||
group,
|
||||
).toEqual([]);
|
||||
}
|
||||
});
|
||||
|
||||
it(`${lang}: every admin refusal reason`, () => {
|
||||
expect(missing(adminReasons.map((r) => `errors.admin.${r}`))).toEqual([]);
|
||||
expect([...idsUnder(keys, "errors.admin")].filter((r) => !adminReasons.includes(r))).toEqual(
|
||||
|
||||
@@ -34,5 +34,17 @@
|
||||
"title": "Email is not going out",
|
||||
"notConfigured": "SMTP is not configured, so nothing this instance sends is being delivered — verification links, password resets and access requests alike. One of them was “{{subject}}”. Set it up under Configuration → Email / SMTP.",
|
||||
"sendFailed": "Couldn't send email, so messages are not being delivered. One of them was “{{subject}}”. Check Configuration → Email / SMTP and send a test; the server log has the reason."
|
||||
},
|
||||
"downloadShared": {
|
||||
"title": "{{from}} shared a download with you"
|
||||
},
|
||||
"downloadExpiring": {
|
||||
"title": "A download expires soon"
|
||||
},
|
||||
"downloadExpired": {
|
||||
"title": "A download expired and was removed"
|
||||
},
|
||||
"downloadEvicted": {
|
||||
"title": "A download was removed to free up space"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,5 +113,70 @@
|
||||
"purgeDiscovery": "Purge discovery",
|
||||
"purgeDiscoveryHint": "Delete all un-kept discovery content now (search results nobody watched/saved, and explored-but-unsubscribed channels) — ignoring the grace period.",
|
||||
"purgeConfirmTitle": "Purge discovery content?",
|
||||
"purgedDiscovery": "Deleted {{count}} discovery items"
|
||||
"purgedDiscovery": "Deleted {{count}} discovery items",
|
||||
"result": {
|
||||
"new": "new videos",
|
||||
"failed": "failed",
|
||||
"fallback": "read through the API",
|
||||
"channels_processed": "channels processed",
|
||||
"videos_added": "videos added",
|
||||
"reconciled_full": "fully reconciled",
|
||||
"reason": "reason",
|
||||
"channels_tagged": "channels tagged",
|
||||
"orphan_tags_removed": "orphan tags removed",
|
||||
"probed": "checked",
|
||||
"shorts": "Shorts",
|
||||
"users": "users",
|
||||
"playlists_synced": "playlists synced",
|
||||
"rechecked": "rechecked",
|
||||
"recovered": "recovered",
|
||||
"deleted": "deleted",
|
||||
"notified": "notified",
|
||||
"revalidated": "revalidated",
|
||||
"flagged": "flagged",
|
||||
"skipped": "skipped",
|
||||
"playlists_seeded": "playlists seeded",
|
||||
"expired": "expired",
|
||||
"videos_deleted": "videos deleted",
|
||||
"channels_deleted": "channels deleted",
|
||||
"search_videos_deleted": "search results deleted",
|
||||
"warned": "warned",
|
||||
"evicted": "evicted",
|
||||
"reaped": "cleaned up",
|
||||
"swept": "swept",
|
||||
"libraries": "libraries",
|
||||
"movies": "movies",
|
||||
"shows": "shows",
|
||||
"seasons": "seasons",
|
||||
"episodes": "episodes",
|
||||
"collections": "collections",
|
||||
"overlaid": "HU overlay",
|
||||
"pruned": "pruned",
|
||||
"people_enriched": "people enriched",
|
||||
"media_probed": "media probed",
|
||||
"people_pruned": "people pruned",
|
||||
"error": "error",
|
||||
"links": "links",
|
||||
"watched": "watched",
|
||||
"in_progress": "in progress",
|
||||
"repushed": "re-sent",
|
||||
"movie_probes": "movie probes",
|
||||
"applied": "applied",
|
||||
"cleared": "cleared",
|
||||
"scanned": "scanned",
|
||||
"enriched": "enriched",
|
||||
"countries_coded": "countries coded",
|
||||
"sessions_closed": "sessions closed",
|
||||
"sessions_reaped": "sessions cleaned up",
|
||||
"recent": "recent",
|
||||
"deep": "deep"
|
||||
},
|
||||
"skip": {
|
||||
"disabled": "disabled",
|
||||
"PlexserverURLortokenisnotconfigured": "Plex server URL or token is not configured",
|
||||
"tmdbapikeynotset": "TMDB API key not set",
|
||||
"nodemoaccount": "no demo account",
|
||||
"noserviceuser": "no service user",
|
||||
"syncpaused": "sync paused"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,7 +192,11 @@
|
||||
"deleteFailed": "Couldn't delete the entry",
|
||||
"emailOff": "Email sending is not configured, so nobody gets a verification link and no request reaches you by email. Watch this list and your Notifications instead, and fix it under Configuration → Email / SMTP.",
|
||||
"deletedStillAllowed": "Entry deleted, but this address is still allow-listed by the server's configuration, so it keeps access. Remove it from ALLOWED_EMAILS / ADMIN_EMAILS to change that.",
|
||||
"deleteConfirmStillAllowed": "Forget {{email}}? Careful: this address is also allow-listed in the server's configuration (ALLOWED_EMAILS / ADMIN_EMAILS), so deleting this row will NOT take its access away — and an ADMIN_EMAILS address is made an admin again on its next Google sign-in."
|
||||
"deleteConfirmStillAllowed": "Forget {{email}}? Careful: this address is also allow-listed in the server's configuration (ALLOWED_EMAILS / ADMIN_EMAILS), so deleting this row will NOT take its access away — and an ADMIN_EMAILS address is made an admin again on its next Google sign-in.",
|
||||
"status": {
|
||||
"approved": "Approved",
|
||||
"denied": "Denied"
|
||||
}
|
||||
},
|
||||
"diagnostics": {
|
||||
"title": "Logging level",
|
||||
|
||||
@@ -0,0 +1,169 @@
|
||||
{
|
||||
"crewJob": {
|
||||
"Director": "Director",
|
||||
"Writer": "Writer",
|
||||
"Screenplay": "Screenplay",
|
||||
"Story": "Story",
|
||||
"Producer": "Producer",
|
||||
"ExecutiveProducer": "Executive Producer",
|
||||
"Editor": "Editor",
|
||||
"DirectorofPhotography": "Director of Photography",
|
||||
"OriginalMusicComposer": "Original Music Composer",
|
||||
"Creator": "Creator"
|
||||
},
|
||||
"department": {
|
||||
"Acting": "Acting",
|
||||
"Directing": "Directing",
|
||||
"Writing": "Writing",
|
||||
"Production": "Production",
|
||||
"Sound": "Sound",
|
||||
"Camera": "Camera",
|
||||
"Editing": "Editing",
|
||||
"Art": "Art",
|
||||
"CostumeMakeUp": "Costume & Make-Up",
|
||||
"Crew": "Crew",
|
||||
"VisualEffects": "Visual Effects",
|
||||
"Lighting": "Lighting",
|
||||
"Creator": "Creator"
|
||||
},
|
||||
"autoTag": {
|
||||
"English": "English",
|
||||
"Hungarian": "Hungarian",
|
||||
"German": "German",
|
||||
"French": "French",
|
||||
"Spanish": "Spanish",
|
||||
"Italian": "Italian",
|
||||
"Portuguese": "Portuguese",
|
||||
"Dutch": "Dutch",
|
||||
"Russian": "Russian",
|
||||
"Polish": "Polish",
|
||||
"Romanian": "Romanian",
|
||||
"Czech": "Czech",
|
||||
"Slovak": "Slovak",
|
||||
"Turkish": "Turkish",
|
||||
"Swedish": "Swedish",
|
||||
"Danish": "Danish",
|
||||
"Norwegian": "Norwegian",
|
||||
"Finnish": "Finnish",
|
||||
"Japanese": "Japanese",
|
||||
"Korean": "Korean",
|
||||
"Chinese": "Chinese",
|
||||
"Hindi": "Hindi",
|
||||
"Arabic": "Arabic",
|
||||
"Ukrainian": "Ukrainian",
|
||||
"Greek": "Greek",
|
||||
"Gaming": "Gaming",
|
||||
"Music": "Music",
|
||||
"Cooking": "Cooking",
|
||||
"Tech": "Tech",
|
||||
"Education": "Education",
|
||||
"Sports": "Sports",
|
||||
"Film": "Film",
|
||||
"TV": "TV",
|
||||
"Politics": "Politics",
|
||||
"HealthFitness": "Health & Fitness",
|
||||
"Vehicles": "Vehicles",
|
||||
"Animals": "Animals",
|
||||
"FashionBeauty": "Fashion & Beauty",
|
||||
"Travel": "Travel",
|
||||
"Comedy": "Comedy",
|
||||
"Entertainment": "Entertainment",
|
||||
"Business": "Business",
|
||||
"Science": "Science",
|
||||
"News": "News",
|
||||
"Society": "Society",
|
||||
"PerformingArts": "Performing Arts",
|
||||
"Military": "Military",
|
||||
"Religion": "Religion",
|
||||
"Hobbies": "Hobbies"
|
||||
},
|
||||
"profile": {
|
||||
"720pMP4": "720p (MP4)",
|
||||
"1080pMP4": "1080p (MP4)",
|
||||
"BestMP4": "Best (MP4)",
|
||||
"AudioM4A": "Audio (M4A)",
|
||||
"AudioMP3": "Audio (MP3)",
|
||||
"VideoonlyMP4": "Video only (MP4)"
|
||||
},
|
||||
"topic": {
|
||||
"Music": "Music",
|
||||
"Christianmusic": "Christian music",
|
||||
"Classicalmusic": "Classical music",
|
||||
"Countrymusic": "Country music",
|
||||
"Electronicmusic": "Electronic music",
|
||||
"Hiphopmusic": "Hip hop music",
|
||||
"Independentmusic": "Independent music",
|
||||
"Jazz": "Jazz",
|
||||
"MusicofAsia": "Music of Asia",
|
||||
"MusicofLatinAmerica": "Music of Latin America",
|
||||
"Popmusic": "Pop music",
|
||||
"Reggae": "Reggae",
|
||||
"Rhythmandblues": "Rhythm and blues",
|
||||
"Rockmusic": "Rock music",
|
||||
"Soulmusic": "Soul music",
|
||||
"Videogameculture": "Video game culture",
|
||||
"Actiongame": "Action game",
|
||||
"Actionadventuregame": "Action-adventure game",
|
||||
"Casualgame": "Casual game",
|
||||
"Musicvideogame": "Music video game",
|
||||
"Puzzlevideogame": "Puzzle video game",
|
||||
"Racingvideogame": "Racing video game",
|
||||
"Roleplayingvideogame": "Role-playing video game",
|
||||
"Simulationvideogame": "Simulation video game",
|
||||
"Sportsgame": "Sports game",
|
||||
"Strategyvideogame": "Strategy video game",
|
||||
"Sport": "Sport",
|
||||
"Americanfootball": "American football",
|
||||
"Associationfootball": "Association football",
|
||||
"Baseball": "Baseball",
|
||||
"Basketball": "Basketball",
|
||||
"Boxing": "Boxing",
|
||||
"Cricket": "Cricket",
|
||||
"Golf": "Golf",
|
||||
"Icehockey": "Ice hockey",
|
||||
"Mixedmartialarts": "Mixed martial arts",
|
||||
"Motorsport": "Motorsport",
|
||||
"Professionalwrestling": "Professional wrestling",
|
||||
"Tennis": "Tennis",
|
||||
"Volleyball": "Volleyball",
|
||||
"Entertainment": "Entertainment",
|
||||
"Humour": "Humour",
|
||||
"Film": "Film",
|
||||
"Performingarts": "Performing arts",
|
||||
"Televisionprogram": "Television program",
|
||||
"Lifestylesociology": "Lifestyle (sociology)",
|
||||
"Fashion": "Fashion",
|
||||
"Physicalfitness": "Physical fitness",
|
||||
"Food": "Food",
|
||||
"Hobby": "Hobby",
|
||||
"Pet": "Pet",
|
||||
"Physicalattractiveness": "Physical attractiveness",
|
||||
"Technology": "Technology",
|
||||
"Tourism": "Tourism",
|
||||
"Vehicle": "Vehicle",
|
||||
"Society": "Society",
|
||||
"Business": "Business",
|
||||
"Health": "Health",
|
||||
"Military": "Military",
|
||||
"Politics": "Politics",
|
||||
"Religion": "Religion",
|
||||
"Knowledge": "Knowledge"
|
||||
},
|
||||
"region": {
|
||||
"AN": "Netherlands Antilles",
|
||||
"SU": "Soviet Union",
|
||||
"XC": "Czechoslovakia",
|
||||
"XG": "East Germany",
|
||||
"XI": "Northern Ireland",
|
||||
"YU": "Yugoslavia",
|
||||
"ZR": "Zaire"
|
||||
},
|
||||
"track": {
|
||||
"forced": "forced",
|
||||
"sdh": "SDH",
|
||||
"stereo": "Stereo",
|
||||
"mono": "Mono",
|
||||
"audioN": "Audio {{n}}",
|
||||
"subtitleN": "Subtitle {{n}}"
|
||||
}
|
||||
}
|
||||
@@ -34,5 +34,17 @@
|
||||
"title": "Nem megy ki e-mail",
|
||||
"notConfigured": "Az SMTP nincs beállítva, így semmi nem kézbesíthető, amit ez a példány küldene — megerősítő linkek, jelszó-visszaállítások és hozzáférés-kérelmek egyaránt. Az egyik ilyen: „{{subject}}”. Állítsd be a Konfiguráció → E-mail / SMTP fülön.",
|
||||
"sendFailed": "Nem sikerült e-mailt küldeni, így az üzenetek nem kézbesíthetők. Az egyik ilyen: „{{subject}}”. Nézd meg a Konfiguráció → E-mail / SMTP fület, és küldj tesztet; az okot a szerver naplója tartalmazza."
|
||||
},
|
||||
"downloadShared": {
|
||||
"title": "{{from}} megosztott veled egy letöltést"
|
||||
},
|
||||
"downloadExpiring": {
|
||||
"title": "Hamarosan lejár egy letöltés"
|
||||
},
|
||||
"downloadExpired": {
|
||||
"title": "Egy letöltés lejárt, és törlődött"
|
||||
},
|
||||
"downloadEvicted": {
|
||||
"title": "Egy letöltés helyhiány miatt törlődött"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,5 +113,70 @@
|
||||
"purgeDiscovery": "Felfedezés ürítése",
|
||||
"purgeDiscoveryHint": "Most törli az összes meg nem tartott felfedezés-tartalmat (senki által meg nem nézett/mentett keresési találatok és felfedezett, de nem követett csatornák) — a türelmi időt figyelmen kívül hagyva.",
|
||||
"purgeConfirmTitle": "Felfedezés-tartalom törlése?",
|
||||
"purgedDiscovery": "{{count}} felfedezés-elem törölve"
|
||||
"purgedDiscovery": "{{count}} felfedezés-elem törölve",
|
||||
"result": {
|
||||
"new": "új videó",
|
||||
"failed": "sikertelen",
|
||||
"fallback": "API-n át olvasva",
|
||||
"channels_processed": "feldolgozott csatorna",
|
||||
"videos_added": "hozzáadott videó",
|
||||
"reconciled_full": "teljesen egyeztetve",
|
||||
"reason": "ok",
|
||||
"channels_tagged": "címkézett csatorna",
|
||||
"orphan_tags_removed": "törölt árva címke",
|
||||
"probed": "ellenőrizve",
|
||||
"shorts": "Shorts",
|
||||
"users": "felhasználó",
|
||||
"playlists_synced": "szinkronizált lejátszási lista",
|
||||
"rechecked": "újraellenőrizve",
|
||||
"recovered": "helyreállt",
|
||||
"deleted": "törölve",
|
||||
"notified": "értesítve",
|
||||
"revalidated": "újraérvényesítve",
|
||||
"flagged": "megjelölve",
|
||||
"skipped": "kihagyva",
|
||||
"playlists_seeded": "létrehozott lejátszási lista",
|
||||
"expired": "lejárt",
|
||||
"videos_deleted": "törölt videó",
|
||||
"channels_deleted": "törölt csatorna",
|
||||
"search_videos_deleted": "törölt keresési találat",
|
||||
"warned": "figyelmeztetve",
|
||||
"evicted": "helyhiány miatt törölve",
|
||||
"reaped": "eltakarítva",
|
||||
"swept": "kisöpörve",
|
||||
"libraries": "könyvtár",
|
||||
"movies": "film",
|
||||
"shows": "sorozat",
|
||||
"seasons": "évad",
|
||||
"episodes": "epizód",
|
||||
"collections": "gyűjtemény",
|
||||
"overlaid": "magyar átfedés",
|
||||
"pruned": "eltávolítva",
|
||||
"people_enriched": "kiegészített személy",
|
||||
"media_probed": "vizsgált média",
|
||||
"people_pruned": "eltávolított személy",
|
||||
"error": "hiba",
|
||||
"links": "kapcsolat",
|
||||
"watched": "megnézve",
|
||||
"in_progress": "folyamatban",
|
||||
"repushed": "újraküldve",
|
||||
"movie_probes": "filmvizsgálat",
|
||||
"applied": "alkalmazva",
|
||||
"cleared": "törölve",
|
||||
"scanned": "átvizsgálva",
|
||||
"enriched": "kiegészítve",
|
||||
"countries_coded": "országkód pótolva",
|
||||
"sessions_closed": "lezárt munkamenet",
|
||||
"sessions_reaped": "eltakarított munkamenet",
|
||||
"recent": "friss",
|
||||
"deep": "mély"
|
||||
},
|
||||
"skip": {
|
||||
"disabled": "kikapcsolva",
|
||||
"PlexserverURLortokenisnotconfigured": "a Plex-szerver címe vagy tokenje nincs beállítva",
|
||||
"tmdbapikeynotset": "nincs TMDB API-kulcs",
|
||||
"nodemoaccount": "nincs demófiók",
|
||||
"noserviceuser": "nincs szolgáltatásfiók",
|
||||
"syncpaused": "a szinkron szünetel"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,7 +192,11 @@
|
||||
"deleteFailed": "Nem sikerült törölni a bejegyzést",
|
||||
"emailOff": "Az e-mail-küldés nincs beállítva, így senki nem kap megerősítő linket, és e-mailben egy kérelem sem jut el hozzád. Ezt a listát és az Értesítéseket figyeld helyette, a javítás pedig a Konfiguráció → E-mail / SMTP fülön van.",
|
||||
"deletedStillAllowed": "A bejegyzés törölve, de ezt a címet a szerver konfigurációja továbbra is engedélyezi, tehát megmarad a hozzáférése. Vedd ki az ALLOWED_EMAILS / ADMIN_EMAILS listából, ha ezen változtatnál.",
|
||||
"deleteConfirmStillAllowed": "Elfelejted {{email}} címet? Figyelem: ezt a címet a szerver konfigurációja is engedélyezi (ALLOWED_EMAILS / ADMIN_EMAILS), így a bejegyzés törlése NEM veszi el a hozzáférését — sőt egy ADMIN_EMAILS cím a következő Google-belépéskor újra adminná válik."
|
||||
"deleteConfirmStillAllowed": "Elfelejted {{email}} címet? Figyelem: ezt a címet a szerver konfigurációja is engedélyezi (ALLOWED_EMAILS / ADMIN_EMAILS), így a bejegyzés törlése NEM veszi el a hozzáférését — sőt egy ADMIN_EMAILS cím a következő Google-belépéskor újra adminná válik.",
|
||||
"status": {
|
||||
"approved": "Jóváhagyva",
|
||||
"denied": "Elutasítva"
|
||||
}
|
||||
},
|
||||
"diagnostics": {
|
||||
"title": "Naplózási szint",
|
||||
|
||||
@@ -0,0 +1,169 @@
|
||||
{
|
||||
"crewJob": {
|
||||
"Director": "Rendező",
|
||||
"Writer": "Író",
|
||||
"Screenplay": "Forgatókönyv",
|
||||
"Story": "Történet",
|
||||
"Producer": "Producer",
|
||||
"ExecutiveProducer": "Vezető producer",
|
||||
"Editor": "Vágó",
|
||||
"DirectorofPhotography": "Operatőr",
|
||||
"OriginalMusicComposer": "Zeneszerző",
|
||||
"Creator": "Alkotó"
|
||||
},
|
||||
"department": {
|
||||
"Acting": "Színészet",
|
||||
"Directing": "Rendezés",
|
||||
"Writing": "Írás",
|
||||
"Production": "Produkció",
|
||||
"Sound": "Hang",
|
||||
"Camera": "Operatőri munka",
|
||||
"Editing": "Vágás",
|
||||
"Art": "Látványtervezés",
|
||||
"CostumeMakeUp": "Jelmez és smink",
|
||||
"Crew": "Stáb",
|
||||
"VisualEffects": "Vizuális effektek",
|
||||
"Lighting": "Világítás",
|
||||
"Creator": "Alkotó"
|
||||
},
|
||||
"autoTag": {
|
||||
"English": "Angol",
|
||||
"Hungarian": "Magyar",
|
||||
"German": "Német",
|
||||
"French": "Francia",
|
||||
"Spanish": "Spanyol",
|
||||
"Italian": "Olasz",
|
||||
"Portuguese": "Portugál",
|
||||
"Dutch": "Holland",
|
||||
"Russian": "Orosz",
|
||||
"Polish": "Lengyel",
|
||||
"Romanian": "Román",
|
||||
"Czech": "Cseh",
|
||||
"Slovak": "Szlovák",
|
||||
"Turkish": "Török",
|
||||
"Swedish": "Svéd",
|
||||
"Danish": "Dán",
|
||||
"Norwegian": "Norvég",
|
||||
"Finnish": "Finn",
|
||||
"Japanese": "Japán",
|
||||
"Korean": "Koreai",
|
||||
"Chinese": "Kínai",
|
||||
"Hindi": "Hindi",
|
||||
"Arabic": "Arab",
|
||||
"Ukrainian": "Ukrán",
|
||||
"Greek": "Görög",
|
||||
"Gaming": "Videojátékok",
|
||||
"Music": "Zene",
|
||||
"Cooking": "Főzés",
|
||||
"Tech": "Technika",
|
||||
"Education": "Oktatás",
|
||||
"Sports": "Sport",
|
||||
"Film": "Film",
|
||||
"TV": "TV",
|
||||
"Politics": "Politika",
|
||||
"HealthFitness": "Egészség és fitnesz",
|
||||
"Vehicles": "Járművek",
|
||||
"Animals": "Állatok",
|
||||
"FashionBeauty": "Divat és szépség",
|
||||
"Travel": "Utazás",
|
||||
"Comedy": "Humor",
|
||||
"Entertainment": "Szórakozás",
|
||||
"Business": "Üzlet",
|
||||
"Science": "Tudomány",
|
||||
"News": "Hírek",
|
||||
"Society": "Társadalom",
|
||||
"PerformingArts": "Előadóművészet",
|
||||
"Military": "Katonaság",
|
||||
"Religion": "Vallás",
|
||||
"Hobbies": "Hobbik"
|
||||
},
|
||||
"profile": {
|
||||
"720pMP4": "720p (MP4)",
|
||||
"1080pMP4": "1080p (MP4)",
|
||||
"BestMP4": "Legjobb (MP4)",
|
||||
"AudioM4A": "Hang (M4A)",
|
||||
"AudioMP3": "Hang (MP3)",
|
||||
"VideoonlyMP4": "Csak videó (MP4)"
|
||||
},
|
||||
"topic": {
|
||||
"Music": "Zene",
|
||||
"Christianmusic": "Keresztény zene",
|
||||
"Classicalmusic": "Klasszikus zene",
|
||||
"Countrymusic": "Country",
|
||||
"Electronicmusic": "Elektronikus zene",
|
||||
"Hiphopmusic": "Hiphop",
|
||||
"Independentmusic": "Független zene",
|
||||
"Jazz": "Jazz",
|
||||
"MusicofAsia": "Ázsiai zene",
|
||||
"MusicofLatinAmerica": "Latin-amerikai zene",
|
||||
"Popmusic": "Popzene",
|
||||
"Reggae": "Reggae",
|
||||
"Rhythmandblues": "R&B",
|
||||
"Rockmusic": "Rockzene",
|
||||
"Soulmusic": "Soul",
|
||||
"Videogameculture": "Videojáték-kultúra",
|
||||
"Actiongame": "Akciójáték",
|
||||
"Actionadventuregame": "Akció-kalandjáték",
|
||||
"Casualgame": "Casual játék",
|
||||
"Musicvideogame": "Zenei videojáték",
|
||||
"Puzzlevideogame": "Logikai játék",
|
||||
"Racingvideogame": "Autóversenyzős játék",
|
||||
"Roleplayingvideogame": "Szerepjáték",
|
||||
"Simulationvideogame": "Szimulátor",
|
||||
"Sportsgame": "Sportjáték",
|
||||
"Strategyvideogame": "Stratégiai játék",
|
||||
"Sport": "Sport",
|
||||
"Americanfootball": "Amerikai futball",
|
||||
"Associationfootball": "Labdarúgás",
|
||||
"Baseball": "Baseball",
|
||||
"Basketball": "Kosárlabda",
|
||||
"Boxing": "Ökölvívás",
|
||||
"Cricket": "Krikett",
|
||||
"Golf": "Golf",
|
||||
"Icehockey": "Jégkorong",
|
||||
"Mixedmartialarts": "MMA",
|
||||
"Motorsport": "Motorsport",
|
||||
"Professionalwrestling": "Pankráció",
|
||||
"Tennis": "Tenisz",
|
||||
"Volleyball": "Röplabda",
|
||||
"Entertainment": "Szórakozás",
|
||||
"Humour": "Humor",
|
||||
"Film": "Film",
|
||||
"Performingarts": "Előadóművészet",
|
||||
"Televisionprogram": "Tévéműsor",
|
||||
"Lifestylesociology": "Életmód",
|
||||
"Fashion": "Divat",
|
||||
"Physicalfitness": "Fitnesz",
|
||||
"Food": "Gasztronómia",
|
||||
"Hobby": "Hobbi",
|
||||
"Pet": "Háziállatok",
|
||||
"Physicalattractiveness": "Szépség",
|
||||
"Technology": "Technológia",
|
||||
"Tourism": "Turizmus",
|
||||
"Vehicle": "Járművek",
|
||||
"Society": "Társadalom",
|
||||
"Business": "Üzlet",
|
||||
"Health": "Egészség",
|
||||
"Military": "Katonaság",
|
||||
"Politics": "Politika",
|
||||
"Religion": "Vallás",
|
||||
"Knowledge": "Tudás"
|
||||
},
|
||||
"region": {
|
||||
"AN": "Holland Antillák",
|
||||
"SU": "Szovjetunió",
|
||||
"XC": "Csehszlovákia",
|
||||
"XG": "Német Demokratikus Köztársaság",
|
||||
"XI": "Észak-Írország",
|
||||
"YU": "Jugoszlávia",
|
||||
"ZR": "Zaire"
|
||||
},
|
||||
"track": {
|
||||
"forced": "kényszerített",
|
||||
"sdh": "hallássérülteknek",
|
||||
"stereo": "sztereó",
|
||||
"mono": "monó",
|
||||
"audioN": "{{n}}. hangsáv",
|
||||
"subtitleN": "{{n}}. felirat"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user