Merge pull request #198 from gillesserrien/feat/i18n-nl

feat(i18n): add Dutch (nl) locale
This commit is contained in:
webadderall
2026-04-09 17:01:52 +10:00
committed by GitHub
10 changed files with 512 additions and 1 deletions
+1
View File
@@ -57,6 +57,7 @@ interface DesktopSource {
const LOCALE_LABELS: Record<string, string> = {
en: "EN",
es: "ES",
nl: "NL",
"zh-CN": "中文",
ko: "한국어",
};
+16
View File
@@ -28,6 +28,13 @@ import esLaunch from '@/i18n/locales/es/launch.json'
import esSettings from '@/i18n/locales/es/settings.json'
import esShortcuts from '@/i18n/locales/es/shortcuts.json'
import esTimeline from '@/i18n/locales/es/timeline.json'
import nlCommon from '@/i18n/locales/nl/common.json'
import nlDialogs from '@/i18n/locales/nl/dialogs.json'
import nlEditor from '@/i18n/locales/nl/editor.json'
import nlLaunch from '@/i18n/locales/nl/launch.json'
import nlSettings from '@/i18n/locales/nl/settings.json'
import nlShortcuts from '@/i18n/locales/nl/shortcuts.json'
import nlTimeline from '@/i18n/locales/nl/timeline.json'
import koCommon from '@/i18n/locales/ko/common.json'
import koDialogs from '@/i18n/locales/ko/dialogs.json'
import koEditor from '@/i18n/locales/ko/editor.json'
@@ -66,6 +73,15 @@ const messages: Record<AppLocale, LocaleBundle> = {
dialogs: esDialogs,
shortcuts: esShortcuts,
},
nl: {
common: nlCommon,
launch: nlLaunch,
editor: nlEditor,
timeline: nlTimeline,
settings: nlSettings,
dialogs: nlDialogs,
shortcuts: nlShortcuts,
},
ko: {
common: koCommon,
launch: koLaunch,
+1 -1
View File
@@ -1,6 +1,6 @@
export const DEFAULT_LOCALE = 'en' as const
export const SUPPORTED_LOCALES = ['en', 'es', 'ko', 'zh-CN'] as const
export const SUPPORTED_LOCALES = ['en', 'es', 'nl', 'ko', 'zh-CN'] as const
export const I18N_NAMESPACES = [
'common',
+26
View File
@@ -0,0 +1,26 @@
{
"app": {
"name": "Recordly",
"editorTitle": "Recordly Editor",
"subtitle": "Schermopname en bewerking",
"language": "Taal",
"manageRecordings": "Opnamemap openen"
},
"actions": {
"cancel": "Annuleren",
"close": "Sluiten",
"export": "Exporteren",
"load": "Laden",
"redo": "Opnieuw",
"reset": "Herstellen",
"save": "Opslaan",
"undo": "Ongedaan maken",
"delete": "Verwijderen",
"done": "Klaar"
},
"errors": {
"invalidFileType": "Ongeldig bestandstype",
"failedToUploadImage": "Afbeelding uploaden mislukt",
"fileReadError": "Er is een fout opgetreden bij het lezen van het bestand."
}
}
+62
View File
@@ -0,0 +1,62 @@
{
"export": {
"pleaseTryAgain": "Probeer het opnieuw",
"compilingGifProgress": "GIF samenstellen... {{progress}}%",
"compilingGifWait": "GIF samenstellen... Dit kan even duren",
"takeMoment": "Dit kan even duren...",
"exportFailed": "Export mislukt",
"compilingGifTitle": "GIF samenstellen",
"exportingFormat": "{{format}} exporteren",
"exportComplete": "Export voltooid",
"formatReady": "Je {{format}} is klaar",
"showInFolder": "Tonen in map",
"compiling": "Samenstellen",
"renderingFrames": "Frames renderen",
"processing": "Verwerken...",
"status": "Status",
"format": "Formaat",
"compilingStatus": "Samenstellen...",
"frames": "Frames",
"cancelExport": "Export annuleren",
"reopenSaveDialog": "Opslagvenster opnieuw openen",
"savedSuccess": "{{format}} succesvol opgeslagen!"
},
"addFont": {
"title": "Google-lettertype toevoegen",
"heading": "Google-lettertype toevoegen",
"description": "Voeg een aangepast lettertype van Google Fonts toe om te gebruiken in je annotaties.",
"urlLabel": "Google Fonts import-URL",
"urlPlaceholder": "https://fonts.googleapis.com/css2?family=Roboto&display=swap",
"urlHelp": "Haal dit op via Google Fonts: selecteer een lettertype → klik op \"Get font\" → kopieer de @import-URL",
"nameLabel": "Weergavenaam",
"namePlaceholder": "Mijn aangepast lettertype",
"nameHelp": "Zo verschijnt het lettertype in de lettertypekiezer",
"adding": "Toevoegen...",
"addFont": "Lettertype toevoegen",
"enterUrl": "Voer een Google Fonts import-URL in",
"invalidUrl": "Voer een geldige Google Fonts-URL in",
"enterName": "Voer een lettertypenaam in",
"extractFailed": "Kan lettertypefamilie niet uit URL extraheren",
"addSuccess": "Lettertype \"{{name}}\" succesvol toegevoegd",
"addFailed": "Lettertype toevoegen mislukt",
"loadTimeout": "Lettertype duurde te lang om te laden. Controleer de URL en probeer het opnieuw.",
"loadFailed": "Het lettertype kon niet worden geladen. Controleer of de Google Fonts-URL correct is."
},
"shortcutsConfig": {
"title": "Sneltoetsen",
"configurable": "Aanpasbaar",
"fixed": "Vast",
"pressEscToCancel": "Druk op Esc om te annuleren",
"clickToChange": "Klik om te wijzigen",
"pressAKey": "Druk op een toets...",
"alreadyUsedBy": "Al in gebruik door <strong>{{action}}</strong>",
"swap": "Wisselen",
"reserved": "Deze sneltoets is gereserveerd voor \"{{label}}\" en kan niet opnieuw worden toegewezen.",
"saved": "Sneltoetsen opgeslagen",
"resetNotice": "Teruggezet naar standaardsneltoetsen — klik op Opslaan om toe te passen",
"instructions": "Klik op een sneltoets en druk vervolgens op de nieuwe toetscombinatie. Druk op Esc om te annuleren.",
"resetToDefaults": "Standaardwaarden herstellen",
"cancel": "Annuleren",
"save": "Opslaan"
}
}
+118
View File
@@ -0,0 +1,118 @@
{
"playback": {
"play": "Afspelen",
"pause": "Pauzeren"
},
"annotations": {
"settings": "Annotatie-instellingen",
"active": "Actief",
"text": "Tekst",
"image": "Afbeelding",
"arrow": "Pijl",
"textContent": "Tekstinhoud",
"textPlaceholder": "Voer je tekst in...",
"fontStyle": "Lettertype",
"selectStyle": "Selecteer stijl",
"size": "Grootte",
"toggleBold": "Vet aan/uit",
"toggleItalic": "Cursief aan/uit",
"toggleUnderline": "Onderstrepen aan/uit",
"alignLeft": "Links uitlijnen",
"alignCenter": "Centreren",
"alignRight": "Rechts uitlijnen",
"textColor": "Tekstkleur",
"background": "Achtergrond",
"none": "Geen",
"clearBackground": "Achtergrond wissen",
"uploadImage": "Afbeelding uploaden",
"supportedFormats": "Ondersteunde formaten: JPG, PNG, GIF, WebP",
"arrowDirection": "Pijlrichting",
"strokeWidth": "Lijndikte: {{width}}px",
"arrowColor": "Pijlkleur",
"deleteAnnotation": "Annotatie verwijderen",
"shortcutsAndTips": "Sneltoetsen & tips",
"tipSelectAnnotation": "Verplaats de afspeelkop naar een overlappend annotatiegedeelte en selecteer een item.",
"tipCycleForward": "Gebruik Tab om door overlappende items te bladeren.",
"tipCycleBackward": "Gebruik Shift+Tab om terug te bladeren.",
"imageUploadSuccess": "Afbeelding succesvol geüpload!",
"imageUploadError": "Upload een JPG-, PNG-, GIF- of WebP-afbeelding."
},
"fontStyles": {
"classic": "Klassiek",
"editor": "Editor",
"strong": "Sterk",
"typewriter": "Typemachine",
"deco": "Deco",
"simple": "Simpel",
"modern": "Modern",
"clean": "Schoon"
},
"format": {
"mp4Video": "MP4-video",
"mp4Description": "Videobestand van hoge kwaliteit",
"gifAnimation": "GIF-animatie",
"gifDescription": "Geanimeerde afbeelding om te delen"
},
"gifOptions": {
"frameRate": "Framesnelheid",
"outputSize": "Uitvoergrootte",
"outputDimensions": "Uitvoer: {{width}} × {{height}}px",
"loopAnimation": "Animatie herhalen",
"loopDescription": "GIF wordt continu afgespeeld"
},
"tutorial": {
"howTrimmingWorks": "Hoe trimmen werkt",
"title": "Hoe trimmen werkt",
"understanding": "Leer hoe je ongewenste delen uit je video knipt.",
"descriptionP1": "Het trimgereedschap werkt door de segmenten te definiëren die je wilt",
"descriptionRemove": "verwijderen",
"descriptionP2": "uit je video.",
"descriptionP3": "Elk deel van de tijdlijn dat bedekt is door een rood trimsegment wordt weggeknipt bij het exporteren.",
"visualExample": "Visueel voorbeeld",
"removed": "VERWIJDERD",
"kept": "Behouden",
"finalVideo": "Eindvideo",
"part": "Deel {{number}}",
"addTrimStep": "1. Trim toevoegen",
"addTrimDesc": "Druk op T of klik op het schaarpictogram om een sectie te markeren voor verwijdering.",
"adjustStep": "2. Aanpassen",
"adjustDesc": "Sleep de randen van het rode gebied om precies te bepalen wat je wilt wegknippen."
},
"feedback": {
"trigger": "Feedback",
"title": "Feedback & contact",
"description": "Neem rechtstreeks contact op of maak een issue aan als er iets kapot of ontbrekend is.",
"emailLabel": "E-mail",
"xLabel": "X",
"reportIssue": "Issue melden / feedback sturen",
"openFailed": "Kan link niet openen."
},
"keyboardShortcuts": {
"trigger": "Sneltoetsen",
"title": "Sneltoetsen",
"description": "Snelreferentie voor de tijdlijn- en editorbesturing.",
"customizeTooltip": "Sneltoetsen aanpassen",
"customize": "Aanpassen",
"panTimeline": "Tijdlijn verschuiven",
"zoomTimeline": "Tijdlijn zoomen",
"cycleAnnotations": "Annotaties doorlopen",
"tab": "Tab"
},
"actions": {
"saveAgain": "Opnieuw opslaan",
"showInFolder": "Tonen in map"
},
"project": {
"untitled": "Naamloos"
},
"exportStatus": {
"exporting": "Exporteren",
"renderingFile": "Je bestand wordt gerenderd.",
"preparing": "Export voorbereiden...",
"completePercent": "{{percent}}% voltooid",
"issue": "Exportprobleem",
"complete": "Export voltooid",
"savedSuccessfully": "Je bestand is succesvol opgeslagen."
},
"openRecordingsFolder": "Opnamemap openen"
}
+73
View File
@@ -0,0 +1,73 @@
{
"recording": {
"disableSystemAudio": "Systeemaudio uitschakelen",
"enableSystemAudio": "Systeemaudio inschakelen",
"disableMicrophone": "Microfoon uitschakelen",
"enableMicrophone": "Microfoon inschakelen",
"disableWebcam": "Webcam-overlay uitschakelen",
"enableWebcam": "Webcam-overlay inschakelen",
"countdownDelay": "Aftelvertraging",
"noDelay": "Geen vertraging",
"record": "Opnemen",
"recordingFolder": "Opnamepad: {{path}}",
"chooseRecordingsFolder": "Kies opnamepad",
"folderPath": "Pad: /{{name}}/",
"openVideoFile": "Videobestand openen",
"openProject": "Project openen",
"hideHudFromVideo": "HUD verbergen in opname",
"showHudInVideo": "HUD tonen in opname",
"hideHud": "HUD verbergen",
"closeApp": "App sluiten",
"screens": "Schermen",
"windows": "Vensters",
"noSourcesFound": "Geen bronnen gevonden",
"microphone": "Microfoon",
"turnOffMicrophone": "Microfoon uitschakelen",
"selectMicToEnable": "Selecteer een microfoon om in te schakelen",
"noMicrophonesFound": "Geen microfoons gevonden",
"webcam": "Webcam",
"turnOffWebcam": "Webcam uitschakelen",
"selectWebcamToEnable": "Selecteer een webcam om in te schakelen",
"noWebcamsFound": "Geen webcams gevonden",
"recordingsFolder": "Opnamepad",
"language": "Taal",
"paused": "GEPAUZEERD",
"rec": "OPN",
"resume": "Hervatten",
"pause": "Pauzeren",
"stop": "Stoppen",
"cancel": "Annuleren",
"more": "Meer",
"update": {
"update": "Bijwerken",
"updated": "Bijgewerkt",
"idleTitle": "Controleer op updates.",
"checkingTitle": "Controleren op updates...",
"downloadingTitle": "Update downloaden...",
"errorTitle": "Updatecontrole mislukt. Klik om opnieuw te proberen.",
"upToDateTitle": "Recordly {{version}} is up-to-date.",
"availableTitle": "Recordly {{version}} is beschikbaar.",
"availableGenericTitle": "Er is een update beschikbaar."
}
},
"sourceSelector": {
"loadingSources": "Bronnen laden...",
"screens": "Schermen",
"windows": "Vensters",
"windowsNote": "Alleen zichtbare (niet-geminimaliseerde) vensters kunnen worden opgenomen.",
"windowPlaceholder": "Venster",
"cancel": "Annuleren",
"share": "Delen"
},
"permissions": {
"screenRecordingNeeded": "Recordly heeft toestemming voor schermopname nodig voordat je begint. Systeeminstellingen zijn geopend. Schakel het in, sluit Recordly en open het opnieuw.",
"screenRecordingMissing": "Toestemming voor schermopname ontbreekt nog. Systeeminstellingen zijn opnieuw geopend. Schakel het in, sluit Recordly en open het opnieuw voordat je opneemt.",
"accessibilityNeeded": "Recordly heeft ook toegankelijkheidstoestemming nodig voor cursortracking. Systeeminstellingen zijn geopend. Schakel het in, sluit Recordly en open het opnieuw.",
"accessibilityMissing": "Toegankelijkheidstoestemming ontbreekt nog. Systeeminstellingen zijn opnieuw geopend. Schakel het in, sluit Recordly en open het opnieuw voordat je opneemt.",
"selectSource": "Selecteer een bron om op te nemen",
"systemAudioUnavailable": "Systeemaudio is niet beschikbaar voor deze bron. De opname gaat verder zonder systeemaudio.",
"microphoneDenied": "Microfoontoegang is geweigerd. De opname gaat verder zonder microfoonaudio.",
"failedToStart": "Opname starten mislukt: {{error}}",
"failedToStartGeneric": "Opname starten mislukt"
}
}
+161
View File
@@ -0,0 +1,161 @@
{
"zoom": {
"level": "Zoomniveau",
"selectRegion": "Selecteer een zoomgebied om aan te passen",
"deleteZoom": "Zoom verwijderen"
},
"trim": {
"deleteRegion": "Trimgebied verwijderen"
},
"speed": {
"playbackSpeed": "Afspeelsnelheid",
"selectRegion": "Selecteer een snelheidsgebied om aan te passen",
"deleteRegion": "Snelheidsgebied verwijderen"
},
"effects": {
"title": "Video-effecten",
"show": "Tonen",
"showCursor": "Cursor tonen",
"loopCursor": "Cursor herhalen",
"cursorStyle": "Cursorstijl",
"cursorStyleOptions": {
"tahoe": "Tahoe",
"dot": "Punt",
"figma": "Minimaal",
"mono": "Omgekeerd",
"lavender": "Lavendel",
"parched": "Parched",
"chooper": "Chooper",
"amongus": "Among Us",
"turtle": "Schildpad"
},
"backgroundBlur": "Achtergrondvervaging",
"zoomMotionBlur": "Zoom-bewegingsonscherpte",
"connectZooms": "Zooms verbinden",
"zoomGeneralTitle": "Algemeen",
"zoomGeneralDescription": "Globale bewegingsinstellingen voor elke zoomovergang.",
"zoomInTitle": "Inzoomen",
"zoomInDescription": "Bepaal hoe de camera een zoomgebied binnengaat.",
"zoomOutTitle": "Uitzoomen",
"zoomOutDescription": "Bepaal hoe de camera een zoomgebied verlaat.",
"connectedZoomTitle": "Tussen zooms",
"connectedZoomDescription": "Stel de overgang af tussen opeenvolgende zoomgebieden wanneer verbinding is ingeschakeld.",
"zoomInDuration": "Inzoomduur",
"zoomInOverlap": "Inzoomoverlap",
"zoomOutDuration": "Uitzoomduur",
"zoomInEasing": "Inzoomcurve",
"zoomOutEasing": "Uitzoomcurve",
"connectedZoomGap": "Verbonden zoomtussenpauze",
"connectedZoomDuration": "Verbonden zoomduur",
"connectedZoomEasing": "Verbonden pancurve",
"zoomEasingOptions": {
"recordly": "Recordly",
"glide": "Glijden",
"smooth": "Vloeiend",
"snappy": "Pittig",
"linear": "Lineair"
},
"cursorSize": "Cursorgrootte",
"cursorSmoothing": "Cursorverzachting",
"off": "Uit",
"cursorMotionBlur": "Cursor-bewegingsonscherpte",
"cursorClickBounce": "Cursorklikstuit",
"cursorClickBounceDuration": "Stuitsnelheid",
"cursorSway": "Cursorbeweging",
"webcam": "Webcam-overlay",
"webcamFootage": "Webcambeelden",
"webcamFootageDescription": "Geen webcambeelden gekoppeld aan deze video",
"uploadWebcamFootage": "Beelden uploaden",
"replaceWebcamFootage": "Beelden vervangen",
"removeWebcamFootage": "Beelden verwijderen",
"webcamFootageAdded": "Webcambeelden gekoppeld",
"webcamFootageRemoved": "Webcambeelden verwijderd",
"webcamSize": "Webcamgrootte",
"webcamReactToZoom": "Webcam reageert op zoom",
"webcamRoundness": "Webcam-afronding",
"webcamShadow": "Webcamschaduw",
"shadow": "Schaduw",
"radius": "Straal",
"roundness": "Afronding",
"padding": "Opvulling",
"removeBackground": "Achtergrond verwijderen"
},
"sections": {
"scene": "Scène",
"captions": "Ondertiteling",
"zoom": "Zoom",
"cursor": "Cursor",
"webcam": "Webcam",
"frame": "Kader",
"crop": "Bijsnijden"
},
"captions": {
"enabled": "Tonen",
"language": "Taal",
"downloading": "Downloaden...",
"deleteModel": "Model verwijderen",
"clearModel": "Model wissen",
"downloadModel": "Model downloaden",
"generating": "Genereren...",
"generateFull": "Ondertiteling genereren",
"regenerateFull": "Ondertiteling opnieuw genereren",
"clearFull": "Ondertiteling wissen",
"fontSettings": "Lettertype-instellingen",
"defaultFont": "Standaard",
"fontFamily": "Lettertype",
"fontSize": "Lettergrootte",
"rowCount": "Rijen",
"animation": "Animatie",
"animationOff": "Uit",
"animationFade": "Vervagen",
"animationRise": "Opstijgen",
"animationPop": "Pop",
"bottomOffset": "Onderste afstand",
"maxWidth": "Maximale breedte",
"boxRadius": "Vakstraal",
"backgroundOpacity": "Achtergrond-dekking",
"textColor": "Tekstkleur"
},
"crop": {
"title": "Video bijsnijden",
"instruction": "Sleep aan elke zijde om het bijsnijgebied aan te passen",
"top": "Boven",
"bottom": "Onder",
"left": "Links",
"right": "Rechts",
"openEditor": "Bijsnijdeditor openen"
},
"background": {
"title": "Achtergrond",
"image": "Afbeelding",
"color": "Kleur",
"gradient": "Verloop",
"wallpaperPreview": "Achtergrondvoorbeeld",
"uploadCustom": "Afbeelding uploaden",
"uploadSuccess": "Eigen afbeelding succesvol geüpload!",
"uploadError": "Upload een JPG- of JPEG-afbeelding.",
"uploadErrorDescription": "Alleen JPG- en JPEG-afbeeldingen worden ondersteund."
},
"export": {
"title": "Exporteren",
"mp4": "MP4",
"gif": "GIF",
"quality": {
"low": "Laag",
"medium": "Gemiddeld",
"high": "Hoog",
"original": "Origineel"
},
"fpsTitle": "FPS",
"loop": "Herhalen",
"outputDimensions": "Uitvoer: {{dimensions}}px",
"sizePresetOriginalShort": "Orig",
"sizePresetMediumShort": "Gem",
"sizePresetLargeShort": "Grt",
"loadProject": "Project laden",
"saveProject": "Project opslaan",
"exportVideo": "{{format}} exporteren",
"reportBug": "Bug melden",
"starOnGithub": "Ster op GitHub"
}
}
+16
View File
@@ -0,0 +1,16 @@
{
"actions": {
"addZoom": "Zoom toevoegen",
"addTrim": "Trim toevoegen",
"addSpeed": "Snelheid toevoegen",
"addAnnotation": "Annotatie toevoegen",
"addKeyframe": "Keyframe toevoegen",
"deleteSelected": "Selectie verwijderen",
"playPause": "Afspelen / Pauzeren",
"cycleForward": "Annotaties vooruit doorlopen",
"cycleBackward": "Annotaties achteruit doorlopen",
"deleteSelectedAlt": "Selectie verwijderen (alt)",
"panTimeline": "Tijdlijn verschuiven",
"zoomTimeline": "Tijdlijn zoomen"
}
}
+38
View File
@@ -0,0 +1,38 @@
{
"zoom": {
"cannotPlace": "Kan zoom hier niet plaatsen",
"existsOrNoSpace": "Er bestaat al een zoom op deze locatie of er is niet genoeg ruimte beschikbaar.",
"suggestHandlerUnavailable": "Zoomsuggestie-handler niet beschikbaar",
"noTelemetry": "Geen cursortelemetrie beschikbaar",
"recordFirst": "Neem eerst een screencast op om cursorsuggesties te genereren.",
"noUsableTelemetry": "Geen bruikbare cursortelemetrie",
"notEnoughMovement": "De opname bevat niet genoeg cursorbewegingsdata.",
"noInteractionMoments": "Geen duidelijke interactiemomenten gevonden",
"tryRecording": "Probeer een opname met pauzes of klikken rond belangrijke acties.",
"noAutoZoomSlots": "Geen automatische zoomposities beschikbaar",
"dwellPointsOverlap": "Gedetecteerde rustpunten overlappen bestaande zoomgebieden.",
"addedSuggestions": "{{count}} interactiegebaseerde zoomsuggestie(s) toegevoegd",
"label": "Zoom {{index}}",
"addZoom": "Zoom toevoegen (Z)",
"suggestZooms": "Zooms voorstellen op basis van cursor"
},
"trim": {
"cannotPlace": "Kan trim hier niet plaatsen",
"existsOrNoSpace": "Er bestaat al een trim op deze locatie of er is niet genoeg ruimte beschikbaar.",
"label": "Trim {{index}}",
"addTrim": "Trim toevoegen (T)"
},
"speed": {
"cannotPlace": "Kan snelheid hier niet plaatsen",
"existsOrNoSpace": "Er bestaat al een snelheidsregio op deze locatie of er is niet genoeg ruimte beschikbaar.",
"label": "Snelheid"
},
"annotation": {
"label": "Annotatie",
"image": "Afbeelding",
"addAnnotation": "Annotatie toevoegen (A)"
},
"addSpeed": "Snelheid toevoegen (S)",
"resizeLeft": "Links verkleinen",
"resizeRight": "Rechts verkleinen"
}