diff --git a/web/public/locales/nl/audio.json b/web/public/locales/nl/audio.json
new file mode 100644
index 000000000..be357be66
--- /dev/null
+++ b/web/public/locales/nl/audio.json
@@ -0,0 +1,429 @@
+{
+ "babbling": "Brabbelen",
+ "bellow": "Brullen",
+ "laughter": "Gelach",
+ "snicker": "Grinniken",
+ "crying": "Huilen",
+ "sigh": "Zucht",
+ "singing": "Zingen",
+ "choir": "Koor",
+ "yodeling": "Jodelen",
+ "mantra": "Mantra",
+ "child_singing": "Zingend kind",
+ "rapping": "Rappen",
+ "breathing": "Ademhaling",
+ "wheeze": "Piepen",
+ "snoring": "Snurken",
+ "gasp": "Snakken naar adem",
+ "pant": "Hijgen",
+ "snort": "Snorren",
+ "sneeze": "Niezen",
+ "shuffle": "Schudden",
+ "footsteps": "Voetstappen",
+ "gargling": "Gorgelen",
+ "stomach_rumble": "Maag rommelt",
+ "burping": "Boeren",
+ "fart": "Scheet",
+ "finger_snapping": "Vingerknippen",
+ "applause": "Applaus",
+ "chatter": "Geklets",
+ "howl": "Huilkreet",
+ "bow_wow": "Woef woef",
+ "growling": "Grommen",
+ "whimper_dog": "Hondengejank",
+ "meow": "Miauw",
+ "hiss": "Sissen",
+ "livestock": "Vee",
+ "horse": "Paard",
+ "clip_clop": "Hoefslagen",
+ "neigh": "Hinniken",
+ "cattle": "Runderen",
+ "moo": "loeien",
+ "cowbell": "Koeienbel",
+ "pig": "Varkens",
+ "oink": "Knorren",
+ "bleat": "Blaten",
+ "chicken": "Kip",
+ "cluck": "Tok",
+ "turkey": "Kalkoen",
+ "quack": "Kwak",
+ "goose": "Gans",
+ "honk": "gakken",
+ "wild_animals": "Wilde dieren",
+ "roaring_cats": "Schreeuwende kat",
+ "roar": "Brul",
+ "bird": "Vogel",
+ "chirp": "Tjilpen",
+ "squawk": "Gekrijs",
+ "pigeon": "Duif",
+ "coo": "Koeren",
+ "crow": "Kraai",
+ "caw": "Kauw",
+ "owl": "Uil",
+ "hoot": "uilengeroep",
+ "flapping_wings": "Flapperende vleugels",
+ "rats": "Ratten",
+ "mouse": "Muis",
+ "patter": "Getrippel",
+ "insect": "Insect",
+ "mosquito": "Mug",
+ "buzz": "Gezoem",
+ "frog": "Kikker",
+ "croak": "Kwaken",
+ "snake": "Slang",
+ "rattle": "Ratel",
+ "music": "Muziek",
+ "plucked_string_instrument": "Snaarinstrument",
+ "guitar": "Gitaar",
+ "electric_guitar": "Elektrische gitaar",
+ "bass_guitar": "Basgitaar",
+ "acoustic_guitar": "Akoestische gitaar",
+ "steel_guitar": "Steel Guitar",
+ "tapping": "Tikken",
+ "strum": "Aanslaan",
+ "sitar": "Sitar",
+ "mandolin": "Mandoline",
+ "zither": "Citer",
+ "sniff": "Snuif",
+ "yell": "Schreeuwen",
+ "whoop": "Gejuich",
+ "chant": "Lied",
+ "whistling": "Fluiten",
+ "hands": "Handen",
+ "sheep": "Schaap",
+ "synthetic_singing": "Synthetisch zingen",
+ "run": "Ren",
+ "humming": "Zoemen",
+ "chewing": "Kauwen",
+ "bark": "Blaffen",
+ "animal": "Dier",
+ "cough": "Hoest",
+ "throat_clearing": "Keel schrapen",
+ "biting": "Bijten",
+ "heart_murmur": "Hartruis",
+ "crowd": "Menigte",
+ "pets": "Huisdieren",
+ "heartbeat": "Hartslag",
+ "children_playing": "Kinderen spelen",
+ "purr": "Spinnen",
+ "speech": "Spraak",
+ "whispering": "Fluisteren",
+ "yip": "Kef",
+ "groan": "Kreunen",
+ "fowl": "Gevogelte",
+ "grunt": "brommend",
+ "cock_a_doodle_doo": "Kukeleku",
+ "cheering": "Juichen",
+ "caterwaul": "Kattengehuil",
+ "hiccup": "Hik",
+ "clapping": "Klappen",
+ "dogs": "Honden",
+ "cat": "Kat",
+ "dog": "Hond",
+ "goat": "Geit",
+ "cricket": "Krekel",
+ "musical_instrument": "Muziek Instrument",
+ "duck": "Eend",
+ "banjo": "Banjo",
+ "gobble": "kalkoenroep",
+ "fly": "Vlieg",
+ "whale_vocalization": "Vocalisatie van walvissen",
+ "keyboard": "Klavier",
+ "piano": "Piano",
+ "ukulele": "Ukulele",
+ "electric_piano": "Elektrische piano",
+ "organ": "Orgel",
+ "sampler": "Sampler",
+ "harpsichord": "Klavecimbel",
+ "percussion": "Slagwerk",
+ "drum_kit": "Drumstel",
+ "snare_drum": "Snaartrommel",
+ "drum_roll": "Tromgeroffel",
+ "bass_drum": "Basdrum",
+ "tabla": "Tabla",
+ "cymbal": "Bekken",
+ "hi_hat": "Hi-Hat",
+ "maraca": "Sambabal",
+ "tubular_bells": "Buisklokken",
+ "mallet_percussion": "Mallet instrumenten",
+ "marimba": "Marimba",
+ "glockenspiel": "Klokkenspel",
+ "steelpan": "Steeldrum",
+ "brass_instrument": "Koperblaasinstrumenten",
+ "french_horn": "Waldhoorn",
+ "trombone": "Trombone",
+ "string_section": "Snaar sectie",
+ "wind_instrument": "Blaasinstrument",
+ "clarinet": "Klarinet",
+ "harp": "Harp",
+ "bell": "Klok",
+ "church_bell": "Kerkklok",
+ "jingle_bell": "Klingelbel",
+ "bicycle_bell": "Fietsbel",
+ "tuning_fork": "Stemvork",
+ "chime": "Bel",
+ "wind_chime": "Windgong",
+ "accordion": "Accordeon",
+ "bagpipes": "Doedelzakken",
+ "didgeridoo": "Didgeridoo",
+ "theremin": "Theremin",
+ "singing_bowl": "Klankschaal",
+ "rock_music": "Rockmuziek",
+ "rhythm_and_blues": "Rhythm-and-blues",
+ "soul_music": "Soulmuziek",
+ "reggae": "Reggae",
+ "country": "Countrymuziek",
+ "bluegrass": "Bluegrass",
+ "funk": "Funk",
+ "middle_eastern_music": "Midden-Oosterse muziek",
+ "jazz": "Jazz",
+ "cello": "Cello",
+ "swing_music": "Swingmuziek",
+ "gong": "gong",
+ "synthesizer": "Synthesizer",
+ "punk_rock": "Punkrock",
+ "wood_block": "Houten klankblok",
+ "double_bass": "Contrabas",
+ "beatboxing": "Beatbox",
+ "orchestra": "Orkest",
+ "progressive_rock": "Progressieve rock",
+ "pop_music": "Popmuziek",
+ "folk_music": "Volksmuziek",
+ "drum_machine": "Drum",
+ "pizzicato": "Pizzicato",
+ "grunge": "Grunge",
+ "heavy_metal": "Heavy Metal",
+ "timpani": "Pauken",
+ "electronic_organ": "Elektronisch orgel",
+ "trumpet": "Trompet",
+ "hip_hop_music": "Hip-Hop Muziek",
+ "hammond_organ": "Hammondorgel",
+ "drum": "Trommel",
+ "rimshot": "Rimshot",
+ "harmonica": "Mondharmonica",
+ "tambourine": "Tamboerijn",
+ "psychedelic_rock": "Psychedelische rock",
+ "vibraphone": "Vibrafoon",
+ "bowed_string_instrument": "Strijkinstrument",
+ "violin": "Viool",
+ "flute": "Fluit",
+ "saxophone": "Saxofoon",
+ "scratching": "Krabben",
+ "rock_and_roll": "Rock 'n Roll",
+ "disco": "Disco",
+ "classical_music": "Klassieke muziek",
+ "opera": "Opera",
+ "electronic_music": "Elektronische muziek",
+ "techno": "Techno",
+ "dubstep": "Dubstep",
+ "drum_and_bass": "Drum en bas",
+ "electronic_dance_music": "Elektronische dansmuziek",
+ "electronica": "Electronica",
+ "ambient_music": "Ambientmuziek",
+ "house_music": "Housemuziek",
+ "trance_music": "Trance Music",
+ "salsa_music": "Salsamuziek",
+ "flamenco": "Flamenco",
+ "blues": "Blues",
+ "music_of_bollywood": "Music of Bollywood",
+ "ska": "Ska",
+ "independent_music": "Onafhankelijke muziek",
+ "soundtrack_music": "Soundtrack",
+ "bathtub": "Bad",
+ "keys_jangling": "Sleutels rinkelen",
+ "coin": "Munt",
+ "dial_tone": "Kiestoon",
+ "busy_signal": "In-gesprektoon",
+ "buzzer": "Zoemer",
+ "foghorn": "Misthoorn",
+ "whistle": "Fluit",
+ "steam_whistle": "Stoomfluit",
+ "ratchet": "Ratel",
+ "gears": "Tandwielen",
+ "air_conditioning": "Airconditioning",
+ "single-lens_reflex_camera": "Spiegelreflexcamera",
+ "machine_gun": "Geweerschot",
+ "fusillade": "Schotenwisseling",
+ "artillery_fire": "Artillerievuur",
+ "firecracker": "Vuurwerkknaller",
+ "burst": "Knal",
+ "boom": "Boem",
+ "chop": "Hout Hakken",
+ "splinter": "Splinter",
+ "chink": "Spleet",
+ "shatter": "Stukslaan",
+ "static": "Statisch geluid",
+ "white_noise": "Witte ruis",
+ "pink_noise": "Roze ruis",
+ "television": "Televisie",
+ "radio": "Radio",
+ "field_recording": "Veldopname",
+ "music_for_children": "Muziek voor kinderen",
+ "vocal_music": "Vocal Music",
+ "a_capella": "A capella",
+ "christian_music": "Christelijke Muziek",
+ "crackle": "Gekraak",
+ "cupboard_open_or_close": "Kast open of dicht",
+ "motor_vehicle": "Motorvoertuig",
+ "police_car": "Politieauto",
+ "knock": "Klop",
+ "music_of_asia": "Muziek uit Azië",
+ "dance_music": "Dansmuziek",
+ "light_engine": "Lichte motor",
+ "frying": "Frituren",
+ "gospel_music": "Gospelmuziek",
+ "ice_cream_truck": "IJscowagen",
+ "engine_starting": "Motor starten",
+ "new-age_music": "New age (muziek)",
+ "wedding_music": "Bruiloftsmuziek",
+ "music_of_africa": "Muziek van Afrika",
+ "thunder": "Donder",
+ "waterfall": "Waterval",
+ "skidding": "Slippen",
+ "truck": "Vrachtwagen",
+ "ambulance": "Ambulance",
+ "jet_engine": "Straalmotor",
+ "lullaby": "Slaapliedje",
+ "sad_music": "Droevige muziek",
+ "video_game_music": "Videogamemuziek",
+ "angry_music": "Boze muziek",
+ "steam": "Stromend water",
+ "vehicle": "Voertuig",
+ "boat": "Boot",
+ "rowboat": "Roeiboot",
+ "emergency_vehicle": "Hulpverleningsvoertuig",
+ "slam": "Slag",
+ "chopping": "Hakken",
+ "happy_music": "Vrolijke muziek",
+ "raindrop": "Regendruppel",
+ "dental_drill's_drill": "Tandartsboor",
+ "scissors": "Schaar",
+ "shuffling_cards": "Kaarten schudden",
+ "printer": "Printer",
+ "afrobeat": "Afrobeat",
+ "traditional_music": "Traditionele muziek",
+ "gurgling": "Gorgelend",
+ "train_wheels_squealing": "Piepende treinwielen",
+ "subway": "Metro",
+ "bicycle": "Fiets",
+ "medium_engine": "Middelgrote motor",
+ "squeak": "Piep",
+ "dishes": "Borden",
+ "zipper": "Rits",
+ "tick-tock": "Ticktack",
+ "race_car": "Raceauto",
+ "railroad_car": "Spoorwagon",
+ "music_of_latin_america": "Muziek uit Latijns-Amerika",
+ "carnatic_music": "Carnatische muziek",
+ "helicopter": "Helikopter",
+ "chainsaw": "Kettingzaag",
+ "ding-dong": "Ding-Dong",
+ "sink": "Wasbak",
+ "wind_noise": "Windgeruis",
+ "wind": "Wind",
+ "sailboat": "Zeilboot",
+ "song": "Liedje",
+ "toot": "Toeteren",
+ "bus": "Bus",
+ "traffic_noise": "Verkeerslawaai",
+ "train_horn": "Treinhoorn",
+ "thunderstorm": "Onweer",
+ "typewriter": "Typemachine",
+ "background_music": "Achtergrondmuziek",
+ "car": "Auto",
+ "ringtone": "Beltoon",
+ "theme_music": "Themamuziek",
+ "sliding_door": "Schuifdeur",
+ "jingle": "Jingle",
+ "waves": "Golven",
+ "stream": "Stromend water",
+ "sewing_machine": "Naaimachine",
+ "mechanical_fan": "Mechanische ventilator",
+ "camera": "Camera",
+ "cap_gun": "Speelgoedpistool",
+ "tender_music": "Tedere muziek",
+ "ship": "Schip",
+ "explosion": "Explosie",
+ "christmas_music": "Kerstmuziek",
+ "microwave_oven": "Magnetron",
+ "toilet_flush": "Toilet doorspoelen",
+ "exciting_music": "Spannende muziek",
+ "scary_music": "Enge muziek",
+ "rustling_leaves": "Ritselende bladeren",
+ "tire_squeal": "Piepende banden",
+ "fire_engine": "Brandweerwagen",
+ "water_tap": "Waterkraan",
+ "water": "Water",
+ "rain": "Regen",
+ "motorcycle": "Motorfiets",
+ "aircraft_engine": "Vliegtuigmotor",
+ "rain_on_surface": "Regen op een oppervlakte",
+ "motorboat": "Motorboot",
+ "car_passing_by": "Passerende auto",
+ "reversing_beeps": "Achteruitrijsignalen",
+ "train": "Trein",
+ "doorbell": "Deurbel",
+ "drawer_open_or_close": "Lade open of dicht",
+ "fire": "Vuur",
+ "power_windows": "Elektrische ramen",
+ "train_whistle": "Treinfluitje",
+ "fixed-wing_aircraft": "Vliegtuig met vaste vleugels",
+ "engine_knocking": "Motorklopgeluid",
+ "ocean": "Oceaan",
+ "rail_transport": "Spoorvervoer",
+ "aircraft": "Vliegtuigen",
+ "car_alarm": "Autoalarm",
+ "idling": "Stationair",
+ "door": "Deur",
+ "air_brake": "Luchtrem",
+ "propeller": "Propeller",
+ "air_horn": "Luchthoorn",
+ "skateboard": "Skateboard",
+ "engine": "Motor",
+ "accelerating": "Versnellen",
+ "blender": "Blender",
+ "gunshot": "Schot",
+ "lawn_mower": "Grasmaaier",
+ "heavy_engine": "Zware motor",
+ "tap": "Tik op",
+ "hair_dryer": "Föhn",
+ "cash_register": "Kassa",
+ "cutlery": "Bestek",
+ "power_tool": "Elektrisch gereedschap",
+ "computer_keyboard": "Computertoetsenbord",
+ "vacuum_cleaner": "Stofzuiger",
+ "tick": "Teek",
+ "alarm": "Alarm",
+ "toothbrush": "Tandenborstel",
+ "electric_shaver": "Scheerapparaat",
+ "writing": "Schrijven",
+ "telephone": "Telefoon",
+ "jackhammer": "Drilboor",
+ "alarm_clock": "Wekker",
+ "civil_defense_siren": "Luchtalarm",
+ "typing": "Typen",
+ "pulleys": "Katrollen",
+ "drill": "Boor",
+ "telephone_dialing": "Telefoonnummer draaien",
+ "telephone_bell_ringing": "Rinkelen van de telefoon",
+ "electric_toothbrush": "Elektrische tandenborstel",
+ "hammer": "Hamer",
+ "sanding": "Schuren",
+ "siren": "Sirene",
+ "smoke_detector": "Rookmelder",
+ "fire_alarm": "Brandalarm",
+ "mechanisms": "Mechanismen",
+ "filing": "Vijlen",
+ "clock": "Klok",
+ "glass": "Glas",
+ "sawing": "Zagen",
+ "tools": "Hulpmiddelen",
+ "wood": "Hout",
+ "fireworks": "Vuurwerk",
+ "eruption": "Uitbarsting",
+ "crack": "Scheur",
+ "environmental_noise": "Omgevingsgeluid",
+ "silence": "Stilte",
+ "sound_effect": "Geluidseffect",
+ "scream": "Schreeuw"
+}
diff --git a/web/public/locales/nl/common.json b/web/public/locales/nl/common.json
new file mode 100644
index 000000000..a40eaff8f
--- /dev/null
+++ b/web/public/locales/nl/common.json
@@ -0,0 +1,203 @@
+{
+ "time": {
+ "untilForTime": "Totdat {{time}}",
+ "untilForRestart": "Totdat Frigate herstart.",
+ "untilRestart": "Tot herstart",
+ "12hours": "12 uur",
+ "lastWeek": "Vorige week",
+ "last7": "Laatste 7 dagen",
+ "last30": "Laatste 30 dagen",
+ "yr": "{{time}} jaar",
+ "5minutes": "5 minuten",
+ "10minutes": "10 minuten",
+ "24hours": "24 uur",
+ "30minutes": "30 minuten",
+ "ago": "{{timeAgo}} geleden",
+ "justNow": "Zo juist",
+ "today": "Vandaag",
+ "yesterday": "Gisteren",
+ "last14": "Laatste 14 dagen",
+ "thisWeek": "Deze week",
+ "thisMonth": "Deze maand",
+ "lastMonth": "Vorige maand",
+ "1hour": "1 uur",
+ "pm": "pm",
+ "am": "am",
+ "year": "{{time}} Jaren",
+ "mo": "{{time}}maand",
+ "month": "{{time}} maanden",
+ "formattedTimestamp2": {
+ "12hour": "%d-%m %H:%M:%S",
+ "24hour": "%d %b %H:%M:%S"
+ },
+ "s": "{{time}}seconde",
+ "formattedTimestamp": {
+ "12hour": "%d %b %H:%M:%S",
+ "24hour": "%-d %b, %H:%M:%S"
+ },
+ "formattedTimestampOnlyMonthAndDay": "%-d %b",
+ "d": "{{time}}dag",
+ "day": "{{time}} dagen",
+ "h": "{{time}}uur",
+ "hour": "{{time}} uren",
+ "m": "{{time}}minuut",
+ "formattedTimestampWithYear": {
+ "12hour": "%-d %b %Y, %H:%M",
+ "24hour": "%-d %b %Y, %H:%M"
+ },
+ "formattedTimestampExcludeSeconds": {
+ "24hour": "%-d %b, %H:%M",
+ "12hour": "%-d %b, %H:%M"
+ },
+ "minute": "{{time}} minuten",
+ "second": "{{time}} seconden"
+ },
+ "button": {
+ "enabled": "Ingeschakeld",
+ "back": "Terug",
+ "apply": "Toepassen",
+ "reset": "Opnieuw instellen",
+ "enable": "Inschakelen",
+ "disabled": "Uitgeschakeld",
+ "cancel": "Annuleren",
+ "close": "Sluiten",
+ "copy": "Kopieer",
+ "done": "Klaar",
+ "saving": "Opslaan...",
+ "disable": "Uitschakelen",
+ "save": "Opslaan",
+ "history": "Geschiedenis",
+ "fullscreen": "Volledig scherm",
+ "pictureInPicture": "Foto in foto",
+ "twoWayTalk": "Tweerichtingsgesprek",
+ "cameraAudio": "Camera geluid",
+ "on": "aan",
+ "copyCoordinates": "Coördinaten kopiëren",
+ "delete": "Verwijder",
+ "yes": "Ja",
+ "no": "Nee",
+ "suspended": "Opgeschort",
+ "unsuspended": "Heractiveren",
+ "export": "Exporteren",
+ "exitFullscreen": "Verlaat volledig scherm",
+ "play": "Speel",
+ "off": "uit",
+ "info": "Info",
+ "edit": "Bewerken",
+ "download": "Download",
+ "unselect": "Deselecteren",
+ "next": "Volgende",
+ "deleteNow": "Nu verwijderen"
+ },
+ "unit": {
+ "speed": {
+ "mph": "mph",
+ "kph": "km/u"
+ }
+ },
+ "label": {
+ "back": "Ga terug"
+ },
+ "menu": {
+ "system": "Systeem",
+ "systemMetrics": "Systeemstatistieken",
+ "settings": "Instellingen",
+ "configuration": "Configuratie",
+ "systemLogs": "Systeem logboeken",
+ "configurationEditor": "Configuratie bewerker",
+ "languages": "Talen",
+ "language": {
+ "en": "Engels",
+ "zhCN": "简体中文 (Vereenvoudigd Chinees)",
+ "withSystem": {
+ "label": "Gebruik de systeeminstellingen voor de taal"
+ }
+ },
+ "darkMode": {
+ "label": "Donkere modus",
+ "light": "Licht",
+ "dark": "Donker",
+ "withSystem": {
+ "label": "Gebruik de systeeminstellingen voor de lichte of donkere modus"
+ }
+ },
+ "appearance": "Verschijning",
+ "theme": {
+ "blue": "Blauw",
+ "contrast": "Hoog contrast",
+ "label": "Thema",
+ "green": "Groen",
+ "nord": "Noord",
+ "red": "Rood",
+ "default": "Standaard"
+ },
+ "withSystem": "Systeem",
+ "help": "Help",
+ "live": {
+ "title": "Live",
+ "allCameras": "Alle Camera's",
+ "cameras": {
+ "title": "Camera's",
+ "count_one": "{{count}} Camera",
+ "count_other": "{{count}} Camera's"
+ }
+ },
+ "restart": "Herstart Frigate",
+ "documentation": {
+ "title": "Documentatie",
+ "label": "Frigate documentatie"
+ },
+ "review": "Beoordeling",
+ "explore": "Verkennen",
+ "export": "Exporteren",
+ "uiPlayground": "Testgebied voor gebruikersinterface",
+ "faceLibrary": "Gezichtenbibliotheek",
+ "user": {
+ "title": "Gebruik",
+ "current": "Huidige gebruiker: {{user}}",
+ "logout": "Uitloggen",
+ "setPassword": "Wachtwoord instellen",
+ "account": "Account",
+ "anonymous": "anoniem"
+ }
+ },
+ "toast": {
+ "copyUrlToClipboard": "URL naar klembord gekopieerd.",
+ "save": {
+ "title": "Opslaan",
+ "error": {
+ "title": "Opslaan van configuratiewijzigingen mislukt: {{errorMessage}}",
+ "noMessage": "Het opslaan van configuratiewijzigingen is mislukt"
+ }
+ }
+ },
+ "role": {
+ "title": "Rol",
+ "admin": "Beheerder",
+ "viewer": "Waarnemer",
+ "desc": "Beheerders hebben volledige toegang tot alle functies in de Frigate-interface. Kijkers kunnen alleen camera’s bekijken, items beoordelen en historische beelden terugkijken."
+ },
+ "pagination": {
+ "previous": {
+ "title": "Vorig",
+ "label": "Ga naar de vorige pagina"
+ },
+ "more": "Meer pagina's",
+ "label": "Paginering",
+ "next": {
+ "title": "Volgende",
+ "label": "Ga naar volgende pagina"
+ }
+ },
+ "accessDenied": {
+ "documentTitle": "Toegang geweigerd - Frigate",
+ "desc": "Je hebt geen toestemming om deze pagina te bekijken.",
+ "title": "Toegang geweigerd"
+ },
+ "notFound": {
+ "desc": "Pagina niet gevonden",
+ "title": "404",
+ "documentTitle": "Niet gevonden - Frigate"
+ },
+ "selectItem": "Selecteer {{item}}"
+}
diff --git a/web/public/locales/nl/components/auth.json b/web/public/locales/nl/components/auth.json
new file mode 100644
index 000000000..f7cd53b03
--- /dev/null
+++ b/web/public/locales/nl/components/auth.json
@@ -0,0 +1,15 @@
+{
+ "form": {
+ "password": "Wachtwoord",
+ "login": "Inloggen",
+ "errors": {
+ "rateLimit": "Limiet overschreden. Probeer het later opnieuw.",
+ "loginFailed": "Inloggen mislukt",
+ "usernameRequired": "Gebruikersnaam is vereist",
+ "passwordRequired": "Wachtwoord is vereist",
+ "unknownError": "Onbekende fout. Bekijk de logs.",
+ "webUnknownError": "Onbekende fout. Controleer consolelogboeken."
+ },
+ "user": "Gebruikersnaam"
+ }
+}
diff --git a/web/public/locales/nl/components/camera.json b/web/public/locales/nl/components/camera.json
new file mode 100644
index 000000000..cb705d307
--- /dev/null
+++ b/web/public/locales/nl/components/camera.json
@@ -0,0 +1,83 @@
+{
+ "group": {
+ "label": "Cameragroepen",
+ "add": "Cameragroep toevoegen",
+ "edit": "Cameragroep bewerken",
+ "delete": {
+ "label": "Cameragroep verwijderen",
+ "confirm": {
+ "title": "Bevestig Verwijderen",
+ "desc": "Weet u zeker dat u de cameragroep {{name}} wilt verwijderen?"
+ }
+ },
+ "name": {
+ "label": "Naam",
+ "placeholder": "Voer een naam in...",
+ "errorMessage": {
+ "exists": "De cameragroepnaam bestaat al.",
+ "invalid": "Ongeldige cameragroepnaam.",
+ "nameMustNotPeriod": "De naam van de cameragroep mag geen punt bevatten.",
+ "mustLeastCharacters": "De naam van de cameragroep moet minimaal 2 tekens lang zijn."
+ }
+ },
+ "cameras": {
+ "desc": "Selecteer camera's voor deze groep.",
+ "label": "Camera's"
+ },
+ "success": "Cameragroep ({{name}}) is opgeslagen.",
+ "camera": {
+ "setting": {
+ "audioIsAvailable": "Audio is beschikbaar voor deze stream",
+ "audioIsUnavailable": "Audio is niet beschikbaar voor deze stream",
+ "audio": {
+ "tips": {
+ "document": "Lees de documentatie ",
+ "title": "Audio moet worden uitgevoerd vanaf je camera en geconfigureerd in go2rtc voor deze stream."
+ }
+ },
+ "streamMethod": {
+ "method": {
+ "smartStreaming": {
+ "label": "Slim streamen (aanbevolen)",
+ "desc": "Slimme streaming werkt het camerabeeld één keer per minuut bij wanneer er geen detecteerbare activiteit is, om bandbreedte en systeembronnen te besparen. Zodra er activiteit wordt gedetecteerd, schakelt het beeld automatisch over naar een live stream."
+ },
+ "continuousStreaming": {
+ "label": "Continue streaming",
+ "desc": {
+ "title": "Het camerabeeld is altijd een live stream wanneer het zichtbaar is op het dashboard, zelfs als er geen activiteit wordt gedetecteerd.",
+ "warning": "Continue streaming kan leiden tot hoog bandbreedtegebruik en prestatieproblemen. Gebruik met voorzichtigheid."
+ }
+ },
+ "noStreaming": {
+ "label": "Geen streaming",
+ "desc": "Camerabeelden worden slechts één keer per minuut bijgewerkt en er vindt geen livestreaming plaats."
+ }
+ },
+ "label": "Streamingmethode"
+ },
+ "compatibilityMode": {
+ "desc": "Schakel deze optie alleen in als de live stream van je camera kleurvervormingen toont en een diagonale lijn aan de rechterkant van het beeld heeft.",
+ "label": "Compatibiliteitsmodus"
+ },
+ "desc": "Wijzig de live streaming-opties voor het dashboard van deze cameragroep.Deze instellingen zijn specifiek voor het apparaat en de browser.",
+ "label": "Camera streaming-instellingen",
+ "title": "{{cameraName}} Streaming-instellingen"
+ }
+ },
+ "icon": "Icon"
+ },
+ "debug": {
+ "options": {
+ "label": "Instellingen",
+ "title": "Opties",
+ "showOptions": "Opties weergeven",
+ "hideOptions": "Opties verbergen"
+ },
+ "mask": "Masker",
+ "motion": "Beweging",
+ "zones": "Zones",
+ "boundingBox": "Objectkader",
+ "timestamp": "Tijdstempel",
+ "regions": "Regio's"
+ }
+}
diff --git a/web/public/locales/nl/components/dialog.json b/web/public/locales/nl/components/dialog.json
new file mode 100644
index 000000000..ef8a2a939
--- /dev/null
+++ b/web/public/locales/nl/components/dialog.json
@@ -0,0 +1,113 @@
+{
+ "restart": {
+ "title": "Weet je zeker dat je Frigate opnieuw wilt opstarten?",
+ "button": "Herstart",
+ "restarting": {
+ "title": "Frigate herstart",
+ "button": "Forceer herladen nu",
+ "content": "Deze pagina zal herladen in {{countdown}} seconden."
+ }
+ },
+ "explore": {
+ "plus": {
+ "submitToPlus": {
+ "label": "Verzenden naar Frigate+",
+ "desc": "Objecten op locaties die je wilt vermijden, zijn geen valspositieven. Als je ze als valspositieven indient, brengt dit het model in verwarring."
+ },
+ "review": {
+ "true": {
+ "true_one": "Dit is een {{label}}",
+ "true_other": "Dit zijn {{label}}",
+ "label": "Bevestig dit label voor Frigate Plus"
+ },
+ "false": {
+ "false_one": "Dit is geen {{label}}",
+ "false_other": "Dit zijn geen {{label}}",
+ "label": "Bevestig dit label niet voor Frigate Plus"
+ },
+ "state": {
+ "submitted": "Ingediend"
+ }
+ }
+ },
+ "video": {
+ "viewInHistory": "Bekijk in Geschiedenis"
+ }
+ },
+ "export": {
+ "time": {
+ "fromTimeline": "Selecteer uit tijdlijn",
+ "end": {
+ "label": "Selecteer eindtijd",
+ "title": "Eindtijd"
+ },
+ "lastHour_one": "Afgelopen uur",
+ "lastHour_other": "Afgelopen {{count}} uren",
+ "custom": "Aangepast",
+ "start": {
+ "title": "Starttijd",
+ "label": "Selecteer starttijd"
+ }
+ },
+ "name": {
+ "placeholder": "Geef de export een naam"
+ },
+ "select": "Selecteer",
+ "toast": {
+ "error": {
+ "failed": "Exporteren is mislukt: {{error}}",
+ "noVaildTimeSelected": "Geen geldig tijdsbereik geselecteerd",
+ "endTimeMustAfterStartTime": "Eindtijd moet na starttijd zijn"
+ },
+ "success": "Export is succesvol gestart. Bekijk het bestand in de map /exports."
+ },
+ "fromTimeline": {
+ "saveExport": "Export opslaan",
+ "previewExport": "Export vooraf bekijken"
+ },
+ "export": "Exporteren",
+ "selectOrExport": "Selecteren of exporteren"
+ },
+ "streaming": {
+ "label": "Stream",
+ "restreaming": {
+ "desc": {
+ "title": "Stel go2rtc in voor extra liveweergaveopties en audio voor deze camera.",
+ "readTheDocumentation": "Lees de documentatie "
+ },
+ "disabled": "Herstreamen is niet ingeschakeld voor deze camera."
+ },
+ "showStats": {
+ "label": "Streamstatistieken tonen",
+ "desc": "Schakel deze optie in om streamstatistieken als overlay op de camerafeed weer te geven."
+ },
+ "debugView": "Debugweergave"
+ },
+ "search": {
+ "saveSearch": {
+ "label": "Zoekopdracht opslaan",
+ "desc": "Geef een naam op voor deze opgeslagen zoekopdracht.",
+ "success": "Zoekopdracht ({{searchName}}) is opgeslagen.",
+ "button": {
+ "save": {
+ "label": "Bewaar deze zoekopdracht"
+ }
+ },
+ "overwrite": "{{searchName}} bestaat al. Opslaan overschrijft de bestaande waarde.",
+ "placeholder": "Voer een naam in voor uw zoekopdracht"
+ }
+ },
+ "recording": {
+ "button": {
+ "deleteNow": "Nu verwijderen",
+ "export": "Exporteren",
+ "markAsReviewed": "Markeren als beoordeeld"
+ },
+ "confirmDelete": {
+ "desc": {
+ "selected": "Weet u zeker dat u alle opgenomen videobeelden wilt verwijderen die aan dit beoordelingsitem zijn gekoppeld?
Houd de Shift-toets ingedrukt om dit dialoogvenster in de toekomst over te slaan."
+ },
+ "title": "Bevestig Verwijderen"
+ }
+ }
+}
diff --git a/web/public/locales/nl/components/filter.json b/web/public/locales/nl/components/filter.json
new file mode 100644
index 000000000..13096bd7e
--- /dev/null
+++ b/web/public/locales/nl/components/filter.json
@@ -0,0 +1,124 @@
+{
+ "labels": {
+ "count": "{{count}} Labels",
+ "all": {
+ "short": "Labels",
+ "title": "Alle labels"
+ },
+ "label": "Labels"
+ },
+ "zones": {
+ "label": "Zones",
+ "all": {
+ "title": "Alle zones",
+ "short": "Zones"
+ }
+ },
+ "dates": {
+ "all": {
+ "title": "Alle datums",
+ "short": "Datums"
+ }
+ },
+ "features": {
+ "hasVideoClip": "Heeft een videoclip",
+ "label": "Functies",
+ "hasSnapshot": "Heeft een snapshot",
+ "submittedToFrigatePlus": {
+ "label": "Ingediend bij Frigate+",
+ "tips": "Je moet eerst filteren op gevolgde objecten met een snapshot.
Gevolgde objecten zonder snapshot kunnen niet worden verzonden naar Frigate+."
+ }
+ },
+ "review": {
+ "showReviewed": "Toon beoordeelden"
+ },
+ "motion": {
+ "showMotionOnly": "Alleen bewegingen weergeven"
+ },
+ "explore": {
+ "settings": {
+ "title": "Instellingen",
+ "defaultView": {
+ "title": "Standaardweergave",
+ "unfilteredGrid": "Ongefilterd overzicht",
+ "summary": "Samenvatting",
+ "desc": "Wanneer er geen filters zijn geselecteerd, wordt er een samenvatting van de meest recent gevolgde objecten per label weergegeven, of wordt er een ongefilterd overzicht weergegeven."
+ },
+ "gridColumns": {
+ "title": "Overzichtskolommen",
+ "desc": "Selecteer het aantal kolommen in het overzicht."
+ },
+ "searchSource": {
+ "options": {
+ "description": "Beschrijving",
+ "thumbnailImage": "Thumbnail afbeelding"
+ },
+ "desc": "Kies of u wilt zoeken in de thumbnails of beschrijvingen van de objecten die u volgt.",
+ "label": "Zoekbron"
+ }
+ },
+ "date": {
+ "selectDateBy": {
+ "label": "Selecteer een datum om op te filteren"
+ }
+ }
+ },
+ "zoneMask": {
+ "filterBy": "Filteren op zonemasker"
+ },
+ "recognizedLicensePlates": {
+ "loadFailed": "Het laden van herkende kentekenplaten is mislukt.",
+ "placeholder": "Type om kentekens te zoeken...",
+ "title": "Erkende kentekenplaten",
+ "noLicensePlatesFound": "Geen kentekenplaten gevonden.",
+ "selectPlatesFromList": "Selecteer een of meer platen uit de lijst.",
+ "loading": "Herkende kentekenplaten laden..."
+ },
+ "score": "Score",
+ "sort": {
+ "scoreAsc": "Objectscore (oplopend)",
+ "dateAsc": "Datum (oplopend)",
+ "speedAsc": "Geschatte snelheid (oplopend)",
+ "label": "Sorteer",
+ "relevance": "Relevantie",
+ "dateDesc": "Datum (aflopend)",
+ "scoreDesc": "Objectscore (aflopend)",
+ "speedDesc": "Geschatte snelheid (aflopend)"
+ },
+ "cameras": {
+ "all": {
+ "title": "Alle camera's",
+ "short": "Camera's"
+ },
+ "label": "Camerafilter"
+ },
+ "subLabels": {
+ "label": "Sublabels",
+ "all": "Alle sublabels"
+ },
+ "logSettings": {
+ "loading": {
+ "title": "Bezig met laden",
+ "desc": "Wanneer u het logvenster naar beneden scrolt, worden nieuwe logs automatisch weergegeven terwijl ze worden toegevoegd."
+ },
+ "disableLogStreaming": "Logstreaming uitschakelen",
+ "allLogs": "Alle logs",
+ "label": "Filterlogniveau",
+ "filterBySeverity": "Filter logs op ernst"
+ },
+ "filter": "Filter",
+ "timeRange": "Tijdsbereik",
+ "trackedObjectDelete": {
+ "toast": {
+ "success": "Gevolgde objecten succesvol verwijderd.",
+ "error": "Het verwijderen van gevolgde objecten is mislukt: {{errorMessage}}"
+ },
+ "title": "Bevestig Verwijderen",
+ "desc": "Het verwijderen van deze {{objectLength}} gevolgde objecten verwijdert de snapshot, eventuele opgeslagen embeddings en bijbehorende levenscyclusgegevens van het object. Opgenomen videobeelden van deze objecten in de geschiedenisweergave worden NIET verwijderd.
Weet je zeker dat je wilt doorgaan?
Houd de Shift-toets ingedrukt om deze melding in de toekomst over te slaan."
+ },
+ "reset": {
+ "label": "Filters resetten naar standaardwaarden"
+ },
+ "more": "Meer filters",
+ "estimatedSpeed": "Geschatte snelheid ({{unit}})"
+}
diff --git a/web/public/locales/nl/components/icons.json b/web/public/locales/nl/components/icons.json
new file mode 100644
index 000000000..a9a221891
--- /dev/null
+++ b/web/public/locales/nl/components/icons.json
@@ -0,0 +1,8 @@
+{
+ "iconPicker": {
+ "selectIcon": "Selecteer een pictogram",
+ "search": {
+ "placeholder": "Zoek naar een pictogram..."
+ }
+ }
+}
diff --git a/web/public/locales/nl/components/input.json b/web/public/locales/nl/components/input.json
new file mode 100644
index 000000000..e06544db4
--- /dev/null
+++ b/web/public/locales/nl/components/input.json
@@ -0,0 +1,10 @@
+{
+ "button": {
+ "downloadVideo": {
+ "label": "Video downloaden",
+ "toast": {
+ "success": "Het downloaden van uw beoordelingsvideo is gestart."
+ }
+ }
+ }
+}
diff --git a/web/public/locales/nl/components/player.json b/web/public/locales/nl/components/player.json
new file mode 100644
index 000000000..459549ba9
--- /dev/null
+++ b/web/public/locales/nl/components/player.json
@@ -0,0 +1,51 @@
+{
+ "noRecordingsFoundForThisTime": "Geen opnames gevonden voor deze tijd",
+ "stats": {
+ "latency": {
+ "value": "{{seconds}} seconden",
+ "short": {
+ "title": "Latentie",
+ "value": "{{seconds}} s"
+ },
+ "title": "Latentie:"
+ },
+ "totalFrames": "Totaal aantal frames:",
+ "droppedFrames": {
+ "title": "Overgeslagen frames:",
+ "short": {
+ "value": "{{droppedFrames}} frames",
+ "title": "Overgeslagen"
+ }
+ },
+ "droppedFrameRate": "Frequentie van overgeslagen frames:",
+ "bandwidth": {
+ "short": "Bandbreedte",
+ "title": "Bandbreedte:"
+ },
+ "streamType": {
+ "short": "Type",
+ "title": "Stream Type:"
+ },
+ "decodedFrames": "Gedecodeerde frames:"
+ },
+ "submitFrigatePlus": {
+ "title": "Dit frame indienen bij Frigate+?",
+ "submit": "Indienen"
+ },
+ "streamOffline": {
+ "title": "Stream is Offline",
+ "desc": "Er zijn geen frames ontvangen in de detect
-stream van {{cameraName}}, controleer de error logs"
+ },
+ "noPreviewFound": "Geen voorbeeld gevonden",
+ "noPreviewFoundFor": "Geen voorbeeld gevonden voor {{cameraName}}",
+ "livePlayerRequiredIOSVersion": "Voor dit type livestream is iOS 17.1 of hoger vereist.",
+ "cameraDisabled": "Camera is uitgeschakeld",
+ "toast": {
+ "success": {
+ "submittedFrigatePlus": "Frame succesvol ingediend bij Frigate+"
+ },
+ "error": {
+ "submitFrigatePlusFailed": "Het is niet gelukt om een frame naar Frigate+ te sturen"
+ }
+ }
+}
diff --git a/web/public/locales/nl/objects.json b/web/public/locales/nl/objects.json
new file mode 100644
index 000000000..7976e7dee
--- /dev/null
+++ b/web/public/locales/nl/objects.json
@@ -0,0 +1,120 @@
+{
+ "cat": "Kat",
+ "horse": "Paard",
+ "bird": "Vogel",
+ "bark": "Blaffen",
+ "goat": "Geit",
+ "sheep": "Schaap",
+ "animal": "Dier",
+ "mouse": "Muis",
+ "dog": "Hond",
+ "keyboard": "Klavier",
+ "person": "Persoon",
+ "airplane": "Vliegtuig",
+ "traffic_light": "Verkeerslicht",
+ "street_sign": "Verkeersbord",
+ "stop_sign": "Stopbord",
+ "parking_meter": "Parkeer Meter",
+ "bench": "Bankje",
+ "cow": "Koe",
+ "giraffe": "Giraffe",
+ "hat": "Hoed",
+ "backpack": "Rugzak",
+ "shoe": "Schoen",
+ "baseball_bat": "Honkbalknuppel",
+ "baseball_glove": "Honkbalhandschoen",
+ "tennis_racket": "Tennis Racket",
+ "bottle": "Fles",
+ "plate": "Bord",
+ "fork": "Vork",
+ "spoon": "Lepel",
+ "bowl": "Schaal",
+ "sandwich": "Sandwich",
+ "broccoli": "Broccoli",
+ "hot_dog": "Hot Dog",
+ "cake": "Taart",
+ "chair": "Stoel",
+ "potted_plant": "Potplant",
+ "bed": "Bed",
+ "mirror": "Spiegel",
+ "laptop": "Laptop",
+ "cell_phone": "Mobiele telefoon",
+ "oven": "Oven",
+ "toaster": "Broodrooster",
+ "refrigerator": "Koelkast",
+ "book": "Boek",
+ "clock": "Klok",
+ "vase": "Vaas",
+ "toothbrush": "Tandenborstel",
+ "teddy_bear": "Teddybeer",
+ "vehicle": "Voertuig",
+ "squirrel": "Eekhoorn",
+ "deer": "Hert",
+ "fox": "Vos",
+ "rabbit": "Konijn",
+ "raccoon": "Wasbeer",
+ "waste_bin": "Afvalbak",
+ "on_demand": "Op aanvraag",
+ "ups": "UPS",
+ "nzpost": "NZPost",
+ "postnord": "PostNord",
+ "gls": "GLS",
+ "dpd": "DPD",
+ "skateboard": "Skateboard",
+ "boat": "Boot",
+ "scissors": "Schaar",
+ "bicycle": "Fiets",
+ "sink": "Wasbak",
+ "bus": "Bus",
+ "car": "Auto",
+ "motorcycle": "Motorfiets",
+ "train": "Trein",
+ "door": "Deur",
+ "blender": "Blender",
+ "hair_dryer": "Föhn",
+ "banana": "Banaan",
+ "umbrella": "Paraplu",
+ "suitcase": "Koffer",
+ "license_plate": "Kentekenplaat",
+ "orange": "Oranje",
+ "postnl": "PostNL",
+ "snowboard": "Snowboard",
+ "sports_ball": "Bal",
+ "donut": "Donut",
+ "couch": "Bank",
+ "package": "Pakket",
+ "dining_table": "Etenstafel",
+ "microwave": "Magnetron",
+ "toilet": "Toilet",
+ "cup": "Beker",
+ "carrot": "Wortel",
+ "eye_glasses": "Brillen",
+ "bear": "Beer",
+ "zebra": "Zebra",
+ "handbag": "Handtas",
+ "surfboard": "Surfplank",
+ "wine_glass": "Wijnglas",
+ "hair_brush": "Haarborstel",
+ "fire_hydrant": "Brandkraan",
+ "elephant": "Olifant",
+ "remote": "Op afstand",
+ "tie": "Stropdas",
+ "kite": "Vlieger",
+ "frisbee": "Frisbee",
+ "skis": "Ski's",
+ "desk": "Bureau",
+ "knife": "Mes",
+ "apple": "Appel",
+ "pizza": "Pizza",
+ "window": "Raam",
+ "fedex": "FedEx",
+ "tv": "TV",
+ "robot_lawnmower": "Robot grasmaaier",
+ "usps": "USPS",
+ "dhl": "DHL",
+ "bbq_grill": "BBQ-grill",
+ "amazon": "Amazon",
+ "face": "Gezicht",
+ "an_post": "An Post",
+ "purolator": "Purolator"
+}
diff --git a/web/public/locales/nl/views/configEditor.json b/web/public/locales/nl/views/configEditor.json
new file mode 100644
index 000000000..ccc3c77de
--- /dev/null
+++ b/web/public/locales/nl/views/configEditor.json
@@ -0,0 +1,15 @@
+{
+ "documentTitle": "Configuratie-editor - Frigate",
+ "copyConfig": "Configuratie kopiëren",
+ "saveAndRestart": "Opslaan en opnieuw opstarten",
+ "toast": {
+ "error": {
+ "savingError": "Fout bij het opslaan van de configuratie"
+ },
+ "success": {
+ "copyToClipboard": "Configuratie gekopieerd naar klembord."
+ }
+ },
+ "configEditor": "Configuratie-editor",
+ "saveOnly": "Alleen opslaan"
+}
diff --git a/web/public/locales/nl/views/events.json b/web/public/locales/nl/views/events.json
new file mode 100644
index 000000000..a2b9cd935
--- /dev/null
+++ b/web/public/locales/nl/views/events.json
@@ -0,0 +1,35 @@
+{
+ "documentTitle": "Beoordelen - Frigate",
+ "camera": "Camera",
+ "newReviewItems": {
+ "button": "Nieuwe items om te beoordelen",
+ "label": "Bekijk nieuwe beoordelingsitems"
+ },
+ "timeline.aria": "Selecteer tijdlijn",
+ "recordings": {
+ "documentTitle": "Opnamen - Frigate"
+ },
+ "timeline": "Tijdlijn",
+ "empty": {
+ "alert": "Er zijn geen mededelingen om te beoordelen",
+ "detection": "Er zijn geen detecties om te beoordelen",
+ "motion": "Geen bewegingsgegevens gevonden"
+ },
+ "events": {
+ "aria": "Selecteer evenementen",
+ "noFoundForTimePeriod": "Er zijn geen evenementen gevonden voor deze periode.",
+ "label": "Evenementen"
+ },
+ "calendarFilter": {
+ "last24Hours": "Laatste 24 uur"
+ },
+ "alerts": "Mededelingen",
+ "motion": {
+ "label": "Beweging",
+ "only": "Alleen beweging"
+ },
+ "allCameras": "Alle camera's",
+ "markAsReviewed": "Markeren als beoordeeld",
+ "detections": "Detecties",
+ "markTheseItemsAsReviewed": "Markeer deze items als beoordeling"
+}
diff --git a/web/public/locales/nl/views/explore.json b/web/public/locales/nl/views/explore.json
new file mode 100644
index 000000000..3ff3a569b
--- /dev/null
+++ b/web/public/locales/nl/views/explore.json
@@ -0,0 +1,183 @@
+{
+ "generativeAI": "Generatieve AI",
+ "exploreIsUnavailable": {
+ "embeddingsReindexing": {
+ "finishingShortly": "Bijna klaar",
+ "step": {
+ "trackedObjectsProcessed": "Gevolgde objecten verwerkt: ",
+ "descriptionsEmbedded": "Beschrijving ingesloten: ",
+ "thumbnailsEmbedded": "Thumbnails ingesloten: "
+ },
+ "context": "Verkennen kan worden gebruikt nadat de embeddings van gevolgde objecten opnieuw zijn geïndexeerd.",
+ "estimatedTime": "Geschatte resterende tijd:",
+ "startingUp": "Opstarten..."
+ },
+ "downloadingModels": {
+ "setup": {
+ "textTokenizer": "Teksttokenizer",
+ "visionModel": "Visiemodel",
+ "visionModelFeatureExtractor": "kenmerkextractie van een visiemodel",
+ "textModel": "Tekstmodel"
+ },
+ "error": "Er is iets misgegaan. Raadpleeg de Frigate-logs.",
+ "context": "Frigate downloadt de vereiste inbedmodellen om de functie Semantisch zoeken te ondersteunen. Dit kan enkele minuten duren, afhankelijk van de snelheid van je netwerkverbinding.",
+ "tips": {
+ "context": "Je wilt misschien de embeddings van je gevolgde objecten opnieuw indexeren zodra de modellen zijn gedownload.",
+ "documentation": "Lees de documentatie"
+ }
+ },
+ "title": "Explore is niet beschikbaar"
+ },
+ "trackedObjectDetails": "Details getraceerd object",
+ "type": {
+ "details": "Details",
+ "video": "video",
+ "snapshot": "snapshot",
+ "object_lifecycle": "objectlevenscyclus"
+ },
+ "objectLifecycle": {
+ "createObjectMask": "Objectmasker maken",
+ "lifecycleItemDesc": {
+ "visible": "{{label}} Gedetecteerd",
+ "entered_zone": "{{label}} ingevoerd {{zones}}",
+ "attribute": {
+ "other": "{{label}} Herkend als {{attribute}}",
+ "faceOrLicense_plate": "{{attribute}} Gedetecteerd voor {{label}}"
+ },
+ "heard": "{{label}} gehoord",
+ "gone": "{{label}} Links",
+ "active": "{{label}} Werd actief",
+ "stationary": "{{label}} werd stationair",
+ "external": "{{label}} gedetecteerd"
+ },
+ "annotationSettings": {
+ "title": "Annotatie-instellingen",
+ "offset": {
+ "millisecondsToOffset": "Aantal milliseconden om objectkader mee te verschuiven. Standaard: 0",
+ "desc": "Deze gegevens zijn afkomstig van de detectiestroom van je camera, maar worden weergegeven op beelden uit de opnamestroom. Het is onwaarschijnlijk dat deze twee streams perfect gesynchroniseerd zijn. Hierdoor zullen het objectkader en het beeld niet exact op elkaar aansluiten. Het veld annotation_offset
kan echter worden gebruikt om deze annotatie-afwijking te corrigeren.",
+ "documentation": "Lees de documentatie ",
+ "label": "Annotatie-afwijking",
+ "tips": "TIP: Stel je voor dat er een gebeurtenisclip is waarin een persoon van links naar rechts loopt. Als het objectkader in de tijdlijn van de gebeurtenis steeds links van de persoon ligt, dan moet de waarde verlaagd worden. Op dezelfde manier als het objectkader consequent vóór de persoon ligt dus vooruitloopt, moet de waarde verhoogd worden."
+ },
+ "showAllZones": {
+ "title": "Toon alle zones",
+ "desc": "Toon altijd zones op frames waar objecten een zone zijn binnengegaan."
+ }
+ },
+ "noImageFound": "Er is geen afbeelding beschikbaar voor dit tijdstip.",
+ "title": "Objectlevenscyclus",
+ "adjustAnnotationSettings": "Annotatie-instellingen aanpassen",
+ "scrollViewTips": "Scroll om de belangrijke momenten uit de levenscyclus van dit object te bekijken.",
+ "autoTrackingTips": "Als u een automatische objectvolgende camera gebruikt, zal het objectkader onnauwkeurig zijn.",
+ "carousel": {
+ "previous": "Vorige dia",
+ "next": "Volgende dia"
+ }
+ },
+ "documentTitle": "Verken - Frigate",
+ "details": {
+ "item": {
+ "button": {
+ "viewInExplore": "Bekijk in Verkennen",
+ "share": "Deel dit beoordelingsitem"
+ },
+ "title": "Details van item bekijken",
+ "desc": "Details van item bekijken",
+ "tips": {
+ "hasMissingObjects": "Pas je configuratie aan als je wilt dat Frigate gevolgde objecten opslaat voor de volgende labels: {{objects}}",
+ "mismatch_one": "{{count}} Niet-beschikbaar object werd gedetecteerd en opgenomen in dit beoordelingsitem. Het voldeed mogelijk niet aan de criteria voor een waarschuwing of detectie, of is inmiddels opgeschoond of verwijderd.",
+ "mismatch_other": "{{count}} Niet-beschikbare objecten zijn gedetecteerd en opgenomen in dit beoordelingsitem. Deze objecten voldeden mogelijk niet aan de voorwaarden voor een waarschuwing of detectie, of zijn inmiddels verwijderd of opgeruimd."
+ },
+ "toast": {
+ "success": {
+ "regenerate": "Er is een nieuwe beschrijving aangevraagd bij {{provider}}. Afhankelijk van de snelheid van je provider kan het regenereren van de nieuwe beschrijving enige tijd duren.",
+ "updatedSublabel": "Sublabel succesvol bijgewerkt."
+ },
+ "error": {
+ "updatedSublabelFailed": "Het is niet gelukt om het sublabel bij te werken: {{errorMessage}}",
+ "regenerate": "Het is niet gelukt om {{provider}} aan te roepen voor een nieuwe beschrijving: {{errorMessage}}"
+ }
+ }
+ },
+ "label": "Label",
+ "editSubLabel": {
+ "title": "Sublabel bewerken",
+ "descNoLabel": "Voer een nieuw sublabel in voor dit gevolgde object",
+ "desc": "Voer een nieuw sublabel in voor deze {{label}}"
+ },
+ "topScore": {
+ "label": "Hoogste score",
+ "info": "De topscore is de hoogste mediaanscore voor het gevolgde object, waardoor deze kan afwijken van de score die wordt weergegeven op de thumbnail van het zoekresultaat."
+ },
+ "objects": "Objecten",
+ "zones": "Zones",
+ "button": {
+ "findSimilar": "Vind vergelijkbare",
+ "regenerate": {
+ "label": "Regenereer de beschrijving van het gevolgde object",
+ "title": "Regenereren"
+ }
+ },
+ "description": {
+ "placeholder": "Beschrijving van het gevolgde object",
+ "label": "Beschrijving",
+ "aiTips": "Frigate vraagt pas om een beschrijving van uw Generative AI-provider als de levenscyclus van het gevolgde object is afgelopen."
+ },
+ "expandRegenerationMenu": "Regeneratiemenu uitbreiden",
+ "regenerateFromSnapshot": "Regenereren vanuit Snapshot",
+ "tips": {
+ "descriptionSaved": "Beschrijving succesvol opgeslagen",
+ "saveDescriptionFailed": "Het is niet gelukt om de beschrijving bij te werken: {{errorMessage}}"
+ },
+ "timestamp": "Tijdstempel",
+ "regenerateFromThumbnails": "Regeneratie van Thumbnails",
+ "camera": "Camera",
+ "estimatedSpeed": "Geschatte snelheid"
+ },
+ "itemMenu": {
+ "downloadVideo": {
+ "label": "Download video",
+ "aria": "Download video"
+ },
+ "viewObjectLifecycle": {
+ "aria": "Toon de levenscyclus van het object",
+ "label": "Levenscyclus van object bekijken"
+ },
+ "submitToPlus": {
+ "label": "Verzenden naar Frigate+",
+ "aria": "Verzenden naar Frigate Plus"
+ },
+ "viewInHistory": {
+ "aria": "Bekijk in Geschiedenis",
+ "label": "Bekijk in Geschiedenis"
+ },
+ "deleteTrackedObject": {
+ "label": "Verwijder dit gevolgde object"
+ },
+ "findSimilar": {
+ "label": "Vind vergelijkbare",
+ "aria": "Vind vergelijkbare gevolgde objecten"
+ },
+ "downloadSnapshot": {
+ "label": "Download snapshot",
+ "aria": "Download snapshot"
+ }
+ },
+ "noTrackedObjects": "Geen gevolgde objecten gevonden",
+ "trackedObjectsCount": "{{count}} gevolgde objecten ",
+ "searchResult": {
+ "deleteTrackedObject": {
+ "toast": {
+ "success": "Het gevolgde object is succesvol verwijderd.",
+ "error": "Verwijderen van gevolgd object mislukt: {{errorMessage}}"
+ }
+ }
+ },
+ "dialog": {
+ "confirmDelete": {
+ "title": "Bevestig Verwijderen",
+ "desc": "Het verwijderen van dit gevolgde object verwijdert de snapshot, alle opgeslagen embeddings en eventuele bijbehorende levenscyclusgegevens van het object. Opgenomen videobeelden van dit object in de Geschiedenisweergave worden NIET verwijderd.
Weet je zeker dat je wilt doorgaan?"
+ }
+ },
+ "fetchingTrackedObjectsFailed": "Fout bij het ophalen van gevolgde objecten: {{errorMessage}}"
+}
diff --git a/web/public/locales/nl/views/exports.json b/web/public/locales/nl/views/exports.json
new file mode 100644
index 000000000..2f9d50f9d
--- /dev/null
+++ b/web/public/locales/nl/views/exports.json
@@ -0,0 +1,17 @@
+{
+ "documentTitle": "Export - Frigate",
+ "search": "Zoek",
+ "toast": {
+ "error": {
+ "renameExportFailed": "Het is niet gelukt om de export te hernoemen: {{errorMessage}}"
+ }
+ },
+ "editExport": {
+ "title": "Hernoemen Export",
+ "saveExport": "Export opslaan",
+ "desc": "Voer een nieuwe naam in voor deze export."
+ },
+ "noExports": "Geen export gevonden",
+ "deleteExport": "Verwijder Export",
+ "deleteExport.desc": "Weet je zeker dat je dit {{exportName}} wilt wissen?"
+}
diff --git a/web/public/locales/nl/views/faceLibrary.json b/web/public/locales/nl/views/faceLibrary.json
new file mode 100644
index 000000000..55a8a754a
--- /dev/null
+++ b/web/public/locales/nl/views/faceLibrary.json
@@ -0,0 +1,71 @@
+{
+ "selectItem": "Selecteer {{item}}",
+ "details": {
+ "timestamp": "Tijdstempel",
+ "person": "Persoon",
+ "confidence": "Vertrouwen",
+ "face": "Gezicht Details",
+ "faceDesc": "Details van het gezicht en het bijbehorende object"
+ },
+ "documentTitle": "Gezichtsbibliotheek - Frigate",
+ "description": {
+ "placeholder": "Voer een naam in voor deze verzameling",
+ "addFace": "Doorloop het toevoegen van een nieuwe collectie aan de gezichtenbibliotheek."
+ },
+ "train": {
+ "title": "Train",
+ "aria": "Selecteer trainen"
+ },
+ "selectFace": "Selecteer gezicht",
+ "toast": {
+ "error": {
+ "addFaceLibraryFailed": "Het is niet gelukt om de gezichtsnaam in te stellen: {{errorMessage}}",
+ "deleteFaceFailed": "Verwijderen mislukt: {{errorMessage}}",
+ "deleteNameFailed": "Naam verwijderen is niet gelukt: {{errorMessage}}",
+ "updateFaceScoreFailed": "Niet gelukt om gezichtsscore bij te werken: {{errorMessage}}",
+ "uploadingImageFailed": "Afbeelding uploaden mislukt: {{errorMessage}}",
+ "trainFailed": "Trainen mislukt: {{errorMessage}}"
+ },
+ "success": {
+ "deletedFace_one": "{{count}} gezicht is succesvol verwijderd.",
+ "deletedFace_other": "{{count}} gezichten zijn succesvol verwijderd.",
+ "trainedFace": "Met succes getraind gezicht.",
+ "updatedFaceScore": "De gezichtsscore is succesvol bijgewerkt.",
+ "deletedName_one": "{{count}} gezicht is succesvol verwijderd.",
+ "deletedName_other": "{{count}} gezichten zijn succesvol verwijderd.",
+ "uploadedImage": "Afbeelding succesvol geüpload.",
+ "addFaceLibrary": "{{name}} is succesvol toegevoegd aan de Gezichtenbibliotheek!"
+ }
+ },
+ "imageEntry": {
+ "dropActive": "Zet de afbeelding hier neer...",
+ "dropInstructions": "Sleep een afbeelding hierheen of klik om te selecteren",
+ "maxSize": "Maximale grootte: {{size}}MB",
+ "validation": {
+ "selectImage": "Selecteer een afbeeldingbestand."
+ }
+ },
+ "createFaceLibrary": {
+ "title": "Collectie maken",
+ "desc": "Een nieuwe collectie maken",
+ "new": "Creëer een nieuw gezicht",
+ "nextSteps": "Om een sterke basis op te bouwen:
modus: {{effectiveRetainMode}}
, dus deze opname op aanvraag bewaart alleen segmenten met {{effectiveRetainModeName}}."
+ },
+ "editLayout": {
+ "label": "Lay-out bewerken",
+ "exitEdit": "Bewerken verlaten",
+ "group": {
+ "label": "Cameragroep bewerken"
+ }
+ }
+}
diff --git a/web/public/locales/nl/views/recording.json b/web/public/locales/nl/views/recording.json
new file mode 100644
index 000000000..87883cd32
--- /dev/null
+++ b/web/public/locales/nl/views/recording.json
@@ -0,0 +1,12 @@
+{
+ "export": "Exporteren",
+ "toast": {
+ "error": {
+ "endTimeMustAfterStartTime": "De eindtijd moet na de starttijd zijn",
+ "noValidTimeSelected": "Er is geen geldig tijdsbereik geselecteerd"
+ }
+ },
+ "filter": "Filter",
+ "calendar": "Kalender",
+ "filters": "Filters"
+}
diff --git a/web/public/locales/nl/views/search.json b/web/public/locales/nl/views/search.json
new file mode 100644
index 000000000..7a637f18e
--- /dev/null
+++ b/web/public/locales/nl/views/search.json
@@ -0,0 +1,67 @@
+{
+ "button": {
+ "delete": "Opgeslagen zoekopdracht verwijderen",
+ "save": "Zoekopdracht opslaan",
+ "clear": "Duidelijk zoeken",
+ "filterInformation": "Filter informatie",
+ "filterActive": "Filters actief"
+ },
+ "search": "Zoek",
+ "savedSearches": "Opgeslagen zoekopdrachten",
+ "searchFor": "Zoeken naar {{inputValue}}",
+ "trackedObjectId": "Getraceerd object-ID",
+ "filter": {
+ "label": {
+ "cameras": "Camera's",
+ "labels": "Labels",
+ "sub_labels": "Sublabels",
+ "time_range": "Tijdsbereik",
+ "before": "Voor",
+ "min_score": "Min Score",
+ "max_score": "Max Score",
+ "min_speed": "Min snelheid",
+ "recognized_license_plate": "Herkend kenteken",
+ "has_snapshot": "Heeft Snapshot",
+ "has_clip": "Heeft Clip",
+ "search_type": "Zoektype",
+ "zones": "Zones",
+ "max_speed": "Max snelheid",
+ "after": "Na"
+ },
+ "toast": {
+ "error": {
+ "maxSpeedMustBeGreaterOrEqualMinSpeed": "De ‘max_speed’ moet groter zijn dan of gelijk aan de ‘min_speed’.",
+ "beforeDateBeLaterAfter": "De 'voor' datum moet later zijn dan de 'na' datum.",
+ "afterDatebeEarlierBefore": "De ‘na’ datum moet eerder zijn dan de ‘voor’ datum.",
+ "minScoreMustBeLessOrEqualMaxScore": "De ‘min_score’ moet kleiner zijn dan of gelijk aan de ‘max_score’.",
+ "maxScoreMustBeGreaterOrEqualMinScore": "De ‘max_score’ moet groter zijn dan of gelijk aan de ‘min_score’.",
+ "minSpeedMustBeLessOrEqualMaxSpeed": "De ‘min_snelheid’ moet kleiner zijn dan of gelijk aan de ‘max_snelheid’."
+ }
+ },
+ "tips": {
+ "title": "Tekstfilters gebruiken",
+ "desc": {
+ "example": "Voorbeeld: camera's:voordeur label:persoon vóór:01012024 tijdsbereik:15:00-16:00
",
+ "text": "Filters helpen je om je zoekresultaten te beperken. Zo gebruik je ze in het invoerveld:",
+ "step": "ffprobe
.",
+ "stream": "Stream {{idx}}",
+ "resolution": "Resolutie:",
+ "unknown": "Onbekend",
+ "error": "Fout: {{error}}",
+ "tips": {
+ "title": "Camera Opgevraagde Informatie"
+ },
+ "fps": "FPS:",
+ "codec": "Codec:",
+ "video": "Video:",
+ "fetching": "Camera Gegevens Opvragen",
+ "audio": "Audio:"
+ },
+ "framesAndDetections": "Frames / Detecties",
+ "label": {
+ "camera": "camera",
+ "detect": "detectie",
+ "skipped": "overgeslagen",
+ "ffmpeg": "ffmpeg",
+ "capture": "registratie"
+ },
+ "toast": {
+ "success": {
+ "copyToClipboard": "Uitvraag gegevens naar klembord gekopieerd."
+ },
+ "error": {
+ "unableToProbeCamera": "Kan camera niet uitvragen: {{errorMessage}}"
+ }
+ }
+ },
+ "lastRefreshed": "Laast vernieuwd: ",
+ "stats": {
+ "ffmpegHighCpuUsage": "{{camera}} zorgt voor hoge FFMPEG CPU belasting ({{ffmpegAvg}}%)",
+ "detectHighCpuUsage": "{{camera}} zorgt voor hoge detectie CPU belasting ({{detectAvg}}%)",
+ "healthy": "Systeem is gezond",
+ "reindexingEmbeddings": "Herindexering van inbeddingen ({{processed}}% compleet)"
+ },
+ "enrichments": {
+ "title": "Verrijkingen",
+ "infPerSecond": "Interferenties Per Seconde",
+ "embeddings": {
+ "image_embedding_speed": "Afbeelding Inplaatsings Snelheid",
+ "face_embedding_speed": "Gezicht Inplaatsings Snelheid",
+ "text_embedding_speed": "Text Inplaatsing Snelheid",
+ "plate_recognition_speed": "Kentekenplaat Herkenning Snelheid"
+ }
+ }
+}