diff --git a/l10n/bundle.l10n.da.json b/l10n/bundle.l10n.da.json new file mode 100644 index 000000000..85914d901 --- /dev/null +++ b/l10n/bundle.l10n.da.json @@ -0,0 +1,408 @@ +{ + " (Press \"Escape\" to cancel)": " (Tryk \"Escape\" for at afbryde)", + " (previous connection)": " (forrige forbindelse)", + "\"{0}\" in {1}.": "\"{0}\" i {1}.", + "\"findutils\" must be installed on the remote system.": "\"findutils\" skal være installeret på systemet for søgning efter filnavne.", + "(current library)": "(aktuelle bibliotek)", + "(in ASP {0})": "(i ASP {0})", + "{0} {1} occurred while listing files.": "{0} {1} opstod ved visning af filer.", + "{0} already exists.\nDo you want to replace it?": "{0} eksisterer allerede.\nVil du erstatte?", + "{0} file(s) contain(s) '{1}'": "{0} fil(er) indeholder '{1}'", + "{0} file(s) named '{1}'": "{0} fil(er) hedder '{1}'", + "{0} is already current library.": "{0} er allerede det aktuelle bibliotek.", + "{0} is not a directory.": "{0} er ikke en mappe.", + "{0} member(s) copied to streamfile(s) in {1}.": "{0} member(s) kopieret til streamfile(s) i {1}.", + "{0} not found under {1}": "{0} er ikke fundet under {1}", + "{0} was copied to {1}.": "{0} blev kopieret til {1}.", + "{0} was moved to {1}.": "{0} blev flyttet til {1}.", + "{0} was renamed to {1}.": "{0} blev omdøbt til {1}.", + "{0} was the working directory; it is now {1}.": "{0} var den aktuelle mappe; det er nu {1}.", + "$(trash) Clear list": "$(trash) Nulstil liste", + "A comma delimited list of extensions for this action. This can be a member extension, a streamfile extension, an object type or an object attribute": "En komma-separeret liste af typer for denne aktion. Dette kan være en member type, en streamfile filtype, en objekt type eller en objekt attribut.", + "Action name": "Aktionsnavn", + "Actions for local files in the VS Code Workspace.": "Aktioner for lokale filer i VS Code Workspace.", + "Active job": "Aktive job", + "Allows the execution of this Action on protected or read only targets": "Tillader afvikling af denne aktion på sikrede eller skrive-beskyttede mål", + "Are you sure you want overwrite member {0}?": "Vil du overskrive member {0}?", + "Are you sure you want to delete {0}?": "Er du sikker på at du vil slette {0}?", + "Are you sure you want to delete the \"{0}\" profile?": "Er du sikker på at du vil slette profilen \"{0}\"?", + "Are you sure you want to delete the {0} selected files?": "Er du sikker på at du vil slette de {0} valgte filer?", + "Are you sure you want to delete the action \"{0}\"?": "Er du sikker på du vil slette \"{0}\"?", + "Are you sure you want to delete the connection \"{0}\"?": "Er du sikker på at du vil slette forbindelsen \"{0}\"?", + "Are you sure you want to delete these {0} connections?": "Er du sikker på at du vil slette disse {0} forbindelser?", + "Are you sure you want to delete these {0} elements?": "Er du sikker på at du vil slette de {0} valgte elementer?", + "Attribute": "Attribut", + "Authentication methods removed for \"{0}\".": "Kodeord og privat nøgle er fjernet for \"{0}\".", + "Below are available variables based on the Type you have select below. You can specify different commands on each line. Each command run is stateless and run in their own job.": "Nedenfor er de tilgængelige variable, baseret på objekt typen. Du kan angive forskellige kommandoer på hver linie. Hver kommando er \"stateless\" og afvikles i eget job.", + "Branch library, based on the current branch": "Bibliotek for den nuværende Git-gren", + "Browser": "Vindue", + "Cancel": "Afbryd", + "Cannot copy member to itself!": "Kan ikke kopiere et member til sig selv!", + "Cannot create library \"{0}\": {1}": "Kan ikke oprette bibliotek \"{0}\": {1}", + "Cannot search listings using *ALL.": "Kan ikke søge med *ALL.", + "CCSID": "CCSID", + "Certificate needs to be regenerated": "Certifikatet skal regenereres", + "Change current library": "Skift aktuelle bibliotek", + "Change member description for {0}, *BLANK for no description": "Opdater beskrivelse af member {0}, *BLANK for ingen beskrivelse", + "Change object description for {0}, *BLANK for no description": "Opdater objekt beskrivelse for {0}, *BLANK for ingen beskrivelse", + "Changed": "Ændret", + "Changed current library to {0}.": "Skiftede aktuelle bibliotek til {0}.", + "Changed object description for {0} {1}.": "Ændrede objekt beskrivelsen for {0} {1}.", + "Changing library list (can use \"*reset\")": "Skift biblioteksliste (du kan bruge \"*reset\")", + "Changing working directory": "Skifter aktuelle mappe", + "Cleared list.": "Nulstillede liste.", + "Code for IBM i Log": "Code for IBM i Log", + "Command profiles": "Kommando profiler", + "Command(s) to run": "Kommandoer", + "Compare with": "Sammenlign med", + "Compare with Active File": "Sammenlign med aktiv editor", + "Connect": "Forbind", + "Connect to IBM i": "Forbind til IBM i", + "Connection \"{0}\" already exists": "Forbindelsen \"{0}\" eksisterer allerede", + "Connection \"{0}\" already exists.": "Forbindelsen \"{0}\" findes allerede.", + "Connection profiles": "Forbindelses profiler", + "Connection to {0} ended as no password was provided.": "Forbindelse til {0} afsluttet da intet kodeord blev angivet.", + "Continue": "Fortsæt", + "Copied object {0} {1} to {2}.": "Kopierede objekt {0} {1} til {2}.", + "Copied object {0} {1} to {2}. Refresh object browser.": "Kopierede objekt {0} {1} til {2}. Opfrisk object browser.", + "Copy": "Kopier", + "Copy connection \"{0}\"": "Kopier forbindelsen \"{0}\"", + "copying to streamfiles": "copying to streamfiles", + "Create action": "Opret aktion", + "Create duplicate object to new library/object": "Kopier objekt til new bibliotek/objekt", + "Create new filter": "Opret nyt filter", + "Create or maintain Actions. Actions are grouped by the type of file/object they target.": "Opret eller revider Aktioner. Aktioner er grupperede efter typen på de vedrørte filer/objekter.", + "Created": "Oprettet", + "Created by": "Oprettet af", + "Creating member {0}...": "Opretter member {0}...", + "Creating source file {0}.": "Opretter source fil {0}.", + "Creating streamfile {0}.": "Opretter streamfile {0}.", + "current": "aktuelle", + "Current Git branch": "Nuværende git-gren", + "Current library, changeable in Library List": "Aktuelle bibliotek (sættes i Library List)", + "Current memory": "Nuværende memory", + "Current user": "Aktuelle bruger", + "Current working directory, changeable in IFS Browser": "Aktuel arbejdsmappe, kan ændres i IFS Browser", + "Currently active": "Nuværende", + "Custom variables": "Bruger variable", + "Debug Server": "Debug Server", + "Debug server started.": "Debug server er startet.", + "Debug server stopped.": "Debug server er stoppet.", + "Debug Service": "Debug Service", + "Debug Service Certificate": "Debug Service certifikat", + "Debug Service Eclipse Instance Log": "Debug Service Eclipse Instance Log", + "Debug Service Log": "Debug Service Log", + "Debug service started.": "Debug service er startet.", + "Debug service stopped.": "Debug service er stoppet.", + "Debug Service submit options": "Debug Service submit options", + "Debugger {0} Status": "Debugger {0} status", + "Delete": "Slet", + "Deleting": "Sletter", + "Deleting {0} element(s)...": "Sletning af {0} element(er)...", + "Deletion canceled.": "Sletning afbrudt.", + "directory": "mappe", + "Directory of the file on the remote system": "Katalog over filen på fjernsystemet", + "Do you want to copy or move the selection to {0}?": "Vil du kopiere eller flytte det valgte til {0}?", + "Download certificate": "Hent certifikat", + "Download complete": "Hentning gennemført.", + "Download Logs": "Hent logfiler", + "Download To": "Download til", + "Downloading": "Henter", + "Downloading {0} members": "Downloading {0} members", + "Duplicate": "Kopier", + "Duplicate action \"{0}\"": "Kopier aktion \"{0}\"", + "Edit action \"{0}\"": "Revider aktion \"{0}\"", + "Enter find term or select one of the previous find terms.": "Indtast søgetekst eller vælg en af de tidligere søgninger.", + "Enter find term.": "Indtast søgetekst.", + "Enter IFS directory to find files in": "Indtast IFS mappe for søgning af filnavne", + "Enter IFS directory to search": "Indtast IFS mappe for søgning", + "Enter LIB/SPF/member.ext to search (member.ext is optional and can contain wildcards)": "Indtast LIB/SPF/member.ext til søgning (member.ext er valgfrit og kan indeholde mønstertegn)", + "Enter password for {0}@{1}": "Indtast kodeord for {0}@{1}", + "Enter search term or select one of the previous search terms.": "Indtast søgetekst eller vælg en af de tidligere søgninger.", + "Enter search term.": "Indtast søgetekst.", + "Enter the path to compare selected with": "Indtast stien til filen, der skal sammenlignes med", + "Enter username for {0}": "Indtast brugernavn for {0}", + "Environment": "Miljø", + "Environment for command to be executed in.": "Miljø som kommandoerne skal afvikles i.", + "error": "fejl", + "Error changing description for {0}! {1}": "Fejl ved ændring af objekt beskrivelse for {0}! {1}", + "Error changing member description! {0}": "Fejl ved ændring af member beskrivelse! {0}", + "Error copying {0}! {1}": "Fejl ved kopiering af {0}! {1}", + "Error copying member(s) to {0}: {1}": "Fejl ved kopiering af member(s) til {0}: {1}", + "Error copying object {0}! {1}": "Fejl ved kopiering af objekt {0}! {1}", + "Error creating IFS shortcut! {0}": "Fejl ved oprettelse af IFS genvej! {0}", + "Error creating member {0}: {1}": "Fejl ved oprettelse af member {0}: {1}", + "Error creating new directory! {0}": "Fejl ved oprettelse af ny mappe! {0}", + "Error creating new streamfile! {0}": "Fejl ved oprettelse af ny streamfile! {0}", + "Error creating source file! {0}": "Fejl ved oprettelse af source fil! {0}", + "Error deleting member! {0}": "Fejl ved sletning af member! {0}", + "Error deleting object! {0}": "Fejl ved sletning af objekt! {0}", + "Error deleting streamfile! {0}": "Fejl ved sletning af streamfile! {0}", + "Error downloading file(s): {0}": "Fejl under hentning: {0}", + "Error downloading member(s)! {0}": "Error downloading member(s)! {0}", + "Error finding filenames.": "Fejl ved søgning efter filnavne.", + "Error loading objects.": "Fejl ved læsning af objekter.", + "Error moving object {0}! {1}": "Fejl ved flytning af objekt {0}! {1}", + "Error renaming connection \"{0}\"! {1}": "Fejl ved omdøbning af forbindelsen \"{0}\"! {1}", + "Error renaming member! {0}": "Fejl ved omdøbning af member! {0}", + "Error renaming object {0}! {1}": "Fejl ved omdøbning af objekt {0}! {1}", + "Error renaming/moving {0}! {1}": "Fejl ved flytning/omdøbning af {0}! {1}", + "Error searching source members: {0}": "Fejl ved søgning i members: {0}", + "Error searching streamfiles.": "Fejl ved søgning i filer.", + "Error uploading content to member! {0}": "Fejl ved afsendelse af fil! {0}", + "Error uploading files! {0}": "Fejl ved upload af filer! {0}", + "errors": "fejl", + "Extension of the file (&EXTL for lowercase)": "Filtypen (&EXTL for små bogstaver)", + "Extension of the source member (&EXTL for lowercase)": "Type af source member (&EXTL for små bogstaver)", + "Extension/attribute of the object (&EXTL for lowercase)": "Objektets attribut (&EXTL for små bogstaver)", + "Extensions": "Typer", + "Failed to connect": "Fejl ved forbindelse", + "Failed to connect to {0} as {1}": "Fejl ved forbindelse til {0} som {1}", + "Failed to copy selection to {0}: {1}": "Fejl ved kopiering af det valgte til {0}: {1}", + "Failed to download logs to {0}. {1}": "Fejl ved download af logfiler til {0}. {1}", + "Failed to downloaded logs to {0}": "Fejl ved download af logfiler til {0}", + "Failed to get library list from command: {0}": "Fejl ved at hente bibliotekslisten fra kommando: {0}", + "Failed to get library list from command. Feature not installed.": "Fejl ved at hente bibliotekslisten fra kommando. Feature er ikke installeret.", + "Failed to move selection to {0}: {1}": "Fejl ved flytning af det valgte til {0}: {1}", + "Failed to read debug service detail file {0}: {1}": "Fejl ved læsning af debug service detail fil {0}: {1}", + "Failed to set {0} as current library: {1}": "Fejl ved skift til {0} som aktuelt bibliotek: {1}", + "Failed to start debug server: {0}": "Fejl ved start af debug server: {0}", + "Failed to start debug service: {0}": "Fejl ved start af debug service: {0}", + "Failed to stop debug server: {0}": "Fejl ved stop af debug server: {0}", + "Failed to stop debug service: {0}": "Fejl ved stop af debug service: {0}", + "Fetching member list for {0}.": "Henter member liste for {0}.", + "File type": "Filtypen", + "Files": "Filer", + "Filter": "Filter", + "Filter or new library to set as current library": "Filter eller nyt bibliotek til at sætte som aktuelle", + "Find {0}": "Finder {0}", + "Find in directory": "Find i mappe", + "Finding": "Finder", + "Finding filenames with \"{0}\" in {1}.": "Finder filnavne med \"{0}\" i {1}.", + "Folders": "Mapper", + "Full path of the file on the remote system": "Fulde sti på filen på fjernsystemet", + "Gathering logs...": "Henter logfiler...", + "Generate service certificate": "Generer service certifikat", + "Get started": "Dokumentation", + "getting streamfiles": "getting streamfiles", + "grep must be installed on the remote system for the IFS search.": "\"grep\" skal være installeret på systemet for IFS søgning.", + "Home directory": "Aktuelle mappe", + "Host or IP Address": "Værtsnavn eller IP adresse", + "Hostname or IP address from the current connection": "Host navn eller IP adresse fra den aktuelle forbindelse", + "How does one end up with {0} members?": "Hvordan i alverden ender man med {0} members?", + "IASP": "IASP", + "IFS shortcuts": "IFS genveje", + "ILE": "ILE", + "Incomplete configuration": "Ufuldstændig konfiguration", + "Invalid path: {0}. Use format LIB/OBJ": "Forkert sti: {0}. Brug formatet LIB/OBJ", + "Java Home": "Java Home", + "Java version {0} is not installed.": "Java version {0} is not installed.", + "Job": "Job", + "Job name": "Job navn", + "Job number": "Job nummer", + "Job status": "Job status", + "Job user": "Job bruger", + "JVM information": "JVM information", + "Last connection": "Seneste forbindelse", + "Last IBM i connections": "Seneste IBM i forbindelser", + "Last used: {0}": "Senest brugt: {0}", + "Length": "Længde", + "Library {0} does not exist.": "Bibliotek {0} findes ikke.", + "Library {0} was added to the library list.": "Bibliotek {0} blev tilføjet til bibliotekslisten.", + "Library {0} was already in the library list.": "Bibliotek {0} er allerede i bibliotekslisten.", + "Library {0} was removed from the library list.": "Bibliotek {0} blev fjernet fra bibliotekslisten.", + "Library is too long.": "Bibioteksnavn er for langt.", + "Library list": "Biblioteks listen", + "Library list delimited by comma": "Liste af biblioteker adskilt af komma", + "Library list delimited by space": "Liste af biblioteker adskilt af mellemrum", + "Library list were validated without any errors.": "Bibliotekslisten blev valideret uden fejl.", + "Library must be 10 chars or less.": "Biblioteksnavn må være 10 tegn eller mindre.", + "Library name too long.": "Biblioteksnavn er for langt.", + "Library name where the object lives (&LIBRARYL for lowercase)": "Biblioteksnavn med objektet (&LIBRARYL for små bogstaver)", + "Library name where the source member lives (&OPENLIBL for lowercase)": "Biblioteksnavn med source member (&OPENLIBL for små bogstaver)", + "Library to add": "Tilføj bibliotek", + "Lines": "Linier", + "Listening on port(s)": "Lytter på port(e)", + "Loading debugger information...": "Henter debugger information...", + "Local certificate": "Lokalt certifikat", + "Local certificate doesn't match remote": "Lokalt certifikat matcher ikke værtens", + "Local certificate matches remote": "Lokalt certifikat matcher værtens", + "Local certificate not found": "Lokalt certifikat er ikke fundet", + "Local File (Workspace)": "Lokal fil (workspace)", + "Login Settings: \"{0}\"": "Login Indstillinger: \"{0}\"", + "Lowercase file type": "Filtypen med små bogstaver", + "Lowercase name of the object": "Navn på objektet med små bogstaver", + "Maximum allowed memory": "Maksimalt tilladt memory", + "Member": "Member", + "Member {0} already exists!": "Member {0} eksisterer allerede!", + "Member was uploaded.": "Fil blev sendt til member.", + "Members": "Members", + "Members download cancelled.": "Members download cancelled.", + "Members download complete.": "Members download complete.", + "Memory pool": "Memory pulje", + "Modified": "Ændret", + "Move": "Flyt", + "Move object": "Flyt objekt", + "Moved object {0} {1} to {2}.": "Flyttede objekt {0} {1} til {2}.", + "Moved object {0} {1} to {2}. Refresh object browser.": "Flyttede objekt {0} {1} til {2}. Opfrisk object browser.", + "Moving object {0} {1} to {2}...": "Flytter objekt {0} {1} til {2}...", + "Name of new library": "Navn på nyt bibliotek", + "Name of new path": "Nyt navn", + "Name of new source file": "Navn på ny source fil", + "Name of new source member (member.ext)": "Navn på nyt member (member.ext)", + "Name of new streamfile": "Navn på ny streamfile", + "Name of profile": "Navn på profil", + "Name of the file (&NAMEL for lowercase)": "Navn på filen (&NAMEL for små bogstaver)", + "Name of the file, including the extension": "Navn på filen, inklusive filtypen", + "Name of the object (&NAMEL for lowercase)": "Navn på objektet (&NAMEL for små bogstaver)", + "Name of the parent directory or source file": "Navn på forrige mappe eller source fil", + "Name of the source member (&OPENMBRL for lowercase)": "Navn på source member (&OPENMBRL for små bogstaver)", + "New Action": "Opret", + "New connection name": "Navn på ny forbindelse", + "New connection name must be different from its current name": "Nyt forbindelses navn skal være forskelligt fra det nuværende navn", + "New member name must be different from it's current name": "Nyt member navn skal være forskelligt fra det nuværende navn", + "New path for copy of source member": "Ny sti til kopiering af source member", + "No": "Nej", + "No connection named \"{0}\" was found": "Ingen forbindelse med navnet \"{0}\" blev fundet", + "No file is open or selected": "Der er ikke åbnet eller valgt nogen fil til sammenligning.", + "No files or folders selected for upload.": "Ingen filer eller mapper er valgt til upload.", + "No logs to download": "Ingen logfiler til download", + "No members to search.": "Der er ingen members at søge i.", + "No parameters for connection \"{0}\" was found": "Ingen parametre til forbindelsen \"{0}\" blev fundet", + "No refresh": "Ingen opfriskning", + "No results found finding filenames with \"{0}\" in {1}.": "Ingen resultater blev fundet ved søgning efter filnavne med \"{0}\" i {1}.", + "No results found searching for \"{0}\" in {1}.": "Søgning efter \"{0}\" i {1} gav intet resultat.", + "Not connected to an IBM i": "Ikke forbundet til en IBM i", + "Not found in {0}": "Ikke fundet i {0}", + "Object": "Objekt", + "Object description must be 50 chars or less.": "Objekt beskrivelse må være 50 tegn eller mindre.", + "Object filters": "Objekt filtre", + "Object name must be 10 chars or less.": "Objektnavn må være 10 tegn eller mindre.", + "Objects in the QSYS file system": "Objekter i QSYS filsystemet", + "Offline": "Offline", + "Oh no! The sandbox is down.": "Åh nej! \"Sandkassen\" er ikke tilgængelig.", + "Once you delete the directory, it cannot be restored.\nPlease type \"{0}\" to confirm deletion.": "Når du har slettet mappen, kan den ikke retableres.\nVenligst tast \"{0}\" for at bekræfte sletning.", + "Online": "Online", + "Only provide a password if you want to update an existing one or set a new one.": "Angiv kun et kodeord hvis du ønsker at ændre det gemte eller oprette et nyt.", + "Only provide a private key if you want to update from the existing one or set one.": "Angiv kun en privat nøgle hvis du ønsker at opdatere den aktuelle eller indstille en ny.", + "Only provide either the password or a private key - not both.": "Angiv enten kodeord eller privat nøgle - ikke begge dele.", + "Open": "Open", + "Open configuration": "Åbn konfiguration", + "Open official Forum": "Forum", + "OpenSSH, RFC4716 and PPK formats are supported.": "OpenSSH, RFC4716 og PPK formater understøttes.", + "Overview": "Overblik", + "Overwrite": "Erstat", + "Overwrite all": "Erstat alle", + "Owner": "Ejer", + "Parent": "Container", + "PASE": "PASE", + "Password": "Kodeord", + "Password for server": "Kodeord for server", + "Password updated and will be used for \"{0}\".": "Kodeord er opdateret og bruges for \"{0}\".", + "Path of new folder": "Sti til ny mappe", + "Path to IFS directory": "Sti til IFS mappe", + "Please connect to an IBM i": "Venligst opret forbindelse til en IBM i", + "Please enter value in form LIB/SPF/member.ext": "Venligst indtast værdi på formatet LIB/SPF/member.ext", + "Port (SSH)": "Port (SSH)", + "Previous find terms": "Forrige søgninger", + "Previous search terms": "Forrige søgninger", + "Private Key": "Privat nøgle", + "Private key updated and will be used for \"{0}\".": "Privat nøgle er opdateret og bruges for \"{0}\".", + "QShell": "QSHELL", + "Recently used": "Tidligere", + "Refresh": "Opfrisk", + "Relative path of the streamfile from the working directory or workspace": "Relativ sti til streamfilen fra arbejdsbiblioteket eller arbejdsområdet", + "Remote certificate not found": "Værtens certifikat er ikke fundet", + "Remote service certificate exists": "Remote service certifikat eksisterer", + "Remove auth methods": "Fjern kodeord+nøgle", + "Rename {0}": "Omdøb member {0}", + "Rename connection \"{0}\"": "Omdøb forbindelsen \"{0}\"", + "Rename object": "Omdøb objekt", + "Renamed object {0} {1} to {2}.": "Omdøbte objekt {0} {1} til {2}.", + "Renaming object {0} {1} to {2}...": "Omdøber objekt {0} {1} til {2}...", + "Report an Issue": "Opret en fejlrapport", + "Reset to default": "Nulstil til standard", + "Restart": "Genstart", + "Retry": "Prøv igen", + "Review Issues": "Se fejlrapporter", + "Run on protected/read only": "Må afvikles på sikret/skrive-beskyttet", + "Runs as an ILE command": "Afvikles som ILE kommando", + "Runs the command in the PASE environment": "Afvikles som kommando i PASE", + "Runs the command through QShell": "Afvikles som kommando i QSHELL", + "Save": "Gem", + "Save Password": "Gem kodeord", + "Saved current settings to profile \"{0}\".": "Gemte aktuelle indstillinger til profil \"{0}\".", + "Search {0}": "Søg i {0}", + "Search {0} {1}": "Søg i {0} {1}", + "Search directory": "Søg mappe", + "Search source file": "Søg source fil", + "Searching": "Søgning", + "Select an action to duplicate": "Vælg en aktion til kopiering", + "Select IFS shortcut to remove": "Vælg IFS genvej til sletning", + "Select the logs you would like to download": "Vælg de logfiler du vil downloade", + "Select the settings to copy from \"{0}\" to \"{1}\"": "Vælg indstillingerne, der skal kopieres fra \"{0}\" til \"{1}\"", + "sending {0} directory...": "sender {0} mappe(r)...", + "sending {0} file(s)...": "sender {0} file(r)...", + "shortcut": "genvej", + "Size": "Størrelse", + "Skip": "Spring over", + "Skip all": "Spring alle over", + "Sorry, but the sandbox is offline right now. Try again another time.": "Desværre, men \"Sandkassen\" er ikke tilgængelig lige nu. Prøv igen lidt senere.", + "Source file name where the source member lives (&OPENSPFL for lowercase)": "Source fil navn med source member (&OPENSPFL for små bogstaver)", + "Source filename must be 10 chars or less.": "Source filnavn må være 10 tegn eller mindre.", + "Source members in the QSYS file system": "Source members i QSYS filsystemet", + "Start": "Start", + "Start time": "Start tid", + "Starting debug server...": "Starter debug server...", + "Starting debug service...": "Starter debug service...", + "Status": "Status", + "Still searching \"{0}\" in {1}...": "Søger stadig efter \"{0}\" i {1}...", + "Stop": "Stop", + "Stopping debug server...": "Stopper debug server...", + "Stopping debug service...": "Stopper debug service...", + "stored": "gemt", + "streamfile": "fil", + "Streamfile": "Streamfile", + "Streamfiles in the IFS": "Filer i det integrerede filsystem (IFS)", + "Subsystem": "Subsystem", + "Successfully downloaded logs to {0}": "Logfiler blev downloadet til {0}", + "Switched to profile \"{0}\".": "Skiftede til profilen \"{0}\".", + "Text": "Tekst", + "Thanks for trying the Code for IBM i Sandbox!": "Tak for at afprøve Code for IBM i Sandbox!", + "The browser level to refresh after the action is done": "Liste niveauet for opfriskning efter aktion er udført.", + "The directory has file(s) with unsaved changes.": "Mappen har filer med ikke-gemte ændringer.", + "The entire browser is refreshed": "Hele vinduet bliver opfrisket", + "The file has unsaved changes.": "Filen har ikke-gemte ændringer.", + "The file path could not be parsed.": "Filstien kunne ikke fortolkes.", + "The following libraries were removed from the updated library list as they are invalid: {0}": "De følgende biblioteker blev fjernet fra den opdaterede biblioteksliste, da de ikke er gyldige: {0}", + "The member has unsaved changes.": "Memberet har ikke-gemte ændringer.", + "The parent container is refreshed": "Den aktuelle container bliver opfrisket", + "The parent filter is refreshed": "Det aktuelle filter bliver opfrisket", + "The same as &CURLIB": "Det samme som &CURLIB", + "The types of files this action can support.": "Typer understøttet af denne aktion.", + "This is taking a while because there are {0} members. Searching \"{1}\" in {2} still.": "Dette kan tage noget tid da der er {0} members. Søger stadig efter \"{1}\" i {2}.", + "This Visual Studio Code instance is already connected to a server.": "Denne Visual Studio Code instans er allerede forbundet til en server.", + "This will reset the User Library List, working directory and Custom Variables back to the defaults.": "Dette vil nulstille bibliotekslisten, aktuelle mappe og Bruger Variable.", + "Type": "Type", + "Type of the object (&TYPEL for lowercase)": "Typen af objektet (&TYPEL for små bogstaver)", + "Unable to delete protected directories from the IFS Browser!\n{0}": "Ikke tilladt at slette valgte mapper fra IFS Browser.\n{0}", + "Upload": "Upload", + "Upload completed.": "Upload er udført.", + "Use the Server Browser to select which system to connect to.": "Brug Servere vinduet til at vælge hvilket system, der skal forbindes til.", + "User directory": "Bruger mappe", + "User for server": "Bruger for server", + "Username": "Brugernavn", + "Username for connection": "Brugernavn for forbindelsen", + "Valid parameters for SBMJOB": "Valid parameters for SBMJOB", + "What do you want to upload?": "Hvad ønsker du at uploade?", + "What's so special about \"{0}\" anyway?": "Hvad er egentligt så specielt med \"{0}\"?", + "While you wait, why not make some tea?": "Hvad med at hente en kop kaffe mens du venter?", + "Why was six afraid of seven?": "Der er 10 slags mennesker - dem der forstår binært og dem, der ikke gør!", + "Work with Actions": "Arbejd med Aktioner", + "Working directory changed to {0}.": "Aktuelle mappe er skiftet til {0}.", + "Would you like to add the new library to the library list?": "Vil du tilføje det nyt bibliotek til bibliotekslisten?", + "Wow. This really is taking a while. Let's hope you get the result you want.": "Uha, dette tager virkelig lang tid. Lad os håbe du får det ønskede resultat.", + "Yes": "Ja", + "You are using this system at your own risk. Do not share any sensitive or private information.": "Du bruger dette system på egen risiko. Del ingen følsomme eller private informationer.", + "Your changes will be discarded": "Dine ændringer vil blive kasseret" +} \ No newline at end of file diff --git a/l10n/bundle.l10n.de.json b/l10n/bundle.l10n.de.json new file mode 100644 index 000000000..914be92f3 --- /dev/null +++ b/l10n/bundle.l10n.de.json @@ -0,0 +1,408 @@ +{ + " (Press \"Escape\" to cancel)": " (Drücken Sie „Escape“, um abzubrechen)“", + " (previous connection)": " (vorherige Verbindung)", + "\"{0}\" in {1}.": "\"{0}\" in {1}.", + "\"findutils\" must be installed on the remote system.": "\"findutils\" must be installed on the remote system.", + "(current library)": "(aktuelle Bibliothek)", + "(in ASP {0})": "(in ASP {0})", + "{0} {1} occurred while listing files.": "{0} {1} ist beim Auflisten von Dateien aufgetreten.", + "{0} already exists.\nDo you want to replace it?": "{0} existiert bereits.\nMöchten Sie es ersetzen?", + "{0} file(s) contain(s) '{1}'": "{0} file(s) contain(s) '{1}'", + "{0} file(s) named '{1}'": "{0} file(s) named '{1}'", + "{0} is already current library.": "{0} ist bereits aktuelle Bibliothek.", + "{0} is not a directory.": "{0} ist kein Verzeichnis.", + "{0} member(s) copied to streamfile(s) in {1}.": "{0} Quelle(n) wurde(n) in Datei(en) in {1} kopiert.", + "{0} not found under {1}": "{0} nicht gefunden unter {1}", + "{0} was copied to {1}.": "{0} wurde nach {1} kopiert.", + "{0} was moved to {1}.": "{0} wurde nach {1} verschoben.", + "{0} was renamed to {1}.": "{0} wurde in {1} umbenannt.", + "{0} was the working directory; it is now {1}.": "{0} war das Arbeitsverzeichnis; es ist jetzt {1}.", + "$(trash) Clear list": "$(trash) Liste löschen", + "A comma delimited list of extensions for this action. This can be a member extension, a streamfile extension, an object type or an object attribute": "Eine durch Kommas getrennte Liste von Erweiterungen für diese Aktion. Dies kann eine Quellenerweiterung, eine Dateierweiterung, ein Objekttyp oder ein Objektattribut sein", + "Action name": "Aktionsname", + "Actions for local files in the VS Code Workspace.": "Aktionen für lokale Dateien im VS Code Arbeitsbereich.", + "Active job": "Aktiver Job", + "Allows the execution of this Action on protected or read only targets": "Ermöglicht die Ausführung dieser Aktion auf geschützten oder schreibgeschützten Zielen", + "Are you sure you want overwrite member {0}?": "Sind Sie sicher, dass Sie Quelle {0} überschreiben möchten?", + "Are you sure you want to delete {0}?": "Sind Sie sicher, dass Sie {0} löschen möchten?", + "Are you sure you want to delete the \"{0}\" profile?": "Sind Sie sicher, dass Sie das Profil \"{0}\" löschen möchten?", + "Are you sure you want to delete the {0} selected files?": "Sind Sie sicher, dass Sie die {0} ausgewählten Dateien löschen möchten?", + "Are you sure you want to delete the action \"{0}\"?": "Sind Sie sicher, dass Sie die Aktion \"{0}\" löschen möchten?", + "Are you sure you want to delete the connection \"{0}\"?": "Sind Sie sicher, dass Sie die Verbindung \"{0}\" löschen möchten?", + "Are you sure you want to delete these {0} connections?": "Sind Sie sicher, dass Sie diese {0} Verbindungen löschen möchten?", + "Are you sure you want to delete these {0} elements?": "Sind Sie sicher, dass Sie diese {0} Elemente löschen möchten?", + "Attribute": "Attribut", + "Authentication methods removed for \"{0}\".": "Authentifizierungsmethoden für \"{0}\" entfernt.", + "Below are available variables based on the Type you have select below. You can specify different commands on each line. Each command run is stateless and run in their own job.": "Nachfolgend finden Sie verfügbare Variablen basierend auf dem Typ, den Sie unten ausgewählt haben. Sie können in jeder Zeile unterschiedliche Befehle angeben. Jede Befehlsausführung ist zustandslos und wird in einem eigenen Job ausgeführt.", + "Branch library, based on the current branch": "Branchbibliothek, basierend auf dem aktuellen Branch", + "Browser": "Browser", + "Cancel": "Stornieren", + "Cannot copy member to itself!": "Quelle kann nicht in sich selbst kopiert werden!", + "Cannot create library \"{0}\": {1}": "Bibliothek \"{0}\" kann nicht erstellt werden", + "Cannot search listings using *ALL.": "Einträge mit *ALL können nicht durchsucht werden.", + "CCSID": "CCSID", + "Certificate needs to be regenerated": "Certificate needs to be regenerated", + "Change current library": "Aktuelle Bibliothek ändern", + "Change member description for {0}, *BLANK for no description": "Ändern Sie die Quellenbeschreibung für {0}, *BLANK für keine Beschreibung", + "Change object description for {0}, *BLANK for no description": "Objektbeschreibung für {0} ändern, *BLANK für keine Beschreibung", + "Changed": "Geändert", + "Changed current library to {0}.": "Aktuelle Bibliothek in {0} geändert.", + "Changed object description for {0} {1}.": "Objektbeschreibung für {0} {1} geändert.", + "Changing library list (can use \"*reset\")": "Bibliotheksliste ändern (can use \"*reset\")", + "Changing working directory": "Arbeitsverzeichnis ändern", + "Cleared list.": "Liste gelöscht.", + "Code for IBM i Log": "Code for IBM i Log", + "Command profiles": "Befehlsprofile", + "Command(s) to run": "Befehl(e) zum Ausführen", + "Compare with": "Compare with", + "Compare with Active File": "Compare with Active File", + "Connect": "Verbinden", + "Connect to IBM i": "Stellen Sie eine Verbindung zu IBM i her", + "Connection \"{0}\" already exists": "Verbindung \"{0}\" existiert bereits", + "Connection \"{0}\" already exists.": "Verbindung \"{0}\" existiert bereits.", + "Connection profiles": "Verbindungsprofile", + "Connection to {0} ended as no password was provided.": "Die Verbindung zu {0} wurde beendet, da kein Passwort angegeben wurde.", + "Continue": "Weitermachen", + "Copied object {0} {1} to {2}.": "Objekt {0} {1} nach {2} kopiert.", + "Copied object {0} {1} to {2}. Refresh object browser.": "Objekt {0} {1} nach {2} kopiert. Objektbrowser aktualisieren.", + "Copy": "Kopieren", + "Copy connection \"{0}\"": "Verbindung \"{0}\" kopieren", + "copying to streamfiles": "Kopieren in Dateien", + "Create action": "Aktion erstellen", + "Create duplicate object to new library/object": "Erstellen Sie ein doppeltes Objekt für eine neue Bibliothek/ein neues Objekt", + "Create new filter": "Neuen Filter erstellen", + "Create or maintain Actions. Actions are grouped by the type of file/object they target.": "Erstellen oder verwalten Sie Aktionen. Aktionen werden nach der Art der Datei/des Objekts gruppiert, auf die sie abzielen.", + "Created": "Erstellt", + "Created by": "Erstellt von", + "Creating member {0}...": "Quelle {0} wird erstellt...", + "Creating source file {0}.": "Quelldatei {0} wird erstellt.", + "Creating streamfile {0}.": "Datei {0} wird erstellt.", + "current": "aktuell", + "Current Git branch": "Aktueller Git-Branch", + "Current library, changeable in Library List": "Aktuelle Bibliothek, änderbar in der Bibliotheksliste", + "Current memory": "Aktueller Speicher", + "Current user": "Aktueller Benutzer", + "Current working directory, changeable in IFS Browser": "Aktuelles Arbeitsverzeichnis, änderbar im IFS Browser", + "Currently active": "Derzeit aktiv", + "Custom variables": "Benutzerdefinierte Variablen", + "Debug Server": "Debug-Server", + "Debug server started.": "Debug-Server gestartet.", + "Debug server stopped.": "Debug-Server gestoppt.", + "Debug Service": "Debug-Dienst", + "Debug Service Certificate": "Debug-Service-Zertifikat", + "Debug Service Eclipse Instance Log": "Debug Service Eclipse Instance Log", + "Debug Service Log": "Debug Service Log", + "Debug service started.": "Debug-Dienst gestartet.", + "Debug service stopped.": "Der Debug-Dienst wurde gestoppt.", + "Debug Service submit options": "Debug-Service-Übermittlungsoptionen", + "Debugger {0} Status": "Debugger-{0}-Status", + "Delete": "Löschen", + "Deleting": "Löschen", + "Deleting {0} element(s)...": "{0} Element(e) werden gelöscht...", + "Deletion canceled.": "Löschung abgebrochen.", + "directory": "Verzeichnis", + "Directory of the file on the remote system": "Verzeichnis der Datei auf dem Remote-System", + "Do you want to copy or move the selection to {0}?": "Möchten Sie die Auswahl nach {0} kopieren oder verschieben?", + "Download certificate": "Zertifikat herunterladen", + "Download complete": "Download abgeschlossen", + "Download Logs": "Download Logs", + "Download To": "Download To", + "Downloading": "wird heruntergeladen", + "Downloading {0} members": "{0} Quellen werden heruntergeladen", + "Duplicate": "Duplikat", + "Duplicate action \"{0}\"": "Doppelte Aktion \"{0}\"", + "Edit action \"{0}\"": "Aktion bearbeiten \"{0}\"", + "Enter find term or select one of the previous find terms.": "Enter find term or select one of the previous find terms.", + "Enter find term.": "Enter find term.", + "Enter IFS directory to find files in": "Enter IFS directory to find files in", + "Enter IFS directory to search": "Geben Sie das zu durchsuchende IFS-Verzeichnis ein", + "Enter LIB/SPF/member.ext to search (member.ext is optional and can contain wildcards)": "Geben Sie LIB/SPF/member.ext ein, um zu suchen (member.ext ist optional und kann Platzhalter enthalten).", + "Enter password for {0}@{1}": "Geben Sie das Passwort für {0}@{1} ein.", + "Enter search term or select one of the previous search terms.": "Geben Sie den Suchbegriff ein oder wählen Sie einen der vorherigen Suchbegriffe aus.", + "Enter search term.": "Geben Sie einen Suchbegriff ein.", + "Enter the path to compare selected with": "Enter the path to compare selected with", + "Enter username for {0}": "Geben Sie den Benutzernamen für {0} ein", + "Environment": "Umfeld", + "Environment for command to be executed in.": "Umgebung, in der der Befehl ausgeführt werden soll.", + "error": "Fehler", + "Error changing description for {0}! {1}": "Fehler beim Ändern der Beschreibung für {0}! {1}", + "Error changing member description! {0}": "Fehler beim Ändern der Quellenbeschreibung! {0}", + "Error copying {0}! {1}": "Fehler beim Kopieren von {0}! {1}", + "Error copying member(s) to {0}: {1}": "Fehler beim Kopieren von Quelle(n) nach {0}: {1}", + "Error copying object {0}! {1}": "Fehler beim Kopieren des Objekts {0}! {1}", + "Error creating IFS shortcut! {0}": "Fehler beim Erstellen der IFS-Verknüpfung! {0}", + "Error creating member {0}: {1}": "Fehler beim Erstellen von Quelle {0}: {1}", + "Error creating new directory! {0}": "Fehler beim Erstellen eines neuen Verzeichnisses! {0}", + "Error creating new streamfile! {0}": "Fehler beim Erstellen einer neuen Datei! {0}", + "Error creating source file! {0}": "Fehler beim Erstellen der Quelldatei! {0}", + "Error deleting member! {0}": "Fehler beim Löschen der Quelle! {0}", + "Error deleting object! {0}": "Fehler beim Löschen des Objekts! {0}", + "Error deleting streamfile! {0}": "Fehler beim Löschen der Datei! {0}", + "Error downloading file(s): {0}": "Fehler beim Herunterladen der Datei(en): {0}", + "Error downloading member(s)! {0}": "Fehler beim Herunterladen der Quellen! {0}", + "Error finding filenames.": "Error finding filenames.", + "Error loading objects.": "Fehler beim Laden von Objekten.", + "Error moving object {0}! {1}": "Fehler beim Verschieben des Objekts {0}! {1}", + "Error renaming connection \"{0}\"! {1}": "Fehler beim Umbenennen der Verbindung \"{0}\"! {1}", + "Error renaming member! {0}": "Fehler beim Umbenennen der Quelle! {0}", + "Error renaming object {0}! {1}": "Fehler beim Umbenennen des Objekts {0}! {1}", + "Error renaming/moving {0}! {1}": "Fehler beim Umbenennen/Verschieben von {0}! {1}", + "Error searching source members: {0}": "Fehler bei der Suche nach Quelle: {0}", + "Error searching streamfiles.": "Fehler beim Durchsuchen der Dateien.", + "Error uploading content to member! {0}": "Fehler beim Hochladen von Inhalten für die Quelle! {0}", + "Error uploading files! {0}": "Fehler beim Hochladen der Dateien! {0}", + "errors": "Fehler", + "Extension of the file (&EXTL for lowercase)": "Erweiterung der Datei (&EXTL for lowercase)", + "Extension of the source member (&EXTL for lowercase)": "Erweiterung der Quelle (&EXTL for lowercase)", + "Extension/attribute of the object (&EXTL for lowercase)": "Erweiterung/Attribut des Objekts (&EXTL for lowercase)", + "Extensions": "Erweiterungen", + "Failed to connect": "Verbindung nicht möglich", + "Failed to connect to {0} as {1}": "Es konnte keine Verbindung zu {0} als {1} hergestellt werden.", + "Failed to copy selection to {0}: {1}": "Auswahl konnte nicht nach {0} kopiert werden: {1}", + "Failed to download logs to {0}. {1}": "Failed to download logs to {0}. {1}", + "Failed to downloaded logs to {0}": "Failed to downloaded logs to {0}", + "Failed to get library list from command: {0}": "Bibliotheksliste konnte nicht mit Befehl abgerufen werden: {0}", + "Failed to get library list from command. Feature not installed.": "Bibliotheksliste konnte nicht vom Befehl abgerufen werden. Funktion nicht installiert.", + "Failed to move selection to {0}: {1}": "Auswahl konnte nicht nach {0} verschoben werden: {1}", + "Failed to read debug service detail file {0}: {1}": "Fehler beim Lesen der Debug-Service-Detaildatei {0}: {1}", + "Failed to set {0} as current library: {1}": "{0} konnte nicht als aktuelle Bibliothek festgelegt werden: {1}", + "Failed to start debug server: {0}": "Fehler beim Starten des Debug-Servers: {0}", + "Failed to start debug service: {0}": "Debug-Dienst konnte nicht gestartet werden: {0}", + "Failed to stop debug server: {0}": "Fehler beim Stoppen des Debug-Servers: {0}", + "Failed to stop debug service: {0}": "Der Debug-Dienst konnte nicht gestoppt werden: {0}", + "Fetching member list for {0}.": "Quellenliste für {0} wird abgerufen.", + "File type": "Filtertyp", + "Files": "Dateien", + "Filter": "Filter", + "Filter or new library to set as current library": "Filter oder neue Bibliothek, die als aktuelle Bibliothek festgelegt werden soll", + "Find {0}": "Find {0}", + "Find in directory": "Find in directory", + "Finding": "Finding", + "Finding filenames with \"{0}\" in {1}.": "Finding filenames with \"{0}\" in {1}.", + "Folders": "Ordner", + "Full path of the file on the remote system": "Vollständiger Pfad der Datei auf dem Remote-System", + "Gathering logs...": "Gathering logs...", + "Generate service certificate": "Servicezertifikat generieren", + "Get started": "Loslegen", + "getting streamfiles": "Dateien abrufen", + "grep must be installed on the remote system for the IFS search.": "Für die IFS-Suche muss grep auf dem Remote-System installiert sein.", + "Home directory": "Home-Verzeichnis", + "Host or IP Address": "Host oder IP-Adresse", + "Hostname or IP address from the current connection": "Hostname oder IP-Adresse der aktuellen Verbindung", + "How does one end up with {0} members?": "Wie kommt man zu {0} Quellen?", + "IASP": "IASP", + "IFS shortcuts": "IFS-Verknüpfungen", + "ILE": "ILE", + "Incomplete configuration": "Incomplete configuration", + "Invalid path: {0}. Use format LIB/OBJ": "Ungültiger Pfad: {0}. Verwenden Sie das Format LIB/OBJ", + "Java Home": "Java-Home Pfad", + "Java version {0} is not installed.": "Java version {0} is not installed.", + "Job": "Job", + "Job name": "Job Name", + "Job number": "Job Nummer", + "Job status": "Job Status", + "Job user": "Job Benutzer", + "JVM information": "JVM-Informationen", + "Last connection": "Letzte Verbindung", + "Last IBM i connections": "Letzte IBM i-Verbindungen", + "Last used: {0}": "Zuletzt verwendet: {0}", + "Length": "Länge", + "Library {0} does not exist.": "Bibliothek {0} existiert nicht.", + "Library {0} was added to the library list.": "Bibliothek {0} wurde zur Bibliotheksliste hinzugefügt.", + "Library {0} was already in the library list.": "Bibliothek {0} war bereits in der Bibliotheksliste.", + "Library {0} was removed from the library list.": "Die Bibliothek {0} wurde aus der Bibliotheksliste entfernt.", + "Library is too long.": "Die Bibliothek ist zu lang.", + "Library list": "Bibliotheksliste", + "Library list delimited by comma": "Durch Komma getrennte Bibliotheksliste", + "Library list delimited by space": "Durch Leerzeichen getrennte Bibliotheksliste", + "Library list were validated without any errors.": "Die Bibliotheksliste wurde ohne Fehler validiert.", + "Library must be 10 chars or less.": "Die Bibliothek darf höchstens 10 Zeichen lang sein.", + "Library name too long.": "Bibliotheksname zu lang.", + "Library name where the object lives (&LIBRARYL for lowercase)": "Bibliotheksname, in dem sich das Objekt befindet (&LIBRARYL for lowercase)", + "Library name where the source member lives (&OPENLIBL for lowercase)": "Bibliotheksname, in dem sich die Quelle befindet (&OPENLIBL for lowercase)", + "Library to add": "Bibliothek zum Hinzufügen", + "Lines": "Linien", + "Listening on port(s)": "Hört auf Port(s)", + "Loading debugger information...": "Debugger-Informationen werden geladen...", + "Local certificate": "Lokales Zertifikat", + "Local certificate doesn't match remote": "Lokales Zertifikat stimmt nicht mit Remote-Zertifikat überein", + "Local certificate matches remote": "Das lokale Zertifikat stimmt mit dem Remote-Zertifikat überein", + "Local certificate not found": "Lokales Zertifikat nicht gefunden", + "Local File (Workspace)": "Lokale Datei (Arbeitsbereich)", + "Login Settings: \"{0}\"": "Anmeldeeinstellungen: \"{0}\"", + "Lowercase file type": "Dateityp in Kleinbuchstaben", + "Lowercase name of the object": "Kleingeschriebener Name des Objekts", + "Maximum allowed memory": "Maximal zulässiger Speicher", + "Member": "Quelle", + "Member {0} already exists!": "Quelle {0} existiert bereits!", + "Member was uploaded.": "Quelle wurde hochgeladen.", + "Members": "Quellen", + "Members download cancelled.": "Download für Quellen abgebrochen.", + "Members download complete.": "Download für Quellen abgeschlossen.", + "Memory pool": "Speicherpool", + "Modified": "Geändert", + "Move": "Bewegen", + "Move object": "Objekt verschieben", + "Moved object {0} {1} to {2}.": "Objekt {0} {1} nach {2} verschoben.", + "Moved object {0} {1} to {2}. Refresh object browser.": "Objekt {0} {1} nach {2} verschoben. Objektbrowser aktualisieren.", + "Moving object {0} {1} to {2}...": "Objekt {0} {1} nach {2} verschieben...", + "Name of new library": "Name der neuen Bibliothek", + "Name of new path": "Name des neuen Pfads", + "Name of new source file": "Name der neuen Quelldatei", + "Name of new source member (member.ext)": "Name des neuen Quelle (member.ext)", + "Name of new streamfile": "Name der neuen Datei", + "Name of profile": "Name des Profils", + "Name of the file (&NAMEL for lowercase)": "Name der Datei (&NAMEL for lowercase)", + "Name of the file, including the extension": "Name der Datei, einschließlich der Erweiterung", + "Name of the object (&NAMEL for lowercase)": "Name des Objekts (&NAMEL for lowercase)", + "Name of the parent directory or source file": "Name des übergeordneten Verzeichnisses oder der Quelldatei", + "Name of the source member (&OPENMBRL for lowercase)": "Name der Quelle (&OPENMBRL for lowercase)", + "New Action": "Neue Aktion", + "New connection name": "Neuer Verbindungsname", + "New connection name must be different from its current name": "Der neue Verbindungsname muss sich vom aktuellen Namen unterscheiden", + "New member name must be different from it's current name": "Der Name der neuen Quelle muss sich vom aktuellen Namen unterscheiden", + "New path for copy of source member": "Neuer Pfad für die Kopie der Quelle", + "No": "Nein", + "No connection named \"{0}\" was found": "Es wurde keine Verbindung mit dem Namen \"{0}\" gefunden", + "No file is open or selected": "No file is open or selected", + "No files or folders selected for upload.": "Keine Dateien oder Ordner zum Hochladen ausgewählt.", + "No logs to download": "No logs to download", + "No members to search.": "Keine Quellen zum Suchen vorhanden.", + "No parameters for connection \"{0}\" was found": "Für die Verbindung \"{0}\" wurden keine Parameter gefunden", + "No refresh": "Keine Aktualisierung", + "No results found finding filenames with \"{0}\" in {1}.": "No results found finding filenames with \"{0}\" in {1}.", + "No results found searching for \"{0}\" in {1}.": "Für die Suche nach \"{0}\" in {1} wurden keine Ergebnisse gefunden.", + "Not connected to an IBM i": "Nicht mit einem IBM i verbunden", + "Not found in {0}": "Nicht gefunden in {0}", + "Object": "Objekt", + "Object description must be 50 chars or less.": "Die Objektbeschreibung darf maximal 50 Zeichen lang sein.", + "Object filters": "Objektfilter", + "Object name must be 10 chars or less.": "Der Objektname darf höchstens 10 Zeichen lang sein.", + "Objects in the QSYS file system": "Objekte im QSYS-Dateisystem", + "Offline": "Offline", + "Oh no! The sandbox is down.": "Ach nein! Die Sandbox ist ausgefallen.", + "Once you delete the directory, it cannot be restored.\nPlease type \"{0}\" to confirm deletion.": "Sobald Sie das Verzeichnis gelöscht haben, kann es nicht wiederhergestellt werden.\nBitte geben Sie \"{0}\" ein, um den Löschvorgang zu bestätigen.", + "Online": "Online", + "Only provide a password if you want to update an existing one or set a new one.": "Geben Sie nur dann ein Passwort ein, wenn Sie ein bestehendes aktualisieren oder ein neues festlegen möchten.", + "Only provide a private key if you want to update from the existing one or set one.": "Geben Sie nur dann einen privaten Schlüssel an, wenn Sie vom vorhandenen aktualisieren oder einen festlegen möchten.", + "Only provide either the password or a private key - not both.": "Geben Sie nur entweder das Passwort oder einen privaten Schlüssel an – nicht beides.", + "Open": "Open", + "Open configuration": "Konfiguration öffnen", + "Open official Forum": "Offizielles Forum öffnen", + "OpenSSH, RFC4716 and PPK formats are supported.": "Die Formate OpenSSH, RFC4716 und PPK werden unterstützt.", + "Overview": "Überblick", + "Overwrite": "Überschreiben", + "Overwrite all": "Alles überschreiben", + "Owner": "Eigentümer", + "Parent": "Übergeordnet", + "PASE": "PASE", + "Password": "Passwort", + "Password for server": "Passwort für Server", + "Password updated and will be used for \"{0}\".": "Passwort aktualisiert und wird für \"{0}\" verwendet.", + "Path of new folder": "Pfad des neuen Ordners", + "Path to IFS directory": "Pfad zum IFS-Verzeichnis", + "Please connect to an IBM i": "Please connect to an IBM i", + "Please enter value in form LIB/SPF/member.ext": "Bitte geben Sie den Wert im Formular LIB/SPF/member.ext ein", + "Port (SSH)": "Port (SSH)", + "Previous find terms": "Previous find terms", + "Previous search terms": "Vorherige Suchbegriffe", + "Private Key": "Privat Schlüssel", + "Private key updated and will be used for \"{0}\".": "Privater Schlüssel aktualisiert und wird für \"{0}\" verwendet.", + "QShell": "QShell", + "Recently used": "Kürzlich benutzt", + "Refresh": "Aktualisierung", + "Relative path of the streamfile from the working directory or workspace": "Relativer Pfad der Datei vom Arbeitsverzeichnis oder Arbeitsbereich", + "Remote certificate not found": "Remote-Zertifikat nicht gefunden", + "Remote service certificate exists": "Remote-Service-Zertifikat vorhanden", + "Remove auth methods": "Authentifizierungsmethoden entfernen", + "Rename {0}": "{0} umbenennen", + "Rename connection \"{0}\"": "Verbindung \"{0}\" umbenennen", + "Rename object": "Objekt umbenennen", + "Renamed object {0} {1} to {2}.": "Objekt {0} {1} in {2} umbenannt.", + "Renaming object {0} {1} to {2}...": "Objekt {0} {1} wird in {2} umbenannt...", + "Report an Issue": "Ein Problem melden", + "Reset to default": "Zurücksetzen", + "Restart": "Neu starten", + "Retry": "Wiederholen", + "Review Issues": "Überprüfen Sie Probleme", + "Run on protected/read only": "Geschützt/schreibgeschützt ausführen", + "Runs as an ILE command": "Wird als ILE-Befehl ausgeführt", + "Runs the command in the PASE environment": "Führt den Befehl in der PASE-Umgebung aus", + "Runs the command through QShell": "Führt den Befehl über QShell aus", + "Save": "Speichern", + "Save Password": "Passwort speichern", + "Saved current settings to profile \"{0}\".": "Aktuelle Einstellungen im Profil \"{0}\" gespeichert.", + "Search {0}": "Suche {0}", + "Search {0} {1}": "Suche {0} {1}", + "Search directory": "Verzeichnis durchsuchen", + "Search source file": "Quelldatei durchsuchen", + "Searching": "Suchen", + "Select an action to duplicate": "Wählen Sie eine Aktion zum Duplizieren aus", + "Select IFS shortcut to remove": "Wählen Sie die zu entfernende IFS-Verknüpfung aus", + "Select the logs you would like to download": "Select the logs you would like to download", + "Select the settings to copy from \"{0}\" to \"{1}\"": "Wählen Sie die Einstellungen aus, die von \"{0}\" nach \"{1}\" kopiert werden sollen.", + "sending {0} directory...": "{0} Verzeichnis wird gesendet...", + "sending {0} file(s)...": "{0} Datei(en) werden gesendet...", + "shortcut": "Abkürzung", + "Size": "Größe", + "Skip": "Überspringen", + "Skip all": "Alles überspringen", + "Sorry, but the sandbox is offline right now. Try again another time.": "Tut mir leid, aber die Sandbox ist gerade offline. Versuchen Sie es ein anderes Mal noch einmal.", + "Source file name where the source member lives (&OPENSPFL for lowercase)": "Name der Quelldatei, in der sich die Quelle befindet (&OPENSPFL for lowercase)", + "Source filename must be 10 chars or less.": "Der Name der Quelldatei darf höchstens 10 Zeichen lang sein.", + "Source members in the QSYS file system": "Quelle im QSYS-Dateisystem", + "Start": "Start", + "Start time": "Startzeit", + "Starting debug server...": "Debug-Server wird gestartet...", + "Starting debug service...": "Debug-Dienst wird gestartet...", + "Status": "Status", + "Still searching \"{0}\" in {1}...": "Suche immer noch \"{0}\" in {1}...", + "Stop": "Stoppen", + "Stopping debug server...": "Debug-Server wird gestoppt...", + "Stopping debug service...": "Debug-Dienst wird gestoppt...", + "stored": "gespeichert", + "streamfile": "Datei", + "Streamfile": "Datei", + "Streamfiles in the IFS": "Dateien im IFS", + "Subsystem": "Subsystem", + "Successfully downloaded logs to {0}": "Successfully downloaded logs to {0}", + "Switched to profile \"{0}\".": "Zum Profil \"{0}\" gewechselt.", + "Text": "Text", + "Thanks for trying the Code for IBM i Sandbox!": "Vielen Dank, dass Sie den Code für IBM i Sandbox ausprobiert haben!", + "The browser level to refresh after the action is done": "Die Browserebene, die nach Abschluss der Aktion aktualisiert werden soll", + "The directory has file(s) with unsaved changes.": "Das Verzeichnis beinhaltet Datei(en) mit nicht gespeicherten Änderungen.", + "The entire browser is refreshed": "Der gesamte Browser wird aktualisiert", + "The file has unsaved changes.": "Die Datei enthält nicht gespeicherte Änderungen.", + "The file path could not be parsed.": "Der Dateipfad konnte nicht analysiert werden.", + "The following libraries were removed from the updated library list as they are invalid: {0}": "Die folgenden Bibliotheken wurden aus der aktualisierten Bibliotheksliste entfernt, da sie ungültig sind: {0}", + "The member has unsaved changes.": "Die Quelle hat nicht gespeicherte Änderungen.", + "The parent container is refreshed": "Der übergeordnete Container wird aktualisiert", + "The parent filter is refreshed": "Der übergeordnete Filter wird aktualisiert", + "The same as &CURLIB": "Das Gleiche wie &CURLIB", + "The types of files this action can support.": "Die Dateitypen, die diese Aktion unterstützen kann.", + "This is taking a while because there are {0} members. Searching \"{1}\" in {2} still.": "Dies dauert eine Weile, da es {0} Quellen gibt. Suche nach \"{1}\" in {2} noch.", + "This Visual Studio Code instance is already connected to a server.": "Diese Visual Studio Code-Instanz ist bereits mit einem Server verbunden.", + "This will reset the User Library List, working directory and Custom Variables back to the defaults.": "Dadurch werden die Benutzerbibliotheksliste, das Arbeitsverzeichnis und die benutzerdefinierten Variablen auf die Standardwerte zurückgesetzt.", + "Type": "Typ", + "Type of the object (&TYPEL for lowercase)": "Typ des Objekts (&TYPEL for lowercase)", + "Unable to delete protected directories from the IFS Browser!\n{0}": "Geschützte Verzeichnisse können nicht aus dem IFS-Browser gelöscht werden!\n{0}", + "Upload": "Hochladen", + "Upload completed.": "Hochladen abgeschlossen.", + "Use the Server Browser to select which system to connect to.": "Verwenden Sie den Serverbrowser, um auszuwählen, mit welchem ​​System eine Verbindung hergestellt werden soll.", + "User directory": "Benutzerverzeichnis", + "User for server": "Benutzer für Server", + "Username": "Nutzername", + "Username for connection": "Benutzername für die Verbindung", + "Valid parameters for SBMJOB": "Gültige Parameter für SBMJOB", + "What do you want to upload?": "Was möchten Sie hochladen?", + "What's so special about \"{0}\" anyway?": "Was ist überhaupt das Besondere an \"{0}\"?", + "While you wait, why not make some tea?": "Während Sie warten, bereiten Sie sich doch mal einen Tee zu.", + "Why was six afraid of seven?": "Warum hatten sechs Angst vor sieben?", + "Work with Actions": "Arbeiten Sie mit Aktionen", + "Working directory changed to {0}.": "Arbeitsverzeichnis wurde in {0} geändert.", + "Would you like to add the new library to the library list?": "Möchten Sie die neue Bibliothek zur Bibliotheksliste hinzufügen?", + "Wow. This really is taking a while. Let's hope you get the result you want.": "Wow. Das dauert wirklich eine Weile. Hoffen wir, dass Sie das gewünschte Ergebnis erhalten.", + "Yes": "Ja", + "You are using this system at your own risk. Do not share any sensitive or private information.": "Sie nutzen dieses System auf eigenes Risiko. Geben Sie keine sensiblen oder privaten Informationen weiter.", + "Your changes will be discarded": "Ihre Änderungen werden verworfen" +} \ No newline at end of file diff --git a/l10n/bundle.l10n.fr.json b/l10n/bundle.l10n.fr.json new file mode 100644 index 000000000..3bb1b3b7d --- /dev/null +++ b/l10n/bundle.l10n.fr.json @@ -0,0 +1,408 @@ +{ + " (Press \"Escape\" to cancel)": " (Appuyer sur \"Escape\" pour annuler)", + " (previous connection)": " (précédente connexion)", + "\"{0}\" in {1}.": "\"{0}\" in {1}.", + "\"findutils\" must be installed on the remote system.": "\"findutils\" doit être installé sur le système distant.", + "(current library)": "(bibliothèque en cours)", + "(in ASP {0})": "(dans l'ASP {0})", + "{0} {1} occurred while listing files.": "{0} {1} s'est produit lors du chargement des fichiers.", + "{0} already exists.\nDo you want to replace it?": "{0} existe déjà.\nVoulez-vous le remplacer?", + "{0} file(s) contain(s) '{1}'": "{0} file(s) contenant '{1}'", + "{0} file(s) named '{1}'": "{0} fichier(s) nommé(s) '{1}'", + "{0} is already current library.": "{0} est déjà la bibliothèque en cours.", + "{0} is not a directory.": "{0} n'est pas un répertoire.", + "{0} member(s) copied to streamfile(s) in {1}.": "{0} member(s) copied to streamfile(s) in {1}.", + "{0} not found under {1}": "{0} n\"a pas été trouvé dans {1}", + "{0} was copied to {1}.": "{0} a été copié vers {1}.", + "{0} was moved to {1}.": "{0} a été déplacé vers {1}.", + "{0} was renamed to {1}.": "{0} a été renommé {1}.", + "{0} was the working directory; it is now {1}.": "{0} était le répertoire de travail; c\"est désormais {1}.", + "$(trash) Clear list": "$(trash) Effacer liste", + "A comma delimited list of extensions for this action. This can be a member extension, a streamfile extension, an object type or an object attribute": "Liste d'extensions de membre/fichier ou de type/attribut d'objet, séparée par des virgules.", + "Action name": "Nom de l'action", + "Actions for local files in the VS Code Workspace.": "Fichiers locaux du Workspace VS Code", + "Active job": "Job actif", + "Allows the execution of this Action on protected or read only targets": "Autorise l'exécution de cette action sur des cibles protégés ou en lecture seule", + "Are you sure you want overwrite member {0}?": "Êtes-vous sûr de vouloir écraser le membre {0}?", + "Are you sure you want to delete {0}?": "Êtes-vous sûr de vouloir supprimer {0}?", + "Are you sure you want to delete the \"{0}\" profile?": "Êtes-vous sûr de vouloir supprimer le profil \"{0}\"?", + "Are you sure you want to delete the {0} selected files?": "Êtes-vous sûr de vouloir suprimer les {0} fichiers sélectionnés?", + "Are you sure you want to delete the action \"{0}\"?": "Êtes-vous sûr de vouloir supprimer l'action \"{0}\"?", + "Are you sure you want to delete the connection \"{0}\"?": "Êtes vous sûr de vouloir supprimer la connexion \"{0}\"?", + "Are you sure you want to delete these {0} connections?": "Êtes vous sûr de vouloir supprimer ces {0} connexions?", + "Are you sure you want to delete these {0} elements?": "Êtes-vous sûr de vouloir supprimer les {0} éléments sélectionnés?", + "Attribute": "Attribut", + "Authentication methods removed for \"{0}\".": "Authentification supprimée pour \"{0}\".", + "Below are available variables based on the Type you have select below. You can specify different commands on each line. Each command run is stateless and run in their own job.": "Les variables ci-dessous sont disponibles en fonction du Type sélectionné ci-après. Vous pouvez définir plusieurs commande; une par ligne. Chaque commande est exécutée dans son propre Job et n'a pas d'état.", + "Branch library, based on the current branch": "Bibliothèque de la branche, basée sur la branche en cours", + "Browser": "Navigateur", + "Cancel": "Annuler", + "Cannot copy member to itself!": "Impossible de copier un membre sur lui-même!", + "Cannot create library \"{0}\": {1}": "Impossible de créer la bibliothèque \"{0}\": {1}", + "Cannot search listings using *ALL.": "Impossible de rechercher une liste avec *ALL.", + "CCSID": "CCSID", + "Certificate needs to be regenerated": "Certificate needs to be regenerated", + "Change current library": "Changer la bibliothèque en cours", + "Change member description for {0}, *BLANK for no description": "Changer la description du membre {0}, *BLANK pour effacer la description", + "Change object description for {0}, *BLANK for no description": "Changer la description de l'objet pour {0}, *BLANK pour effacer la description", + "Changed": "Modification", + "Changed current library to {0}.": "La bibliothèque en cours est maintenant {0}.", + "Changed object description for {0} {1}.": "La description de l'objet {0} {1} a été changée.", + "Changing library list (can use \"*reset\")": "Changement de la liste des bibliothèques (valeur spécial: \"*reset\")", + "Changing working directory": "Changer le répertoire courant", + "Cleared list.": "Liste effacée.", + "Code for IBM i Log": "Log de Code for IBM i", + "Command profiles": "Profiles de commande", + "Command(s) to run": "Commande(s) à exécuter", + "Compare with": "Compare with", + "Compare with Active File": "Compare with Active File", + "Connect": "Se Connecter", + "Connect to IBM i": "Connect to IBM i", + "Connection \"{0}\" already exists": "La connexion \"{0}\" existe déjà", + "Connection \"{0}\" already exists.": "La connexion \"{0}\" existe déjà.", + "Connection profiles": "Profile de connection", + "Connection to {0} ended as no password was provided.": "Connexion à {0} interrompue car aucun mot de passe n'a été fourni.", + "Continue": "Continue", + "Copied object {0} {1} to {2}.": "Objet {0} {1} copié vers {2}.", + "Copied object {0} {1} to {2}. Refresh object browser.": "Objet {0} {1} copié vers {2}. Rafraîchissement de l'explorateur d'objet.", + "Copy": "Copier", + "Copy connection \"{0}\"": "Copier la connexion \"{0}\"", + "copying to streamfiles": "copie des membres en streamfiles", + "Create action": "Créer une action", + "Create duplicate object to new library/object": "Duplication de l'objet vers une nouvelle bibliothèque/objet", + "Create new filter": "Créer un filtre", + "Create or maintain Actions. Actions are grouped by the type of file/object they target.": "Créez ou éditez des Actions. Les Actions sont groupées par type.", + "Created": "Création", + "Created by": "Créé par", + "Creating member {0}...": "Creation du membre {0}...", + "Creating source file {0}.": "Création du fichier source {0}.", + "Creating streamfile {0}.": "Création du fichier {0}.", + "current": "actuelle", + "Current Git branch": "Branche Git en cours", + "Current library, changeable in Library List": "Bibliothèque en cours, modifiable depuis la Liste des Bibliothèques", + "Current memory": "Mémoire utilisée", + "Current user": "Utilisateur en cours", + "Current working directory, changeable in IFS Browser": "Répertoire de travail actuel, modifiable dans le navigateur IFS", + "Currently active": "Active", + "Custom variables": "Variables personnalisées", + "Debug Server": "Serveur de débogage", + "Debug server started.": "Serveur de débogage démarré.", + "Debug server stopped.": "Serveur de débogage arrêté.", + "Debug Service": "Service de débogage", + "Debug Service Certificate": "Certificat du service de débogage", + "Debug Service Eclipse Instance Log": "Log de l'instance Eclipse du Debug Service", + "Debug Service Log": "Log du Debug Service", + "Debug service started.": "Service de débogage démarré.", + "Debug service stopped.": "Service de débogage arrêté.", + "Debug Service submit options": "Options de soumission du Service de Debug", + "Debugger {0} Status": "Status du débogueur {0}", + "Delete": "Supprimer", + "Deleting": "Suppression", + "Deleting {0} element(s)...": "Suppression de {0} élément(s)...", + "Deletion canceled.": "Suppression annulée.", + "directory": "Répertoire", + "Directory of the file on the remote system": "Répertoire du fichier sur le système distant", + "Do you want to copy or move the selection to {0}?": "Voulez-vous déplacer ou copier la sélection vers {0}?", + "Download certificate": "Télécharger le certificat", + "Download complete": "Téléchargement terminé", + "Download Logs": "Télécharger les logs", + "Download To": "Télécharger les logs", + "Downloading": "Téléchargement", + "Downloading {0} members": "Téléchargement de {0} membres", + "Duplicate": "Dupliquer", + "Duplicate action \"{0}\"": "Duplication de l'action \"{0}\"", + "Edit action \"{0}\"": "Édition de l'action \"{0}\"", + "Enter find term or select one of the previous find terms.": "Entrez le nom à rechercher ou sélectionnez une précédente recherche.", + "Enter find term.": "Entrez le nom à rechercher.", + "Enter IFS directory to find files in": "Entrez le répertoire IFS où rechercher les fichiers", + "Enter IFS directory to search": "Entrez le répertoire IFS où chercher", + "Enter LIB/SPF/member.ext to search (member.ext is optional and can contain wildcards)": "Entrez LIB/SPF/membre.ext pour chercher (membre.ext est optionnel et peut contenir des caractères génériques)", + "Enter password for {0}@{1}": "Entrez le mot de passe pour {0}@{1}", + "Enter search term or select one of the previous search terms.": "Entrez un mot à chercher ou choisissez une recherche précédente.", + "Enter search term.": "Entrez le mot à chercher.", + "Enter the path to compare selected with": "Enter the path to compare selected with", + "Enter username for {0}": "Entrez le nom d'utilisateur pour {0}", + "Environment": "Environnement", + "Environment for command to be executed in.": "Environnement d'exécution des commandes de l'action.", + "error": "erreur", + "Error changing description for {0}! {1}": "Erreur lors du changement de la description de {0}! {1}", + "Error changing member description! {0}": "Erreur lors de la mise à jour du texte du membre! {0}", + "Error copying {0}! {1}": "Erreur lors de la copie de {0}! {1}", + "Error copying member(s) to {0}: {1}": "Error copying member(s) to {0}: {1}", + "Error copying object {0}! {1}": "Erreur lors de la copie de l'objet {0}! {1}", + "Error creating IFS shortcut! {0}": "Erreur lors de la création du raccourci IFS! {0}", + "Error creating member {0}: {1}": "Erreur lors de la creation du membre {0}: {1}", + "Error creating new directory! {0}": "Erreur à la création du répertoire! {0}", + "Error creating new streamfile! {0}": "Erreur lors de la création du fichier! {0}", + "Error creating source file! {0}": "Erreur lors de la création du fichier source! {0}", + "Error deleting member! {0}": "Erreur lors de la suppression du membre! {0}", + "Error deleting object! {0}": "Erreur lors de la suppression de l'objet! {0}", + "Error deleting streamfile! {0}": "Erreur lors de la suppression du fichier! {0}", + "Error downloading file(s): {0}": "Erreur lors du téléchargement: {0}", + "Error downloading member(s)! {0}": "Erreur lors du téléchargement des membres! {0}", + "Error finding filenames.": "Erreur lors de la recherche de fichiers.", + "Error loading objects.": "Erreur lors du chargement des objets.", + "Error moving object {0}! {1}": "Erreur lors du déplacement de l'objet {0}! {1}", + "Error renaming connection \"{0}\"! {1}": "Erreur lors du renommage de la connexion \"{0}\"! {1}", + "Error renaming member! {0}": "Erreur lors du renommage du membre! {0}", + "Error renaming object {0}! {1}": "Erreur lors du renommage de l'objet {0}! {1}", + "Error renaming/moving {0}! {1}": "Erreur lors du renommage/déplacement de {0}! {1}", + "Error searching source members: {0}": "Erreur lors de la recherche de membres source: {0}", + "Error searching streamfiles.": "Erreur lors de la recherche de fichiers.", + "Error uploading content to member! {0}": "Erreur lors de l'upload du contenu du membre! {0}", + "Error uploading files! {0}": "Erreur lors de l'envoi des fichiers! {0}", + "errors": "erreurs", + "Extension of the file (&EXTL for lowercase)": "Extension du fichier (&EXTL pour le nom en minuscule)", + "Extension of the source member (&EXTL for lowercase)": "Extension du membre source (&EXTL pour le nom en minuscule)", + "Extension/attribute of the object (&EXTL for lowercase)": "Extension/attribut de l'objet (&EXTL pour le nom en minuscule)", + "Extensions": "Extensions", + "Failed to connect": "Échec de la connexion", + "Failed to connect to {0} as {1}": "Échec de la connexion à {0} avec {1}", + "Failed to copy selection to {0}: {1}": "Échec de la copie de la sélection vers {0}: {1}", + "Failed to download logs to {0}. {1}": "Failed to download logs to {0}. {1}", + "Failed to downloaded logs to {0}": "Échec du téléchargement des logs vers {0}", + "Failed to get library list from command: {0}": "Échec de la récupération de la liste des bibliothèque depuis la commande: {0}", + "Failed to get library list from command. Feature not installed.": "Échec de la récupération de la liste des bibliothèque depuis la commande. Fonctionnalité non installée.", + "Failed to move selection to {0}: {1}": "Échec du déplacement de la sélection vers {0}: {1}", + "Failed to read debug service detail file {0}: {1}": "Erreur de lecture du fichier détail du service de débogage {0}: {1}", + "Failed to set {0} as current library: {1}": "La bibliothèque {0} ne peut pas devenir la bibliothèque en cours: {1}", + "Failed to start debug server: {0}": "Échec du démarrage du serveur de débogage: {0}", + "Failed to start debug service: {0}": "Échec du démarrage du service de débogage: {0}", + "Failed to stop debug server: {0}": "Échec de l\"arrêt du serveur de débogage: {0}", + "Failed to stop debug service: {0}": "Échec de l\"arrêt du service de débogage: {0}", + "Fetching member list for {0}.": "Récupération de la liste des membres de {0}.", + "File type": "Extension du fichier", + "Files": "Fichiers", + "Filter": "Filtre", + "Filter or new library to set as current library": "Filtre ou nouvelle bibliothèque à utiliser comme bibliothèque en cours", + "Find {0}": "Rechercher {0}", + "Find in directory": "Rechercher dans un répertoire", + "Finding": "Rechercher", + "Finding filenames with \"{0}\" in {1}.": "Recherche de fichiers nommés \"{0}\" dans {1}.", + "Folders": "Dossiers", + "Full path of the file on the remote system": "Chemin absolu du fichier sur le système distant", + "Gathering logs...": "Rassemblement des logs...", + "Generate service certificate": "Generer le certificat du service", + "Get started": "Pour commencer", + "getting streamfiles": "récupération des streamfiles", + "grep must be installed on the remote system for the IFS search.": "grep doit être installé sur le système distant pour la recherche sur l'IFS.", + "Home directory": "Répertoire home", + "Host or IP Address": "Nom d'Hôte ou Adresse IP", + "Hostname or IP address from the current connection": "Nom d'hôte ou adresse IP de la connexion", + "How does one end up with {0} members?": "Mais...pourquoi il y a {0} membres dans ce fichier en fait?", + "IASP": "IASP", + "IFS shortcuts": "Raccourcis IFS", + "ILE": "ILE", + "Incomplete configuration": "Incomplete configuration", + "Invalid path: {0}. Use format LIB/OBJ": "Chemin invalide: {0}. Utilisez le format LIB/OBJ", + "Java Home": "Java Home", + "Java version {0} is not installed.": "Java version {0} n'est pas installé.", + "Job": "Job", + "Job name": "Nom du job", + "Job number": "Numéro du job", + "Job status": "Status du job", + "Job user": "Utilisateur", + "JVM information": "Information JVM", + "Last connection": "Dernière connexion", + "Last IBM i connections": "Dernières connexions IBM i", + "Last used: {0}": "Dernière utilisation: {0}", + "Length": "Longueur", + "Library {0} does not exist.": "La bibliohtèque {0} n'existe pas.", + "Library {0} was added to the library list.": "La bibliohtèque {0} a été ajoutée à la liste des bibliothèques.", + "Library {0} was already in the library list.": "La bibliohtèque {0} est déjà dans la liste des bibliothèques.", + "Library {0} was removed from the library list.": "La bibliohtèque {0} a été retirée de la liste des bibliothèques.", + "Library is too long.": "Le nom de bibliothèque est trop long.", + "Library list": "Liste de bibliothèques", + "Library list delimited by comma": "Liste des bilbiothèques, séparée par des virgules", + "Library list delimited by space": "Liste des bilbiothèques, séparée par des espaces", + "Library list were validated without any errors.": "La liste des bibliothèques a été validée avec succès.", + "Library must be 10 chars or less.": "Le nom de la bibliothèque doit faire au maximum 10 caractères de long.", + "Library name too long.": "Nom de bibliothèque trop long.", + "Library name where the object lives (&LIBRARYL for lowercase)": "Nom de la bibliothèque contenant l'objet (&LIBRARYL pour le nom en minuscule)", + "Library name where the source member lives (&OPENLIBL for lowercase)": "Nom de la bibliothèque contenant le membre source (&OPENLIBL pour le nom en minuscule)", + "Library to add": "Bibliothèque à ajouter", + "Lines": "Lignes", + "Listening on port(s)": "Écoute sur le(s) port(s)", + "Loading debugger information...": "Chargement du status du débogueur...", + "Local certificate": "Certificat local", + "Local certificate doesn't match remote": "Le certificat local ne correspond pas à celui du service", + "Local certificate matches remote": "Certif. local correspond au certif. distant", + "Local certificate not found": "Le certificat local n\"existe pas", + "Local File (Workspace)": "Fichier Local (Workspace)", + "Login Settings: \"{0}\"": "paramètres d'authentification: \"{0}\"", + "Lowercase file type": "Extension du fichier en minuscule", + "Lowercase name of the object": "Nom de l'objet en minuscule", + "Maximum allowed memory": "Mémoire maximum allouée", + "Member": "Membre", + "Member {0} already exists!": "Le membre {0} existe déjà!", + "Member was uploaded.": "Le membre a été uploadé.", + "Members": "Membres", + "Members download cancelled.": "Téléchargement des membres annulé.", + "Members download complete.": "Téléchargement des membres terminé.", + "Memory pool": "Pool mémoire", + "Modified": "Modifié", + "Move": "Déplacer", + "Move object": "Déplacer l'objet", + "Moved object {0} {1} to {2}.": "Objet {0} {1} déplacé vers {2}.", + "Moved object {0} {1} to {2}. Refresh object browser.": "Objet {0} {1} déplacé vers {2}. Rafraîchissement de l'explorateur d'objet.", + "Moving object {0} {1} to {2}...": "Déplacement de l'objet {0} {1} vers {2}...", + "Name of new library": "Nom de la nouvelle bibliothèque", + "Name of new path": "Nouveau chemin", + "Name of new source file": "Nom du nouveau fichier source", + "Name of new source member (member.ext)": "Nom du nouveau membre source (membre.ext)", + "Name of new streamfile": "Nom du nouveau fichier", + "Name of profile": "Nom du profil", + "Name of the file (&NAMEL for lowercase)": "Nom du fichier (&NAMEL pour le nom en minuscule)", + "Name of the file, including the extension": "Nom du fichier avec son extension", + "Name of the object (&NAMEL for lowercase)": "Nom de l'objet (&NAMEL pour le nom en minuscule)", + "Name of the parent directory or source file": "Nom du répertoire parent du fichier", + "Name of the source member (&OPENMBRL for lowercase)": "Nom du membre source (&OPENMBRL pour le nom en minuscule)", + "New Action": "Créer Action", + "New connection name": "Nouveau nom de connexion", + "New connection name must be different from its current name": "Le nouveau nom de la connexion doit être différent de son nom actuel", + "New member name must be different from it's current name": "Le nouveau nom du membre doit être différent de l'ancien", + "New path for copy of source member": "Chemin pour la copie du membre source", + "No": "Non", + "No connection named \"{0}\" was found": "Aucune connexion nommée \"{0}\" n' a été trouvée", + "No file is open or selected": "No file is open or selected", + "No files or folders selected for upload.": "Aucun fichier ou dossier sélectionné pour l'envoi.", + "No logs to download": "Aucun log disponible au téléchargement", + "No members to search.": "Aucun membre à rechercher.", + "No parameters for connection \"{0}\" was found": "Aucun paramètre pour la connexion \"{0}\" n'a été trouvé", + "No refresh": "Pas de rafraîchissement", + "No results found finding filenames with \"{0}\" in {1}.": "Aucun fichier nommé \"{0}\" n'a été trouvé dans {1}.", + "No results found searching for \"{0}\" in {1}.": "Aucun résultat trouvé pour \"{0}\" dans {1}.", + "Not connected to an IBM i": "Non connecté à un IBM i", + "Not found in {0}": "Non trouvé dans {0}", + "Object": "Objet", + "Object description must be 50 chars or less.": "La description de l'objet doit faire au maximum 50 caractères de long.", + "Object filters": "Filtres d'objets", + "Object name must be 10 chars or less.": "Le nom de l'objet doit faire au maximum 10 caractères de long.", + "Objects in the QSYS file system": "Objets du système de fichier QSYS", + "Offline": "Hors ligne", + "Oh no! The sandbox is down.": "Aïe aïe aïe, le bac à sable est en panne!", + "Once you delete the directory, it cannot be restored.\nPlease type \"{0}\" to confirm deletion.": "La suppression du répertoire est irréversible!\nEntrez \"{0}\" pour confirmer la suppression.", + "Online": "En ligne", + "Only provide a password if you want to update an existing one or set a new one.": "Renseignez un mot de passe seulement si vous souhaitez le changer.", + "Only provide a private key if you want to update from the existing one or set one.": "Sélectionnez une clé privée seulement si vous souhaitez en changer.", + "Only provide either the password or a private key - not both.": "Renseignez soit le mot de passe, soit la clé privée - pas les deux.", + "Open": "Ouvrir", + "Open configuration": "Ouvrir la configuration", + "Open official Forum": "Forum officiel", + "OpenSSH, RFC4716 and PPK formats are supported.": "Les formats OpenSSH, RFC4716 et PPK sont supportés.", + "Overview": "Aperçu", + "Overwrite": "Écraser", + "Overwrite all": "Écraser tout", + "Owner": "Propriétaire", + "Parent": "Parent", + "PASE": "PASE", + "Password": "Mot de passe", + "Password for server": "Mot de passe", + "Password updated and will be used for \"{0}\".": "Mot de passe mis à jour et utilisé pour se connecter à \"{0}\".", + "Path of new folder": "Chemin du nouveau répertoire", + "Path to IFS directory": "Chemin du répertoire IFS", + "Please connect to an IBM i": "Connection requise à un IBM i", + "Please enter value in form LIB/SPF/member.ext": "Entrez une valeur de la forme LIB/SPF/membre.ext", + "Port (SSH)": "Port (SSH)", + "Previous find terms": "Recherches précédentes", + "Previous search terms": "Recherches précédentes", + "Private Key": "Clé privée", + "Private key updated and will be used for \"{0}\".": "Clé privée mise à jour et utilisée pour se connecter à \"{0}\".", + "QShell": "QShell", + "Recently used": "Utilisé récemment", + "Refresh": "Rafraîchissement", + "Relative path of the streamfile from the working directory or workspace": "Chemin relatif du fichier de flux à partir du répertoire de travail ou de l'espace de travail", + "Remote certificate not found": "Le certificat du service n\"existe pas", + "Remote service certificate exists": "Certificat du service existe", + "Remove auth methods": "Supprimer l'authentification", + "Rename {0}": "Renommer {0}", + "Rename connection \"{0}\"": "Renommer la connexion \"{0}\"", + "Rename object": "Renamer l'objet", + "Renamed object {0} {1} to {2}.": "Objet {0} {1} renommé {2}.", + "Renaming object {0} {1} to {2}...": "Renommage de l'objet {0} {1} en {2}...", + "Report an Issue": "Déclarer un incident", + "Reset to default": "Réinitialisation", + "Restart": "Redémarrer", + "Retry": "Réessayer", + "Review Issues": "Voir les incidents", + "Run on protected/read only": "Exécuter en mode protégé/lecture seule", + "Runs as an ILE command": "Exécution en commande ILE", + "Runs the command in the PASE environment": "Exécution via l'environnement PASE", + "Runs the command through QShell": "Exécution via QShell", + "Save": "Enregistrer", + "Save Password": "Sauvegarder Mot de passe", + "Saved current settings to profile \"{0}\".": "Paramètres actuels sauvés sur le profil \"{0}\".", + "Search {0}": "Chercher dans {0}.", + "Search {0} {1}": "Rechercher dans {0} {1}", + "Search directory": "Chercher dans un répertoire", + "Search source file": "Rechercher dans un fichier source", + "Searching": "Recherche", + "Select an action to duplicate": "Sélectionnez l'action à dupliquer", + "Select IFS shortcut to remove": "Sélection du raccourci IFS à supprimer", + "Select the logs you would like to download": "Sélectionner les logs à télécharger", + "Select the settings to copy from \"{0}\" to \"{1}\"": "Sélectionner les paramètres à copier de \"{0}\" vers \"{1}\"", + "sending {0} directory...": "envoi du répertoire {0}...", + "sending {0} file(s)...": "envoi de {0} fichier(s)...", + "shortcut": "raccourci", + "Size": "Taille", + "Skip": "Ignorer", + "Skip all": "Ignorer tout", + "Sorry, but the sandbox is offline right now. Try again another time.": "Désolé, le bac à sable est est hors-ligne pour le moment. Réessayez plus tard.", + "Source file name where the source member lives (&OPENSPFL for lowercase)": "Nom du fichier source contenant le membre source (&OPENSPFL pour le nom en minuscule)", + "Source filename must be 10 chars or less.": "Le nom du fichier source doit faire au maximum 10 caractères de long.", + "Source members in the QSYS file system": "Membres source du système de fichier QSYS", + "Start": "Démarrer", + "Start time": "Démarré le", + "Starting debug server...": "Démarrage du serveur de débogage...", + "Starting debug service...": "Démarrage du service de débogage...", + "Status": "Status", + "Still searching \"{0}\" in {1}...": "Les fouilles pour trouver \"{0}\" dans {1} continuent...⛏", + "Stop": "Arrêter", + "Stopping debug server...": "Arrêt du serveur de débogage...", + "Stopping debug service...": "Arrêt du service de débogage...", + "stored": "enregistré", + "streamfile": "fichier", + "Streamfile": "Fichier", + "Streamfiles in the IFS": "Fichier stocké sur l'IFS", + "Subsystem": "Sous-système", + "Successfully downloaded logs to {0}": "Logs téléchargés avec succès vers {0}", + "Switched to profile \"{0}\".": "Le profil en cours est \"{0}\".", + "Text": "Texte", + "Thanks for trying the Code for IBM i Sandbox!": "Merci d'essayer le bac à sable Code for IBM i!", + "The browser level to refresh after the action is done": "Le niveau du navigateur devant être rafraîchi une fois l\"action exécutée", + "The directory has file(s) with unsaved changes.": "Le répertoire a des fichiers ouverts non sauvegardés.", + "The entire browser is refreshed": "Le navigateur est entièrement rafraîchi", + "The file has unsaved changes.": "Le fichier a des changements non sauvegardés.", + "The file path could not be parsed.": "Le chemin du fichier n'a pas pu être analysé.", + "The following libraries were removed from the updated library list as they are invalid: {0}": "Les bibliothèques suivantes ont été retirées de la liste des bibliothèques mise à jour car elles sont invalides: {0}", + "The member has unsaved changes.": "Le membre a des changements non sauvegardés.", + "The parent container is refreshed": "Le conteneur parent est rafraîchi", + "The parent filter is refreshed": "Le filtre parent est rafraîchi", + "The same as &CURLIB": "Voir &CURLIB", + "The types of files this action can support.": "Les types de fichier auxquels s'appliquent l'action.", + "This is taking a while because there are {0} members. Searching \"{1}\" in {2} still.": "La recherche prend du temps car il y a {0} membres...mais elle continue!", + "This Visual Studio Code instance is already connected to a server.": "Cette instance de Visual Studio Code est déjà connectée à un serveur.", + "This will reset the User Library List, working directory and Custom Variables back to the defaults.": "La liste des bibliothèques Utilisateur, le répertoire de travail et les variables personnalisées vont être réinitialisés.", + "Type": "Type", + "Type of the object (&TYPEL for lowercase)": "Type de l'objet (&TYPEL pour le nom en minuscule)", + "Unable to delete protected directories from the IFS Browser!\n{0}": "Impossible de supprimer les répertoires protégés depuis l'Explorateur IFS!\n{0}", + "Upload": "Téléchargement", + "Upload completed.": "Envoi terminée.", + "Use the Server Browser to select which system to connect to.": "Utilisez l'Explorateur de Serveur pour sélectionner le serveur auquel se connecter.", + "User directory": "Répertoire utilisateur", + "User for server": "Nom d'utilisateur", + "Username": "Utilisateur", + "Username for connection": "Nom d'utilisateur de la connexion", + "Valid parameters for SBMJOB": "Paramètres valides de SBMJOB", + "What do you want to upload?": "Que souhaitez-vous envoyer?", + "What's so special about \"{0}\" anyway?": "Qu'est ce que \"{0}\" a de si spécial en fait?!", + "While you wait, why not make some tea?": "Sinon ça va vous? Et si on se faisait un thé? 🍵", + "Why was six afraid of seven?": "Qu'est ce qui est jaune et qui attend?", + "Work with Actions": "Maintenance des Actions", + "Working directory changed to {0}.": "Répertoire courant changé pour {0}.", + "Would you like to add the new library to the library list?": "Voulez-vous ajouter la nouvelle bibliothèque à la liste des bibliothèques?", + "Wow. This really is taking a while. Let's hope you get the result you want.": "Bon...c'est vraiment long là! Espérons que vous allez trouver ce que vous cherchez! 🤞🏻", + "Yes": "Oui", + "You are using this system at your own risk. Do not share any sensitive or private information.": "Vous êtes seul responsable de l'utilisation du bas à sable. Ne partagez pas d'informations à caractère sensible ou privé.", + "Your changes will be discarded": "Vos modifications vont être perdues" +} \ No newline at end of file diff --git a/l10n/bundle.l10n.json b/l10n/bundle.l10n.json new file mode 100644 index 000000000..20e8f428a --- /dev/null +++ b/l10n/bundle.l10n.json @@ -0,0 +1,408 @@ +{ + " (Press \"Escape\" to cancel)": " (Press \"Escape\" to cancel)", + " (previous connection)": " (previous connection)", + "\"{0}\" in {1}.": "\"{0}\" in {1}.", + "\"findutils\" must be installed on the remote system.": "\"findutils\" must be installed on the remote system.", + "(current library)": "(current library)", + "(in ASP {0})": "(in ASP {0})", + "{0} {1} occurred while listing files.": "{0} {1} occurred while listing files.", + "{0} already exists.\nDo you want to replace it?": "{0} already exists.\nDo you want to replace it?", + "{0} file(s) contain(s) '{1}'": "{0} file(s) contain(s) '{1}'", + "{0} file(s) named '{1}'": "{0} file(s) named '{1}'", + "{0} is already current library.": "{0} is already current library.", + "{0} is not a directory.": "{0} is not a directory.", + "{0} member(s) copied to streamfile(s) in {1}.": "{0} member(s) copied to streamfile(s) in {1}.", + "{0} not found under {1}": "{0} not found under {1}", + "{0} was copied to {1}.": "{0} was copied to {1}.", + "{0} was moved to {1}.": "{0} was moved to {1}.", + "{0} was renamed to {1}.": "{0} was renamed to {1}.", + "{0} was the working directory; it is now {1}.": "{0} was the working directory; it is now {1}.", + "$(trash) Clear list": "$(trash) Clear list", + "A comma delimited list of extensions for this action. This can be a member extension, a streamfile extension, an object type or an object attribute": "A comma delimited list of extensions for this action. This can be a member extension, a streamfile extension, an object type or an object attribute", + "Action name": "Action name", + "Actions for local files in the VS Code Workspace.": "Actions for local files in the VS Code Workspace.", + "Active job": "Active job", + "Allows the execution of this Action on protected or read only targets": "Allows the execution of this Action on protected or read only targets", + "Are you sure you want overwrite member {0}?": "Are you sure you want overwrite member {0}?", + "Are you sure you want to delete {0}?": "Are you sure you want to delete {0}?", + "Are you sure you want to delete the \"{0}\" profile?": "Are you sure you want to delete the \"{0}\" profile?", + "Are you sure you want to delete the {0} selected files?": "Are you sure you want to delete the {0} selected files?", + "Are you sure you want to delete the action \"{0}\"?": "Are you sure you want to delete the action \"{0}\"?", + "Are you sure you want to delete the connection \"{0}\"?": "Are you sure you want to delete the connection \"{0}\"?", + "Are you sure you want to delete these {0} connections?": "Are you sure you want to delete these {0} connections?", + "Are you sure you want to delete these {0} elements?": "Are you sure you want to delete these {0} elements?", + "Attribute": "Attribute", + "Authentication methods removed for \"{0}\".": "Authentication methods removed for \"{0}\".", + "Below are available variables based on the Type you have select below. You can specify different commands on each line. Each command run is stateless and run in their own job.": "Below are available variables based on the Type you have select below. You can specify different commands on each line. Each command run is stateless and run in their own job.", + "Branch library, based on the current branch": "Branch library, based on the current branch", + "Browser": "Browser", + "Cancel": "Cancel", + "Cannot copy member to itself!": "Cannot copy member to itself!", + "Cannot create library \"{0}\": {1}": "Cannot create library \"{0}\": {1}", + "Cannot search listings using *ALL.": "Cannot search listings using *ALL.", + "CCSID": "CCSID", + "Certificate needs to be regenerated": "Certificate needs to be regenerated", + "Change current library": "Change current library", + "Change member description for {0}, *BLANK for no description": "Change member description for {0}, *BLANK for no description", + "Change object description for {0}, *BLANK for no description": "Change object description for {0}, *BLANK for no description", + "Changed": "Changed", + "Changed current library to {0}.": "Changed current library to {0}.", + "Changed object description for {0} {1}.": "Changed object description for {0} {1}.", + "Changing library list (can use \"*reset\")": "Changing library list (can use \"*reset\")", + "Changing working directory": "Changing working directory", + "Cleared list.": "Cleared list.", + "Code for IBM i Log": "Code for IBM i Log", + "Command profiles": "Command profiles", + "Command(s) to run": "Command(s) to run", + "Compare with": "Compare with", + "Compare with Active File": "Compare with Active File", + "Connect": "Connect", + "Connect to IBM i": "Connect to IBM i", + "Connection \"{0}\" already exists": "Connection \"{0}\" already exists", + "Connection \"{0}\" already exists.": "Connection \"{0}\" already exists.", + "Connection profiles": "Connection profiles", + "Connection to {0} ended as no password was provided.": "Connection to {0} ended as no password was provided.", + "Continue": "Continue", + "Copied object {0} {1} to {2}.": "Copied object {0} {1} to {2}.", + "Copied object {0} {1} to {2}. Refresh object browser.": "Copied object {0} {1} to {2}. Refresh object browser.", + "Copy": "Copy", + "Copy connection \"{0}\"": "Copy connection \"{0}\"", + "copying to streamfiles": "copying to streamfiles", + "Create action": "Create action", + "Create duplicate object to new library/object": "Create duplicate object to new library/object", + "Create new filter": "Create new filter", + "Create or maintain Actions. Actions are grouped by the type of file/object they target.": "Create or maintain Actions. Actions are grouped by the type of file/object they target.", + "Created": "Created", + "Created by": "Created by", + "Creating member {0}...": "Creating member {0}...", + "Creating source file {0}.": "Creating source file {0}.", + "Creating streamfile {0}.": "Creating streamfile {0}.", + "current": "current", + "Current Git branch": "Current Git branch", + "Current library, changeable in Library List": "Current library, changeable in Library List", + "Current memory": "Current memory", + "Current user": "Current user", + "Current working directory, changeable in IFS Browser": "Current working directory, changeable in IFS Browser", + "Currently active": "Currently active", + "Custom variables": "Custom variables", + "Debug Server": "Debug Server", + "Debug server started.": "Debug server started.", + "Debug server stopped.": "Debug server stopped.", + "Debug Service": "Debug Service", + "Debug Service Certificate": "Debug Service Certificate", + "Debug Service Eclipse Instance Log": "Debug Service Eclipse Instance Log", + "Debug Service Log": "Debug Service Log", + "Debug service started.": "Debug service started.", + "Debug service stopped.": "Debug service stopped.", + "Debug Service submit options": "Debug Service submit options", + "Debugger {0} Status": "Debugger {0} Status", + "Delete": "Delete", + "Deleting": "Deleting", + "Deleting {0} element(s)...": "Deleting {0} element(s)...", + "Deletion canceled.": "Deletion canceled.", + "directory": "directory", + "Directory of the file on the remote system": "Directory of the file on the remote system", + "Do you want to copy or move the selection to {0}?": "Do you want to copy or move the selection to {0}?", + "Download certificate": "Download certificate", + "Download complete": "Download complete", + "Download Logs": "Download Logs", + "Download To": "Download To", + "Downloading": "Downloading", + "Downloading {0} members": "Downloading {0} members", + "Duplicate": "Duplicate", + "Duplicate action \"{0}\"": "Duplicate action \"{0}\"", + "Edit action \"{0}\"": "Edit action \"{0}\"", + "Enter find term or select one of the previous find terms.": "Enter find term or select one of the previous find terms.", + "Enter find term.": "Enter find term.", + "Enter IFS directory to find files in": "Enter IFS directory to find files in", + "Enter IFS directory to search": "Enter IFS directory to search", + "Enter LIB/SPF/member.ext to search (member.ext is optional and can contain wildcards)": "Enter LIB/SPF/member.ext to search (member.ext is optional and can contain wildcards)", + "Enter password for {0}@{1}": "Enter password for {0}@{1}", + "Enter search term or select one of the previous search terms.": "Enter search term or select one of the previous search terms.", + "Enter search term.": "Enter search term.", + "Enter the path to compare selected with": "Enter the path to compare selected with", + "Enter username for {0}": "Enter username for {0}", + "Environment": "Environment", + "Environment for command to be executed in.": "Environment for command to be executed in.", + "error": "error", + "Error changing description for {0}! {1}": "Error changing description for {0}! {1}", + "Error changing member description! {0}": "Error changing member description! {0}", + "Error copying {0}! {1}": "Error copying {0}! {1}", + "Error copying member(s) to {0}: {1}": "Error copying member(s) to {0}: {1}", + "Error copying object {0}! {1}": "Error copying object {0}! {1}", + "Error creating IFS shortcut! {0}": "Error creating IFS shortcut! {0}", + "Error creating member {0}: {1}": "Error creating member {0}: {1}", + "Error creating new directory! {0}": "Error creating new directory! {0}", + "Error creating new streamfile! {0}": "Error creating new streamfile! {0}", + "Error creating source file! {0}": "Error creating source file! {0}", + "Error deleting member! {0}": "Error deleting member! {0}", + "Error deleting object! {0}": "Error deleting object! {0}", + "Error deleting streamfile! {0}": "Error deleting streamfile! {0}", + "Error downloading file(s): {0}": "Error downloading file(s): {0}", + "Error downloading member(s)! {0}": "Error downloading member(s)! {0}", + "Error finding filenames.": "Error finding filenames.", + "Error loading objects.": "Error loading objects.", + "Error moving object {0}! {1}": "Error moving object {0}! {1}", + "Error renaming connection \"{0}\"! {1}": "Error renaming connection \"{0}\"! {1}", + "Error renaming member! {0}": "Error renaming member! {0}", + "Error renaming object {0}! {1}": "Error renaming object {0}! {1}", + "Error renaming/moving {0}! {1}": "Error renaming/moving {0}! {1}", + "Error searching source members: {0}": "Error searching source members: {0}", + "Error searching streamfiles.": "Error searching streamfiles.", + "Error uploading content to member! {0}": "Error uploading content to member! {0}", + "Error uploading files! {0}": "Error uploading files! {0}", + "errors": "errors", + "Extension of the file (&EXTL for lowercase)": "Extension of the file (&EXTL for lowercase)", + "Extension of the source member (&EXTL for lowercase)": "Extension of the source member (&EXTL for lowercase)", + "Extension/attribute of the object (&EXTL for lowercase)": "Extension/attribute of the object (&EXTL for lowercase)", + "Extensions": "Extensions", + "Failed to connect": "Failed to connect", + "Failed to connect to {0} as {1}": "Failed to connect to {0} as {1}", + "Failed to copy selection to {0}: {1}": "Failed to copy selection to {0}: {1}", + "Failed to download logs to {0}. {1}": "Failed to download logs to {0}. {1}", + "Failed to downloaded logs to {0}": "Failed to downloaded logs to {0}", + "Failed to get library list from command: {0}": "Failed to get library list from command: {0}", + "Failed to get library list from command. Feature not installed.": "Failed to get library list from command. Feature not installed.", + "Failed to move selection to {0}: {1}": "Failed to move selection to {0}: {1}", + "Failed to read debug service detail file {0}: {1}": "Failed to read debug service detail file {0}: {1}", + "Failed to set {0} as current library: {1}": "Failed to set {0} as current library: {1}", + "Failed to start debug server: {0}": "Failed to start debug server: {0}", + "Failed to start debug service: {0}": "Failed to start debug service: {0}", + "Failed to stop debug server: {0}": "Failed to stop debug server: {0}", + "Failed to stop debug service: {0}": "Failed to stop debug service: {0}", + "Fetching member list for {0}.": "Fetching member list for {0}.", + "File type": "File type", + "Files": "Files", + "Filter": "Filter", + "Filter or new library to set as current library": "Filter or new library to set as current library", + "Find {0}": "Find {0}", + "Find in directory": "Find in directory", + "Finding": "Finding", + "Finding filenames with \"{0}\" in {1}.": "Finding filenames with \"{0}\" in {1}.", + "Folders": "Folders", + "Full path of the file on the remote system": "Full path of the file on the remote system", + "Gathering logs...": "Gathering logs...", + "Generate service certificate": "Generate service certificate", + "Get started": "Get started", + "getting streamfiles": "getting streamfiles", + "grep must be installed on the remote system for the IFS search.": "grep must be installed on the remote system for the IFS search.", + "Home directory": "Home directory", + "Host or IP Address": "Host or IP Address", + "Hostname or IP address from the current connection": "Hostname or IP address from the current connection", + "How does one end up with {0} members?": "How does one end up with {0} members?", + "IASP": "IASP", + "IFS shortcuts": "IFS shortcuts", + "ILE": "ILE", + "Incomplete configuration": "Incomplete configuration", + "Invalid path: {0}. Use format LIB/OBJ": "Invalid path: {0}. Use format LIB/OBJ", + "Java Home": "Java Home", + "Java version {0} is not installed.": "Java version {0} is not installed.", + "Job": "Job", + "Job name": "Job name", + "Job number": "Job number", + "Job status": "Job status", + "Job user": "Job user", + "JVM information": "JVM information", + "Last connection": "Last connection", + "Last IBM i connections": "Last IBM i connections", + "Last used: {0}": "Last used: {0}", + "Length": "Length", + "Library {0} does not exist.": "Library {0} does not exist.", + "Library {0} was added to the library list.": "Library {0} was added to the library list.", + "Library {0} was already in the library list.": "Library {0} was already in the library list.", + "Library {0} was removed from the library list.": "Library {0} was removed from the library list.", + "Library is too long.": "Library is too long.", + "Library list": "Library list", + "Library list delimited by comma": "Library list delimited by comma", + "Library list delimited by space": "Library list delimited by space", + "Library list were validated without any errors.": "Library list were validated without any errors.", + "Library must be 10 chars or less.": "Library must be 10 chars or less.", + "Library name too long.": "Library name too long.", + "Library name where the object lives (&LIBRARYL for lowercase)": "Library name where the object lives (&LIBRARYL for lowercase)", + "Library name where the source member lives (&OPENLIBL for lowercase)": "Library name where the source member lives (&OPENLIBL for lowercase)", + "Library to add": "Library to add", + "Lines": "Lines", + "Listening on port(s)": "Listening on port(s)", + "Loading debugger information...": "Loading debugger information...", + "Local certificate": "Local certificate", + "Local certificate doesn't match remote": "Local certificate doesn't match remote", + "Local certificate matches remote": "Local certificate matches remote", + "Local certificate not found": "Local certificate not found", + "Local File (Workspace)": "Local File (Workspace)", + "Login Settings: \"{0}\"": "Login Settings: \"{0}\"", + "Lowercase file type": "Lowercase file type", + "Lowercase name of the object": "Lowercase name of the object", + "Maximum allowed memory": "Maximum allowed memory", + "Member": "Member", + "Member {0} already exists!": "Member {0} already exists!", + "Member was uploaded.": "Member was uploaded.", + "Members": "Members", + "Members download cancelled.": "Members download cancelled.", + "Members download complete.": "Members download complete.", + "Memory pool": "Memory pool", + "Modified": "Modified", + "Move": "Move", + "Move object": "Move object", + "Moved object {0} {1} to {2}.": "Moved object {0} {1} to {2}.", + "Moved object {0} {1} to {2}. Refresh object browser.": "Moved object {0} {1} to {2}. Refresh object browser.", + "Moving object {0} {1} to {2}...": "Moving object {0} {1} to {2}...", + "Name of new library": "Name of new library", + "Name of new path": "Name of new path", + "Name of new source file": "Name of new source file", + "Name of new source member (member.ext)": "Name of new source member (member.ext)", + "Name of new streamfile": "Name of new streamfile", + "Name of profile": "Name of profile", + "Name of the file (&NAMEL for lowercase)": "Name of the file (&NAMEL for lowercase)", + "Name of the file, including the extension": "Name of the file, including the extension", + "Name of the object (&NAMEL for lowercase)": "Name of the object (&NAMEL for lowercase)", + "Name of the parent directory or source file": "Name of the parent directory or source file", + "Name of the source member (&OPENMBRL for lowercase)": "Name of the source member (&OPENMBRL for lowercase)", + "New Action": "New Action", + "New connection name": "New connection name", + "New connection name must be different from its current name": "New connection name must be different from its current name", + "New member name must be different from it's current name": "New member name must be different from it's current name", + "New path for copy of source member": "New path for copy of source member", + "No": "No", + "No connection named \"{0}\" was found": "No connection named \"{0}\" was found", + "No file is open or selected": "No file is open or selected", + "No files or folders selected for upload.": "No files or folders selected for upload.", + "No logs to download": "No logs to download", + "No members to search.": "No members to search.", + "No parameters for connection \"{0}\" was found": "No parameters for connection \"{0}\" was found", + "No refresh": "No refresh", + "No results found finding filenames with \"{0}\" in {1}.": "No results found finding filenames with \"{0}\" in {1}.", + "No results found searching for \"{0}\" in {1}.": "No results found searching for \"{0}\" in {1}.", + "Not connected to an IBM i": "Not connected to an IBM i", + "Not found in {0}": "Not found in {0}", + "Object": "Object", + "Object description must be 50 chars or less.": "Object description must be 50 chars or less.", + "Object filters": "Object filters", + "Object name must be 10 chars or less.": "Object name must be 10 chars or less.", + "Objects in the QSYS file system": "Objects in the QSYS file system", + "Offline": "Offline", + "Oh no! The sandbox is down.": "Oh no! The sandbox is down.", + "Once you delete the directory, it cannot be restored.\nPlease type \"{0}\" to confirm deletion.": "Once you delete the directory, it cannot be restored.\nPlease type \"{0}\" to confirm deletion.", + "Online": "Online", + "Only provide a password if you want to update an existing one or set a new one.": "Only provide a password if you want to update an existing one or set a new one.", + "Only provide a private key if you want to update from the existing one or set one.": "Only provide a private key if you want to update from the existing one or set one.", + "Only provide either the password or a private key - not both.": "Only provide either the password or a private key - not both.", + "Open": "Open", + "Open configuration": "Open configuration", + "Open official Forum": "Open official Forum", + "OpenSSH, RFC4716 and PPK formats are supported.": "OpenSSH, RFC4716 and PPK formats are supported.", + "Overview": "Overview", + "Overwrite": "Overwrite", + "Overwrite all": "Overwrite all", + "Owner": "Owner", + "Parent": "Parent", + "PASE": "PASE", + "Password": "Password", + "Password for server": "Password for server", + "Password updated and will be used for \"{0}\".": "Password updated and will be used for \"{0}\".", + "Path of new folder": "Path of new folder", + "Path to IFS directory": "Path to IFS directory", + "Please connect to an IBM i": "Please connect to an IBM i", + "Please enter value in form LIB/SPF/member.ext": "Please enter value in form LIB/SPF/member.ext", + "Port (SSH)": "Port (SSH)", + "Previous find terms": "Previous find terms", + "Previous search terms": "Previous search terms", + "Private Key": "Private Key", + "Private key updated and will be used for \"{0}\".": "Private key updated and will be used for \"{0}\".", + "QShell": "QShell", + "Recently used": "Recently used", + "Refresh": "Refresh", + "Relative path of the streamfile from the working directory or workspace": "Relative path of the streamfile from the working directory or workspace", + "Remote certificate not found": "Remote certificate not found", + "Remote service certificate exists": "Remote service certificate exists", + "Remove auth methods": "Remove auth methods", + "Rename {0}": "Rename {0}", + "Rename connection \"{0}\"": "Rename connection \"{0}\"", + "Rename object": "Rename object", + "Renamed object {0} {1} to {2}.": "Renamed object {0} {1} to {2}.", + "Renaming object {0} {1} to {2}...": "Renaming object {0} {1} to {2}...", + "Report an Issue": "Report an Issue", + "Reset to default": "Reset to default", + "Restart": "Restart", + "Retry": "Retry", + "Review Issues": "Review Issues", + "Run on protected/read only": "Run on protected/read only", + "Runs as an ILE command": "Runs as an ILE command", + "Runs the command in the PASE environment": "Runs the command in the PASE environment", + "Runs the command through QShell": "Runs the command through QShell", + "Save": "Save", + "Save Password": "Save Password", + "Saved current settings to profile \"{0}\".": "Saved current settings to profile \"{0}\".", + "Search {0}": "Search {0}", + "Search {0} {1}": "Search {0} {1}", + "Search directory": "Search directory", + "Search source file": "Search source file", + "Searching": "Searching", + "Select an action to duplicate": "Select an action to duplicate", + "Select IFS shortcut to remove": "Select IFS shortcut to remove", + "Select the logs you would like to download": "Select the logs you would like to download", + "Select the settings to copy from \"{0}\" to \"{1}\"": "Select the settings to copy from \"{0}\" to \"{1}\"", + "sending {0} directory...": "sending {0} directory...", + "sending {0} file(s)...": "sending {0} file(s)...", + "shortcut": "shortcut", + "Size": "Size", + "Skip": "Skip", + "Skip all": "Skip all", + "Sorry, but the sandbox is offline right now. Try again another time.": "Sorry, but the sandbox is offline right now. Try again another time.", + "Source file name where the source member lives (&OPENSPFL for lowercase)": "Source file name where the source member lives (&OPENSPFL for lowercase)", + "Source filename must be 10 chars or less.": "Source filename must be 10 chars or less.", + "Source members in the QSYS file system": "Source members in the QSYS file system", + "Start": "Start", + "Start time": "Start time", + "Starting debug server...": "Starting debug server...", + "Starting debug service...": "Starting debug service...", + "Status": "Status", + "Still searching \"{0}\" in {1}...": "Still searching \"{0}\" in {1}...", + "Stop": "Stop", + "Stopping debug server...": "Stopping debug server...", + "Stopping debug service...": "Stopping debug service...", + "stored": "stored", + "streamfile": "streamfile", + "Streamfile": "Streamfile", + "Streamfiles in the IFS": "Streamfiles in the IFS", + "Subsystem": "Subsystem", + "Successfully downloaded logs to {0}": "Successfully downloaded logs to {0}", + "Switched to profile \"{0}\".": "Switched to profile \"{0}\".", + "Text": "Text", + "Thanks for trying the Code for IBM i Sandbox!": "Thanks for trying the Code for IBM i Sandbox!", + "The browser level to refresh after the action is done": "The browser level to refresh after the action is done", + "The directory has file(s) with unsaved changes.": "The directory has file(s) with unsaved changes.", + "The entire browser is refreshed": "The entire browser is refreshed", + "The file has unsaved changes.": "The file has unsaved changes.", + "The file path could not be parsed.": "The file path could not be parsed.", + "The following libraries were removed from the updated library list as they are invalid: {0}": "The following libraries were removed from the updated library list as they are invalid: {0}", + "The member has unsaved changes.": "The member has unsaved changes.", + "The parent container is refreshed": "The parent container is refreshed", + "The parent filter is refreshed": "The parent filter is refreshed", + "The same as &CURLIB": "The same as &CURLIB", + "The types of files this action can support.": "The types of files this action can support.", + "This is taking a while because there are {0} members. Searching \"{1}\" in {2} still.": "This is taking a while because there are {0} members. Searching \"{1}\" in {2} still.", + "This Visual Studio Code instance is already connected to a server.": "This Visual Studio Code instance is already connected to a server.", + "This will reset the User Library List, working directory and Custom Variables back to the defaults.": "This will reset the User Library List, working directory and Custom Variables back to the defaults.", + "Type": "Type", + "Type of the object (&TYPEL for lowercase)": "Type of the object (&TYPEL for lowercase)", + "Unable to delete protected directories from the IFS Browser!\n{0}": "Unable to delete protected directories from the IFS Browser!\n{0}", + "Upload": "Upload", + "Upload completed.": "Upload completed.", + "Use the Server Browser to select which system to connect to.": "Use the Server Browser to select which system to connect to.", + "User directory": "User directory", + "User for server": "User for server", + "Username": "Username", + "Username for connection": "Username for connection", + "Valid parameters for SBMJOB": "Valid parameters for SBMJOB", + "What do you want to upload?": "What do you want to upload?", + "What's so special about \"{0}\" anyway?": "What's so special about \"{0}\" anyway?", + "While you wait, why not make some tea?": "While you wait, why not make some tea?", + "Why was six afraid of seven?": "Why was six afraid of seven?", + "Work with Actions": "Work with Actions", + "Working directory changed to {0}.": "Working directory changed to {0}.", + "Would you like to add the new library to the library list?": "Would you like to add the new library to the library list?", + "Wow. This really is taking a while. Let's hope you get the result you want.": "Wow. This really is taking a while. Let's hope you get the result you want.", + "Yes": "Yes", + "You are using this system at your own risk. Do not share any sensitive or private information.": "You are using this system at your own risk. Do not share any sensitive or private information.", + "Your changes will be discarded": "Your changes will be discarded" +} \ No newline at end of file diff --git a/l10n/bundle.l10n.no.json b/l10n/bundle.l10n.no.json new file mode 100644 index 000000000..13ea04ed6 --- /dev/null +++ b/l10n/bundle.l10n.no.json @@ -0,0 +1,408 @@ +{ + " (Press \"Escape\" to cancel)": " (Tryk \"Escape\" for å avbryte)", + " (previous connection)": " (forrige forbindelse)", + "\"{0}\" in {1}.": "\"{0}\" i {1}.", + "\"findutils\" must be installed on the remote system.": "\"findutils\" must be installed on the remote system.", + "(current library)": "(nåværende bibliotek)", + "(in ASP {0})": "(i ASP {0})", + "{0} {1} occurred while listing files.": "{0} {1} oppstod ved visning av filer.", + "{0} already exists.\nDo you want to replace it?": "{0} eksisterer allerede.\nVil du erstatte den?", + "{0} file(s) contain(s) '{1}'": "{0} file(s) contain(s) '{1}'", + "{0} file(s) named '{1}'": "{0} file(s) named '{1}'", + "{0} is already current library.": "{0} er allerede det aktuelle biblioteket.", + "{0} is not a directory.": "{0} er ikke en mappe.", + "{0} member(s) copied to streamfile(s) in {1}.": "{0} member(s) kopiert til streamfile(s) i {1}.", + "{0} not found under {1}": "{0} er ikke funnet under {1}", + "{0} was copied to {1}.": "{0} ble kopiert til {1}.", + "{0} was moved to {1}.": "{0} ble flyttet til {1}.", + "{0} was renamed to {1}.": "{0} ble omdøpt til {1}.", + "{0} was the working directory; it is now {1}.": "{0} var den aktuelle mappen; det er nå {1}.", + "$(trash) Clear list": "$(trash) Tøm liste", + "A comma delimited list of extensions for this action. This can be a member extension, a streamfile extension, an object type or an object attribute": "En komma-separeret liste av typer for denne handlingen. Dette kan være en member type, en streamfile filtype, en objekt type eller en objekt attributt.", + "Action name": "Handlingsnavn", + "Actions for local files in the VS Code Workspace.": "Handlinger for lokale filer i VS Code Workspace.", + "Active job": "Aktive jobber", + "Allows the execution of this Action on protected or read only targets": "Tillater avvikling av denne handling på sikrede eller skrive-beskyttede mål", + "Are you sure you want overwrite member {0}?": "Vil du overskrive member {0}?", + "Are you sure you want to delete {0}?": "Er du sikker på å du vil slette {0}?", + "Are you sure you want to delete the \"{0}\" profile?": "Er du sikker på å du vil slette profilen \"{0}\"?", + "Are you sure you want to delete the {0} selected files?": "Er du sikker på å du vil slette de {0} valgte filene?", + "Are you sure you want to delete the action \"{0}\"?": "Er du sikker på du vil slette \"{0}\"?", + "Are you sure you want to delete the connection \"{0}\"?": "Er du sikker på å du vil slette forbindelsen \"{0}\"?", + "Are you sure you want to delete these {0} connections?": "Er du sikker på å du vil slette disse {0} forbindelsene?", + "Are you sure you want to delete these {0} elements?": "Er du sikker på å du vil slette de {0} valgte elementene?", + "Attribute": "Attributt", + "Authentication methods removed for \"{0}\".": "Passord og privat nøkkel er fjernet for \"{0}\".", + "Below are available variables based on the Type you have select below. You can specify different commands on each line. Each command run is stateless and run in their own job.": "Nedenfor er de tilgjengelige variabler, baseret på objekt typen. Du kan angi forskjellige kommandoer på hver linje. Hver kommando er \"stateless\" og kjører i sin egen jobb.", + "Branch library, based on the current branch": "Bibliotek for nåværende Git-gren", + "Browser": "Vindu", + "Cancel": "Avbryt", + "Cannot copy member to itself!": "Kan ikke kopiere et member til seg selv!", + "Cannot create library \"{0}\": {1}": "Kan ikke opprette bibliotek \"{0}\": {1}", + "Cannot search listings using *ALL.": "Kan ikke søke med *ALL.", + "CCSID": "CCSID", + "Certificate needs to be regenerated": "Certificate needs to be regenerated", + "Change current library": "Endre nåværende bibliotek", + "Change member description for {0}, *BLANK for no description": "Oppdater beskrivelse av member {0}, *BLANK for ingen beskrivelse", + "Change object description for {0}, *BLANK for no description": "Oppdater objekt beskrivelse for {0}, *BLANK for ingen beskrivelse", + "Changed": "Endret", + "Changed current library to {0}.": "Endret nåværende bibliotek til {0}.", + "Changed object description for {0} {1}.": "Endret objekt beskrivelsen for {0} {1}.", + "Changing library list (can use \"*reset\")": "Endre biblioteksliste (du kan bruke \"*reset\")", + "Changing working directory": "Endrer nåværende mappe", + "Cleared list.": "Tømt liste.", + "Code for IBM i Log": "Code for IBM i Log", + "Command profiles": "Kommando profiler", + "Command(s) to run": "Kommandoer", + "Compare with": "Compare with", + "Compare with Active File": "Compare with Active File", + "Connect": "Forbind", + "Connect to IBM i": "Connect til IBM i", + "Connection \"{0}\" already exists": "Forbindelsen \"{0}\" eksisterer allerede", + "Connection \"{0}\" already exists.": "Forbindelsen \"{0}\" finnes allerede.", + "Connection profiles": "Forbindelses profiler", + "Connection to {0} ended as no password was provided.": "Forbindelsen til {0} er avsluttet, da ikke noe passord ble agitt.", + "Continue": "Fortsett", + "Copied object {0} {1} to {2}.": "Kopiert objekt {0} {1} til {2}.", + "Copied object {0} {1} to {2}. Refresh object browser.": "Kopiert objekt {0} {1} til {2}. Forny object browser.", + "Copy": "Kopier", + "Copy connection \"{0}\"": "Kopier forbindelsen \"{0}\"", + "copying to streamfiles": "kopiering til streamfiles", + "Create action": " Opprett handling", + "Create duplicate object to new library/object": "Kopier objekt til nytt bibliotek/objekt", + "Create new filter": "Opprett nytt filter", + "Create or maintain Actions. Actions are grouped by the type of file/object they target.": "Opprett eller revider handlinger. Handlinger er gruppert etter typen på de berørte filene/objektene.", + "Created": " Opprettet", + "Created by": " Opprettet av", + "Creating member {0}...": "Oppretter member {0}...", + "Creating source file {0}.": "Oppretter source fil {0}.", + "Creating streamfile {0}.": "Oppretter streamfile {0}.", + "current": "nåværende", + "Current Git branch": "Nåværende git-gren", + "Current library, changeable in Library List": "Aktuelle bibliotek (settes i Library List)", + "Current memory": "Nåværende memory", + "Current user": "Aktuell bruker", + "Current working directory, changeable in IFS Browser": "Nåværende arbeidsmappe, kan endres i IFS Browser", + "Currently active": "Nåværende", + "Custom variables": "Tilpassede variabler", + "Debug Server": "Debug Server", + "Debug server started.": "Debug server har startet.", + "Debug server stopped.": "Debug server er stoppet.", + "Debug Service": "Debug Service", + "Debug Service Certificate": "Debug Service sertifikat", + "Debug Service Eclipse Instance Log": "Debug Service Eclipse Instance Log", + "Debug Service Log": "Debug Service Log", + "Debug service started.": "Debug service har startet.", + "Debug service stopped.": "Debug service har stoppet.", + "Debug Service submit options": "Debug Service submit options", + "Debugger {0} Status": "Debugger {0} status", + "Delete": "Slett", + "Deleting": "Sletter", + "Deleting {0} element(s)...": "Sletting av {0} element(er)...", + "Deletion canceled.": "Sletting avbrutt.", + "directory": "mappe", + "Directory of the file on the remote system": "Katalog over filen på fjernsystemet", + "Do you want to copy or move the selection to {0}?": "Vil du kopiere eller flytte det valgte til {0}?", + "Download certificate": "Hent sertifikat", + "Download complete": "Hentning gjennomført.", + "Download Logs": "Download Logs", + "Download To": "Download To", + "Downloading": "Henter", + "Downloading {0} members": "Laster ned {0} members", + "Duplicate": "Kopier", + "Duplicate action \"{0}\"": "Kopier handling \"{0}\"", + "Edit action \"{0}\"": "Revider handling \"{0}\"", + "Enter find term or select one of the previous find terms.": "Enter find term or select one of the previous find terms.", + "Enter find term.": "Enter find term.", + "Enter IFS directory to find files in": "Enter IFS directory to find files in", + "Enter IFS directory to search": "Tast inn IFS mappe for søk", + "Enter LIB/SPF/member.ext to search (member.ext is optional and can contain wildcards)": "Tast inn LIB/SPF/member.ext for å søke (member.ext er valgfritt og kan inneholde wildcards)", + "Enter password for {0}@{1}": "Tast inn passord for {0}@{1}", + "Enter search term or select one of the previous search terms.": "Tast inn søketekst eller velg en av de forrige søkene.", + "Enter search term.": "Tast inn søketekst.", + "Enter the path to compare selected with": "Enter the path to compare selected with", + "Enter username for {0}": "Tast inn brukernavn for {0}", + "Environment": "Miljø", + "Environment for command to be executed in.": "Miljø som kommandoen skal kjøres i.", + "error": "feil", + "Error changing description for {0}! {1}": "Feil ved endring av objekt beskrivelse for {0}! {1}", + "Error changing member description! {0}": "Feil ved endring av member beskrivelse! {0}", + "Error copying {0}! {1}": "Feil ved kopiering av {0}! {1}", + "Error copying member(s) to {0}: {1}": "Feil ved kopiering av member(s) til {0}: {1}", + "Error copying object {0}! {1}": "Feil ved kopiering av objekt {0}! {1}", + "Error creating IFS shortcut! {0}": "Feil ved opprettelse av IFS snarvei! {0}", + "Error creating member {0}: {1}": "Feil ved opprettelse av member {0}: {1}", + "Error creating new directory! {0}": "Feil ved opprettelse av ny mappe! {0}", + "Error creating new streamfile! {0}": "Feil ved opprettelse av ny streamfile! {0}", + "Error creating source file! {0}": "Feil ved opprettelse av source fil! {0}", + "Error deleting member! {0}": "Feil ved sletting av member! {0}", + "Error deleting object! {0}": "Feil ved sletting av objekt! {0}", + "Error deleting streamfile! {0}": "Feil ved sletting av streamfile! {0}", + "Error downloading file(s): {0}": "Feil under hentning: {0}", + "Error downloading member(s)! {0}": "Feil med nedlasting av member(s)! {0}", + "Error finding filenames.": "Error finding filenames.", + "Error loading objects.": "Feil ved les av objekter.", + "Error moving object {0}! {1}": "Feil ved flytting av objekt {0}! {1}", + "Error renaming connection \"{0}\"! {1}": "Feil ved omdøping av forbindelsen \"{0}\"! {1}", + "Error renaming member! {0}": "Feil ved omdøping av member! {0}", + "Error renaming object {0}! {1}": "Feil ved omdøping av objekt {0}! {1}", + "Error renaming/moving {0}! {1}": "Feil ved flytting/omdøping av {0}! {1}", + "Error searching source members: {0}": "Feil ved søk i members: {0}", + "Error searching streamfiles.": "Feil ved søk i filer.", + "Error uploading content to member! {0}": "Feil ved utsendelse av fil! {0}", + "Error uploading files! {0}": "Feil ved upload av filer! {0}", + "errors": "feil", + "Extension of the file (&EXTL for lowercase)": "Filtypen (&EXTL for små bokstaver)", + "Extension of the source member (&EXTL for lowercase)": "Type av source member (&EXTL for små bokstaver)", + "Extension/attribute of the object (&EXTL for lowercase)": "Objektets attributt (&EXTL for små bokstaver)", + "Extensions": "Typer", + "Failed to connect": "Feil ved forbindelse", + "Failed to connect to {0} as {1}": "Feil ved forbindelse til {0} som {1}", + "Failed to copy selection to {0}: {1}": "Feil ved kopiering av det valgte til {0}: {1}", + "Failed to download logs to {0}. {1}": "Failed to download logs to {0}. {1}", + "Failed to downloaded logs to {0}": "Failed to downloaded logs to {0}", + "Failed to get library list from command: {0}": "Feil ved å hente bibliotekslisten fra kommando: {0}", + "Failed to get library list from command. Feature not installed.": "Feil ved å hente bibliotekslisten fra kommando. Feature er ikke installert.", + "Failed to move selection to {0}: {1}": "Feil ved flytting av det valgte til {0}: {1}", + "Failed to read debug service detail file {0}: {1}": "Feil ved lesning av debug service detail fil {0}: {1}", + "Failed to set {0} as current library: {1}": "Feil ved skift til {0} som aktuelt bibliotek: {1}", + "Failed to start debug server: {0}": "Feil ved start av debug server: {0}", + "Failed to start debug service: {0}": "Feil ved start av debug service: {0}", + "Failed to stop debug server: {0}": "Feil ved stopp av debug server: {0}", + "Failed to stop debug service: {0}": "Feil ved stopp av debug service: {0}", + "Fetching member list for {0}.": "Henter member liste for {0}.", + "File type": "Filtypen", + "Files": "Filer", + "Filter": "Filter", + "Filter or new library to set as current library": "Filter eller nytt bibliotek å sette som nåværende bibliotek", + "Find {0}": "Find {0}", + "Find in directory": "Find in directory", + "Finding": "Finding", + "Finding filenames with \"{0}\" in {1}.": "Finding filenames with \"{0}\" in {1}.", + "Folders": "Mapper", + "Full path of the file on the remote system": "Full sti på filen på fjernsystemet", + "Gathering logs...": "Gathering logs...", + "Generate service certificate": "Generer service sertifikat", + "Get started": "Dokumentasjon", + "getting streamfiles": "henter streamfiles", + "grep must be installed on the remote system for the IFS search.": "\"grep\" må være installert på systemet for å søke i IFS.", + "Home directory": "Aktuell mappe", + "Host or IP Address": "Vertsnavn eller IP adresse", + "Hostname or IP address from the current connection": "Host navn eller IP adresse fra gjeldende forbindelse", + "How does one end up with {0} members?": "Hvordan i allverden ender man opp med {0} members?", + "IASP": "IASP", + "IFS shortcuts": "IFS snarveier", + "ILE": "ILE", + "Incomplete configuration": "Incomplete configuration", + "Invalid path: {0}. Use format LIB/OBJ": "Forkert sti: {0}. Bruk formatet LIB/OBJ", + "Java Home": "Java Home", + "Java version {0} is not installed.": "Java version {0} is not installed.", + "Job": "Jobb", + "Job name": "Jobb navn", + "Job number": "Jobb nummer", + "Job status": "Jobb status", + "Job user": "Jobb bruker", + "JVM information": "JVM information", + "Last connection": "Siste forbindelse", + "Last IBM i connections": "Siste IBM i forbindelse", + "Last used: {0}": "Sist brukt: {0}", + "Length": "Lengde", + "Library {0} does not exist.": "Bibliotek {0} finnes ikke.", + "Library {0} was added to the library list.": "Bibliotek {0} ble lagt til i bibliotekslisten.", + "Library {0} was already in the library list.": "Bibliotek {0} er allerede i bibliotekslisten.", + "Library {0} was removed from the library list.": "Bibliotek {0} ble fjernet fra bibliotekslisten.", + "Library is too long.": "Bibioteksnavn er for langt.", + "Library list": "Bibliotekliste", + "Library list delimited by comma": "Bibliotekliste adskilt med komma", + "Library list delimited by space": "Bibliotekliste adskilt med mellomrom", + "Library list were validated without any errors.": "Bibliotekslisten ble valideret uden feil.", + "Library must be 10 chars or less.": "Biblioteknavn må være 10 tegn eller mindre.", + "Library name too long.": "Biblioteknavn er for langt.", + "Library name where the object lives (&LIBRARYL for lowercase)": "Biblioteknavn med objektet (&LIBRARYL for små bokstaver)", + "Library name where the source member lives (&OPENLIBL for lowercase)": "Biblioteknavn med source member (&OPENLIBL for små bokstaver)", + "Library to add": "Legg til bibliotek", + "Lines": "Linjer", + "Listening on port(s)": "Lytter på port(er)", + "Loading debugger information...": "Henter debugger information...", + "Local certificate": "Lokalt sertifikat", + "Local certificate doesn't match remote": "Lokalt sertifikat matcher ikke vertens", + "Local certificate matches remote": "Lokalt sertifikat matcher vertens", + "Local certificate not found": "Lokalt sertifikat er ikke funnet", + "Local File (Workspace)": "Lokal fil (workspace)", + "Login Settings: \"{0}\"": "Login Innstillinger: \"{0}\"", + "Lowercase file type": "Filtypen med små bokstaver", + "Lowercase name of the object": "Navn på objektet med små bokstaver", + "Maximum allowed memory": "Maksimalt tillatt memory", + "Member": "Member", + "Member {0} already exists!": "Member {0} eksisterer allerede!", + "Member was uploaded.": "Fil ble sendt til member.", + "Members": "Members", + "Members download cancelled.": "Nedlasting av members avbrutt.", + "Members download complete.": "Nedlasting av members er ferdig.", + "Memory pool": "Memory pulje", + "Modified": "Endret", + "Move": "Flytt", + "Move object": "Flytt objekt", + "Moved object {0} {1} to {2}.": "Flyttet objekt {0} {1} til {2}.", + "Moved object {0} {1} to {2}. Refresh object browser.": "Flyttet objekt {0} {1} til {2}. Forny object browser.", + "Moving object {0} {1} to {2}...": "Flytter objekt {0} {1} til {2}...", + "Name of new library": "Navn på nytt bibliotek", + "Name of new path": "Nytt navn", + "Name of new source file": "Navn på ny source fil", + "Name of new source member (member.ext)": "Navn på nytt member (member.ext)", + "Name of new streamfile": "Navn på ny streamfile", + "Name of profile": "Navn på profil", + "Name of the file (&NAMEL for lowercase)": "Navn på filen (&NAMEL for små bokstaver)", + "Name of the file, including the extension": "Navn på filen, inklusive filtypen", + "Name of the object (&NAMEL for lowercase)": "Navn på objektet (&NAMEL for små bokstaver)", + "Name of the parent directory or source file": "Navn på forrige mappe eller source fil", + "Name of the source member (&OPENMBRL for lowercase)": "Navn på source member (&OPENMBRL for små bokstaver)", + "New Action": "Opprett ny handling", + "New connection name": "Navn på ny forbindelse", + "New connection name must be different from its current name": "Nytt forbindelses navn må være forskjellig fra nåværende navn", + "New member name must be different from it's current name": "Nytt member navn må være forskjellig fra det nåværende navnet", + "New path for copy of source member": "Ny sti for kopiering av source member", + "No": "Nei", + "No connection named \"{0}\" was found": "Ingen forbindelse med navnet \"{0}\" ble funnet", + "No file is open or selected": "No file is open or selected", + "No files or folders selected for upload.": "Ingen filer eller mapper er valgt til upload.", + "No logs to download": "No logs to download", + "No members to search.": "Det er ingen members å søke i.", + "No parameters for connection \"{0}\" was found": "Ingen parametre til forbindelsen \"{0}\" ble funnet", + "No refresh": "Ingen fornying", + "No results found finding filenames with \"{0}\" in {1}.": "No results found finding filenames with \"{0}\" in {1}.", + "No results found searching for \"{0}\" in {1}.": "Søk etter \"{0}\" i {1} ga ingen resultat.", + "Not connected to an IBM i": "Ikke connected til en IBM i", + "Not found in {0}": "Ikke funnet i {0}", + "Object": "Objekt", + "Object description must be 50 chars or less.": "Objekt beskrivelse må være 50 tegn eller mindre.", + "Object filters": "Objekt filtere", + "Object name must be 10 chars or less.": "Objektnavn må være 10 tegn eller mindre.", + "Objects in the QSYS file system": "Objekter i QSYS filsystemet", + "Offline": "Offline", + "Oh no! The sandbox is down.": "Åh nei! \"Sandkassen\" er ikke tilgjengelig.", + "Once you delete the directory, it cannot be restored.\nPlease type \"{0}\" to confirm deletion.": "Når du har slettet mappen, kan den ikke gjenopprettes.\nVennligst tast \"{0}\" for å bekrefte sletting.", + "Online": "Online", + "Only provide a password if you want to update an existing one or set a new one.": "Angi kun et passord hvis du ønsker å endre det eksisterende eller opprette et nytt.", + "Only provide a private key if you want to update from the existing one or set one.": "Angi kun en privat nøkkel hvis du ønsker å oppdatere den aktuelle eller lage en ny.", + "Only provide either the password or a private key - not both.": "Angi enten passord eller privat nøkkel - ikke begge deler.", + "Open": "Open", + "Open configuration": "Åpne konfigurasjon", + "Open official Forum": "Forum", + "OpenSSH, RFC4716 and PPK formats are supported.": "OpenSSH, RFC4716 og PPK formater understøttes.", + "Overview": "Oversikt", + "Overwrite": "Erstatt", + "Overwrite all": "Erstatt alle", + "Owner": "Eier", + "Parent": "Container", + "PASE": "PASE", + "Password": "Passord", + "Password for server": "Passord for server", + "Password updated and will be used for \"{0}\".": "Passord er oppdatert og brukes for \"{0}\".", + "Path of new folder": "Sti til ny mappe", + "Path to IFS directory": "Sti til IFS mappe", + "Please connect to an IBM i": "Please connect to an IBM i", + "Please enter value in form LIB/SPF/member.ext": "Vennligst tast inn verdi på formatet LIB/SPF/member.ext", + "Port (SSH)": "Port (SSH)", + "Previous find terms": "Previous find terms", + "Previous search terms": "Tidligere søk", + "Private Key": "Privat nøkkel", + "Private key updated and will be used for \"{0}\".": "Privat nøkkel er oppdatert og brukes for \"{0}\".", + "QShell": "QSHELL", + "Recently used": "Tidligere brukt", + "Refresh": "Forny", + "Relative path of the streamfile from the working directory or workspace": "Relativ sti til streamfilen fra arbeidsbiblioteket eller arbeidsområdet", + "Remote certificate not found": "Vertens sertifikat er ikke funnet", + "Remote service certificate exists": "Remote service sertifikat eksisterer", + "Remove auth methods": "Fjern passord+nøkkel", + "Rename {0}": "Omdøp member {0}", + "Rename connection \"{0}\"": "Omdøp forbindelsen \"{0}\"", + "Rename object": "Omdøp objekt", + "Renamed object {0} {1} to {2}.": "Omdøpt objekt {0} {1} til {2}.", + "Renaming object {0} {1} to {2}...": "Omdøper objekt {0} {1} til {2}...", + "Report an Issue": " Opprett en feilrapport", + "Reset to default": "Nullstil til standard", + "Restart": "Omstart", + "Retry": "Prøv igen", + "Review Issues": "Se feilrapporter", + "Run on protected/read only": "Kjør på sikret/skrive-beskyttet", + "Runs as an ILE command": "Kjøres som ILE kommando", + "Runs the command in the PASE environment": "Kjøres som kommando i PASE", + "Runs the command through QShell": "Kjøres som kommando i QSHELL", + "Save": "Lagre", + "Save Password": "Lagre passord", + "Saved current settings to profile \"{0}\".": "Lagret nåværende innstillinger til profilen \"{0}\".", + "Search {0}": "Søk i {0}", + "Search {0} {1}": "Søk i {0} {1}", + "Search directory": "Søk i mappe", + "Search source file": "Søk i source fil", + "Searching": "Søker", + "Select an action to duplicate": "Velg en handling til kopiering", + "Select IFS shortcut to remove": "Velg IFS snarvei å slette", + "Select the logs you would like to download": "Select the logs you would like to download", + "Select the settings to copy from \"{0}\" to \"{1}\"": "Velg instillingene det skal kopieres fra \"{0}\" til \"{1}\"", + "sending {0} directory...": "sender {0} mappe(r)...", + "sending {0} file(s)...": "sender {0} file(r)...", + "shortcut": "snarvei", + "Size": "Størrelse", + "Skip": "Hopp over", + "Skip all": "Hopp over alle", + "Sorry, but the sandbox is offline right now. Try again another time.": "Dessverre, men \"Sandkassen\" er ikke tilgjengelig akkurat nå. Prøv igjen litt senere.", + "Source file name where the source member lives (&OPENSPFL for lowercase)": "Source fil navn med source member (&OPENSPFL for små bokstaver)", + "Source filename must be 10 chars or less.": "Source filnavn må være 10 tegn eller mindre.", + "Source members in the QSYS file system": "Source members i QSYS filsystemet", + "Start": "Start", + "Start time": "Starttid", + "Starting debug server...": "Starter debug server...", + "Starting debug service...": "Starter debug service...", + "Status": "Status", + "Still searching \"{0}\" in {1}...": "Søker fortsatt etter \"{0}\" i {1}...", + "Stop": "Stopp", + "Stopping debug server...": "Stopper debug server...", + "Stopping debug service...": "Stopper debug service...", + "stored": "Lagret", + "streamfile": "fil", + "Streamfile": "Streamfile", + "Streamfiles in the IFS": "Filer i det integrerte filsystemet (IFS)", + "Subsystem": "Subsystem", + "Successfully downloaded logs to {0}": "Successfully downloaded logs to {0}", + "Switched to profile \"{0}\".": "Endret til profil \"{0}\".", + "Text": "Tekst", + "Thanks for trying the Code for IBM i Sandbox!": "Takk for å at du prøver Code for IBM i Sandbox!", + "The browser level to refresh after the action is done": "Lister nivået for fornying etter handling er utført.", + "The directory has file(s) with unsaved changes.": "The directory has file(s) with unsaved changes.", + "The entire browser is refreshed": "Hele vinduet blir fornyet", + "The file has unsaved changes.": "Filen har ulagrede endringer.", + "The file path could not be parsed.": "Filstien kunne ikke fortolkes.", + "The following libraries were removed from the updated library list as they are invalid: {0}": "Følgende biblioteker ble fjernet fra den oppdaterte bibliotekslisten, da de ikke er gyldige: {0}", + "The member has unsaved changes.": "Memberet har ulagrede endringer.", + "The parent container is refreshed": "Den aktuelle containeren blir fornyet", + "The parent filter is refreshed": "Det aktuelle filteret blir fornyet", + "The same as &CURLIB": "Det samme som &CURLIB", + "The types of files this action can support.": "Typer understøttet av denne handling.", + "This is taking a while because there are {0} members. Searching \"{1}\" in {2} still.": "Dette kan ta litt tid da det er {0} members. Søker fortsatt etter \"{1}\" i {2}.", + "This Visual Studio Code instance is already connected to a server.": "Denne Visual Studio Code instansen er allerede forbundet til en server.", + "This will reset the User Library List, working directory and Custom Variables back to the defaults.": "Dette vil nullstille bibliotekslisten, nåværende mappe og Bruker Variabler.", + "Type": "Type", + "Type of the object (&TYPEL for lowercase)": "Typen av objektet (&TYPEL for små bokstaver)", + "Unable to delete protected directories from the IFS Browser!\n{0}": "Ikke tillatt å slette valgte mapper fra IFS Browser.\n{0}", + "Upload": "Upload", + "Upload completed.": "Upload er utført.", + "Use the Server Browser to select which system to connect to.": "Bruk Server vinduet til å velge hvilket system som skal kobles til.", + "User directory": "Bruker mappe", + "User for server": "Bruker for server", + "Username": "Brukernavn", + "Username for connection": "Brukernavn for forbindelsen", + "Valid parameters for SBMJOB": "Gyldige parametere for SBMJOB", + "What do you want to upload?": "Hva ønsker du å uploade?", + "What's so special about \"{0}\" anyway?": "Hva er egentligt så spesielt med \"{0}\"?", + "While you wait, why not make some tea?": "Hva med å hente en kopp kaffe mens du venter?", + "Why was six afraid of seven?": "Der er 10 slags mennesker - de som forstår binært og dem, som ikke gjør det!", + "Work with Actions": "Arbeid med handlinger", + "Working directory changed to {0}.": "Nåværende mappe er endret til {0}.", + "Would you like to add the new library to the library list?": "Vil du tilføye det nye biblioteket til bibliotekslisten?", + "Wow. This really is taking a while. Let's hope you get the result you want.": "Uha, dette tar virkelig lang tid. La oss håpe du får ønsket resultat.", + "Yes": "Ja", + "You are using this system at your own risk. Do not share any sensitive or private information.": "Du bruker dette systemet på egen risiko. Ikke del sensitiv eller privat informasjon.", + "Your changes will be discarded": "Dine endringer vil bli slettet" +} \ No newline at end of file diff --git a/l10n/bundle.l10n.pl.json b/l10n/bundle.l10n.pl.json new file mode 100644 index 000000000..a75fad1c7 --- /dev/null +++ b/l10n/bundle.l10n.pl.json @@ -0,0 +1,408 @@ +{ + " (Press \"Escape\" to cancel)": "(Naciśnij \"Escape\", aby anulować)", + " (previous connection)": "(poprzednie połączenie)", + "\"{0}\" in {1}.": "\"{0}\" w {1}.", + "\"findutils\" must be installed on the remote system.": "\"findutils\" must be installed on the remote system.", + "(current library)": "(bieżąca biblioteka)", + "(in ASP {0})": "(w ASP {0})", + "{0} {1} occurred while listing files.": "Podczas wyświetlania listowania plików wystąpił {0} {1}.", + "{0} already exists.\nDo you want to replace it?": "{0} już istnieje.\nCzy chcesz go wymienić?", + "{0} file(s) contain(s) '{1}'": "{0} file(s) contain(s) '{1}'", + "{0} file(s) named '{1}'": "{0} file(s) named '{1}'", + "{0} is already current library.": "{0} jest już biblioteką bieżącą.", + "{0} is not a directory.": "{0} nie jest katalogiem.", + "{0} member(s) copied to streamfile(s) in {1}.": "{0} podzbiór(y) skopiowano do pliku(ów) strumieniowych w {1}.", + "{0} not found under {1}": "Nie znaleziono {0} w obszarze {1}", + "{0} was copied to {1}.": "{0} został skopiowany do {1}.", + "{0} was moved to {1}.": "{0} został przeniesiony do {1}.", + "{0} was renamed to {1}.": "Nazwa {0} została zmieniona na {1}.", + "{0} was the working directory; it is now {1}.": "{0} był katalogiem roboczym; teraz jest {1}.", + "$(trash) Clear list": "$(trash) Wyczyść listę", + "A comma delimited list of extensions for this action. This can be a member extension, a streamfile extension, an object type or an object attribute": "Rozdzielana przecinkami lista rozszerzeń dla tej akcji. Może to być typ podzbioru, rozszerzenie pliku strumieniowego, typ obiektu lub atrybut obiektu", + "Action name": "Nazwa akcji", + "Actions for local files in the VS Code Workspace.": "Akcje dla plików lokalnych w obszarze roboczym VS Code.", + "Active job": "Aktywne zadanie", + "Allows the execution of this Action on protected or read only targets": "Umożliwia wykonanie tej akcji na elementach chronionych lub tylko do odczytu", + "Are you sure you want overwrite member {0}?": "Czy na pewno chcesz nadpisać podzbiór {0}?", + "Are you sure you want to delete {0}?": "Czy na pewno chcesz usunąć {0}?", + "Are you sure you want to delete the \"{0}\" profile?": "Czy na pewno chcesz usunąć profil \"{0}\"?", + "Are you sure you want to delete the {0} selected files?": "Czy na pewno chcesz usunąć wybrane pliki ({0})?", + "Are you sure you want to delete the action \"{0}\"?": "Czy na pewno chcesz usunąć akcję \"{0}\"?", + "Are you sure you want to delete the connection \"{0}\"?": "Czy na pewno chcesz usunąć to połączenie \"{0}\"?", + "Are you sure you want to delete these {0} connections?": "Czy na pewno chcesz usunąć te połączenia ({0})?", + "Are you sure you want to delete these {0} elements?": "Czy na pewno chcesz usunąć te elementy {0}?", + "Attribute": "Atrybut", + "Authentication methods removed for \"{0}\".": "Usunięto metody uwierzytelniania dla \"{0}\".", + "Below are available variables based on the Type you have select below. You can specify different commands on each line. Each command run is stateless and run in their own job.": "Poniżej znajdują się dostępne zmienne w zależności od typu, który wybrałeś poniżej. W każdym wierszu możesz określić różne polecenia. Każde uruchomienie polecenia jest bezstanowe i uruchamiane w ramach własnego zadania.", + "Branch library, based on the current branch": "Biblioteka gałęzi, bazująca na bieżącej gałęzi", + "Browser": "Przeglądarka", + "Cancel": "Anuluj", + "Cannot copy member to itself!": "Nie można skopiować podzbioru na siebie!", + "Cannot create library \"{0}\": {1}": "Nie można utworzyć biblioteki \"{0}\": {1}", + "Cannot search listings using *ALL.": "Nie można przeszukiwać list przy użyciu *ALL.", + "CCSID": "CCSID", + "Certificate needs to be regenerated": "Certificate needs to be regenerated", + "Change current library": "Zmień bibliotekę bieżącą", + "Change member description for {0}, *BLANK for no description": "Zmień opis podzbioru dla {0}, *BLANK w przypadku braku opisu", + "Change object description for {0}, *BLANK for no description": "Zmień opis obiektu dla {0}, *BLANK w przypadku braku opisu", + "Changed": "Zmieniony", + "Changed current library to {0}.": "Zmieniono bibliotekę bieżącą na {0}.", + "Changed object description for {0} {1}.": "Zmieniono opis obiektu dla {0} {1}.", + "Changing library list (can use \"*reset\")": "Zmiana listy bibliotek (można użyć \"*reset\")", + "Changing working directory": "Zmiana katalogu roboczego", + "Cleared list.": "Wyczyszczona lista.", + "Code for IBM i Log": "Code for IBM i Log", + "Command profiles": "Profile komend", + "Command(s) to run": "Komenda(y) do uruchomienia", + "Compare with": "Compare with", + "Compare with Active File": "Compare with Active File", + "Connect": "Połącz", + "Connect to IBM i": "Połącz się z systemem IBM i", + "Connection \"{0}\" already exists": "Połączenie \"{0}\" już istnieje", + "Connection \"{0}\" already exists.": "Połączenie \"{0}\" już istnieje.", + "Connection profiles": "Profile połączeń", + "Connection to {0} ended as no password was provided.": "Połączenie z {0} zostało zakończone, ponieważ nie podano hasła.", + "Continue": "Kontynuuj", + "Copied object {0} {1} to {2}.": "Skopiowano obiekt {0} {1} do {2}.", + "Copied object {0} {1} to {2}. Refresh object browser.": "Skopiowano obiekt {0} {1} do {2}. Odśwież przeglądarkę obiektów.", + "Copy": "Kopiuj", + "Copy connection \"{0}\"": "Skopiuj połączenie \"{0}\"", + "copying to streamfiles": "kopiowanie do plików strumieniowych", + "Create action": "Utwórz akcję", + "Create duplicate object to new library/object": "Duplikuj obiekt do nowej biblioteki/obiektu", + "Create new filter": "Utwórz nowy filtr", + "Create or maintain Actions. Actions are grouped by the type of file/object they target.": "Utwórz lub zarządzaj Akcjami. Akcje są pogrupowane według typu pliku/obiektu, którego dotyczą.", + "Created": "Utworzony", + "Created by": "Stworzone przez", + "Creating member {0}...": "Tworzenie podzbioru {0}...", + "Creating source file {0}.": "Tworzenie zbioru źródłowego {0}.", + "Creating streamfile {0}.": "Tworzenie pliku strumieniowego {0}.", + "current": "bieżący", + "Current Git branch": "Bieżąca gałąź Git", + "Current library, changeable in Library List": "Bieżąca biblioteka, którą można zmienić na liście bBibliotek", + "Current memory": "Aktualna pamięć", + "Current user": "Bieżący użytkownik", + "Current working directory, changeable in IFS Browser": "Bieżący katalog roboczy, który można zmieniać w przeglądarce IFS", + "Currently active": "Obecnie aktywny", + "Custom variables": "Zmienne niestandardowe", + "Debug Server": "Serwer debugowania", + "Debug server started.": "Uruchomiono serwer debugowania.", + "Debug server stopped.": "Serwer debugowania zatrzymany.", + "Debug Service": "Usługa debugowania", + "Debug Service Certificate": "Certyfikat usługi debugowania", + "Debug Service Eclipse Instance Log": "Debug Service Eclipse Instance Log", + "Debug Service Log": "Debug Service Log", + "Debug service started.": "Usługa debugowania została uruchomiona.", + "Debug service stopped.": "Usługa debugowania została zatrzymana.", + "Debug Service submit options": "Opcje inicjowania usługi debugowania", + "Debugger {0} Status": "Stan debugera {0}", + "Delete": "Usuń", + "Deleting": "Usuwanie", + "Deleting {0} element(s)...": "Usuwanie elementów: {0}...", + "Deletion canceled.": "Usuwanie anulowane.", + "directory": "katalog", + "Directory of the file on the remote system": "Katalog pliku w systemie zdalnym", + "Do you want to copy or move the selection to {0}?": "Czy chcesz skopiować, czy przenieść zaznaczenie do {0}?", + "Download certificate": "Pobierz certyfikat", + "Download complete": "Pobieranie zakończone", + "Download Logs": "Download Logs", + "Download To": "Download To", + "Downloading": "Pobieranie", + "Downloading {0} members": "Pobieram {0} podzbiorów", + "Duplicate": "Duplikuj", + "Duplicate action \"{0}\"": "Duplikuj akcję \"{0}\"", + "Edit action \"{0}\"": "Edytuj akcję \"{0}\"", + "Enter find term or select one of the previous find terms.": "Enter find term or select one of the previous find terms.", + "Enter find term.": "Enter find term.", + "Enter IFS directory to find files in": "Enter IFS directory to find files in", + "Enter IFS directory to search": "Wejdź do katalogu IFS, aby przeszukać", + "Enter LIB/SPF/member.ext to search (member.ext is optional and can contain wildcards)": "Wprowadź LIB/SPF/podzbiór.typ, aby wyszukać (podzbiór.typ jest opcjonalny i może zawierać symbole wieloznaczne)", + "Enter password for {0}@{1}": "Wprowadź hasło do {0}@{1}", + "Enter search term or select one of the previous search terms.": "Wprowadź wyszukiwaną frazę lub wybierz jedną z poprzednio wyszukiwanych fraz.", + "Enter search term.": "Wpisz frazę do wyszukania.", + "Enter the path to compare selected with": "Enter the path to compare selected with", + "Enter username for {0}": "Wprowadź nazwę użytkownika dla {0}", + "Environment": "Środowisko", + "Environment for command to be executed in.": "Środowisko, w którym komenda ma zostać wykonane.", + "error": "błąd", + "Error changing description for {0}! {1}": "Błąd podczas zmiany opisu dla {0}! {1}", + "Error changing member description! {0}": "Błąd podczas zmiany opisu podzbioru! {0}", + "Error copying {0}! {1}": "Błąd podczas kopiowania {0}! {1}", + "Error copying member(s) to {0}: {1}": "Błąd podczas kopiowania podzbiorów do {0}: {1}", + "Error copying object {0}! {1}": "Błąd podczas kopiowania obiektu {0}! {1}", + "Error creating IFS shortcut! {0}": "Błąd podczas tworzenia skrótu IFS! {0}", + "Error creating member {0}: {1}": "Błąd podczas tworzenia podzbioru {0}: {1}", + "Error creating new directory! {0}": "Błąd podczas tworzenia nowego katalogu! {0}", + "Error creating new streamfile! {0}": "Błąd podczas tworzenia nowego pliku strumieniowego! {0}", + "Error creating source file! {0}": "Błąd podczas tworzenia zbioru źródłowego! {0}", + "Error deleting member! {0}": "Błąd podczas usuwania podzbioru! {0}", + "Error deleting object! {0}": "Błąd podczas usuwania obiektu! {0}", + "Error deleting streamfile! {0}": "Błąd podczas usuwania pliku strumieniowego! {0}", + "Error downloading file(s): {0}": "Błąd podczas pobierania plików: {0}", + "Error downloading member(s)! {0}": "Błąd podczas pobierania podzbiorów! {0}", + "Error finding filenames.": "Error finding filenames.", + "Error loading objects.": "Błąd ładowania obiektów.", + "Error moving object {0}! {1}": "Błąd podczas przenoszenia obiektu {0}! {1}", + "Error renaming connection \"{0}\"! {1}": "Błąd podczas zmiany nazwy połączenia \"{0}\"! {1}", + "Error renaming member! {0}": "Błąd podczas zmiany nazwy podzbioru! {0}", + "Error renaming object {0}! {1}": "Błąd podczas zmiany nazwy obiektu {0}! {1}", + "Error renaming/moving {0}! {1}": "Błąd podczas zmiany nazwy/przenoszenia {0}! {1}", + "Error searching source members: {0}": "Błąd podczas wyszukiwania podzbiorów źródłowych: {0}", + "Error searching streamfiles.": "Błąd wyszukiwania w plikach strumieniowych.", + "Error uploading content to member! {0}": "Błąd podczas przesyłania treści do podzbioru! {0}", + "Error uploading files! {0}": "Błąd podczas przesyłania plików! {0}", + "errors": "błędy", + "Extension of the file (&EXTL for lowercase)": "Rozszerzenie pliku (&EXTL małymi literami)", + "Extension of the source member (&EXTL for lowercase)": "Rozszerzenie podzbioru źródłowego (&EXTL małymi literami)", + "Extension/attribute of the object (&EXTL for lowercase)": "Rozszerzenie/atrybut obiektu (&EXTL małymi literami)", + "Extensions": "Rozszerzenia", + "Failed to connect": "Nie udało się połączyć", + "Failed to connect to {0} as {1}": "Nie udało się połączyć z {0} jako {1}", + "Failed to copy selection to {0}: {1}": "Nie udało się skopiować zaznaczenia do {0}: {1}", + "Failed to download logs to {0}. {1}": "Failed to download logs to {0}. {1}", + "Failed to downloaded logs to {0}": "Failed to downloaded logs to {0}", + "Failed to get library list from command: {0}": "Nie udało się pobrać listy bibliotek dla komendy: {0}", + "Failed to get library list from command. Feature not installed.": "Nie udało się pobrać listy bibliotek dla komendy. Funkcja nie została zainstalowana.", + "Failed to move selection to {0}: {1}": "Nie udało się przenieść zaznaczenia do {0}: {1}", + "Failed to read debug service detail file {0}: {1}": "Nie udało się odczytać pliku szczegółów usługi debugowania {0}: {1}", + "Failed to set {0} as current library: {1}": "Nie udało się ustawić {0} jako biblioteki bieżącej: {1}", + "Failed to start debug server: {0}": "Nie udało się uruchomić serwera debugowania: {0}", + "Failed to start debug service: {0}": "Nie udało się uruchomić usługi debugowania: {0}", + "Failed to stop debug server: {0}": "Nie udało się zatrzymać serwera debugowania: {0}", + "Failed to stop debug service: {0}": "Nie udało się zatrzymać usługi debugowania: {0}", + "Fetching member list for {0}.": "Pobieram listę podzbiorów dla {0}.", + "File type": "Typ pliku", + "Files": "Pliki`", + "Filter": "Filtruj", + "Filter or new library to set as current library": "Filtr lub nowa biblioteka, do ustawienia jako biblioteka bieżąca", + "Find {0}": "Find {0}", + "Find in directory": "Find in directory", + "Finding": "Finding", + "Finding filenames with \"{0}\" in {1}.": "Finding filenames with \"{0}\" in {1}.", + "Folders": "Foldery", + "Full path of the file on the remote system": "Pełna ścieżka pliku w systemie zdalnym", + "Gathering logs...": "Gathering logs...", + "Generate service certificate": "Wygeneruj certyfikat usługi", + "Get started": "Zaczynaj", + "getting streamfiles": "pobieranie plików strumieniowych", + "grep must be installed on the remote system for the IFS search.": "grep musi być zainstalowany w systemie zdalnym, aby możliwe było wyszukiwanie IFS.", + "Home directory": "Katalog domowy", + "Host or IP Address": "Host lub adres IP", + "Hostname or IP address from the current connection": "Nazwa hosta lub adres IP bieżącego połączenia", + "How does one end up with {0} members?": "Jak to mogło znaleźć {0} podzbiorów?", + "IASP": "IASP", + "IFS shortcuts": "Skróty IFS", + "ILE": "ILE", + "Incomplete configuration": "Incomplete configuration", + "Invalid path: {0}. Use format LIB/OBJ": "Nieprawidłowa ścieżka: {0}. Użyj zapisu LIB/OBJ", + "Java Home": "Java Home", + "Java version {0} is not installed.": "Java version {0} is not installed.", + "Job": "Zadanie", + "Job name": "Nazwa zadania`", + "Job number": "Numer zadania", + "Job status": "Status zadania", + "Job user": "Użytkownik zadania", + "JVM information": "Informacje o JVM", + "Last connection": "Ostatnie połączenie", + "Last IBM i connections": "Ostatnie połączenia z systemem IBM i", + "Last used: {0}": "Ostatnio użyte: {0}", + "Length": "Długość", + "Library {0} does not exist.": "Biblioteka {0} nie istnieje.", + "Library {0} was added to the library list.": "Biblioteka {0} została dodana do listy bibliotek.", + "Library {0} was already in the library list.": "Biblioteka {0} była już na liście bibliotek.", + "Library {0} was removed from the library list.": "Biblioteka {0} została usunięta z listy bibliotek.", + "Library is too long.": "Nazwa biblioteka jest za długa.", + "Library list": "Lista bibliotek", + "Library list delimited by comma": "Lista bibliotek oddzielona przecinkami", + "Library list delimited by space": "Lista bibliotek oddzielona spacjami", + "Library list were validated without any errors.": "Lista bibliotek została sprawdzona bez żadnych błędów.", + "Library must be 10 chars or less.": "Biblioteka musi mieć maksymalnie 10 znaków.", + "Library name too long.": "Nazwa biblioteki jest za długa.", + "Library name where the object lives (&LIBRARYL for lowercase)": "Nazwa biblioteki, w której znajduje się obiekt (&LIBRARYL małymi literami)", + "Library name where the source member lives (&OPENLIBL for lowercase)": "Nazwa biblioteki, w której znajduje się podzbiór źródłowy (&OPENLIBL małymi literami)", + "Library to add": "Biblioteka do dodania", + "Lines": "Linie", + "Listening on port(s)": "Nasłuchiwanie na portach", + "Loading debugger information...": "Ładowanie informacji debugera...", + "Local certificate": "Lokalny certyfikat", + "Local certificate doesn't match remote": "Certyfikat lokalny nie pasuje do zdalnego", + "Local certificate matches remote": "Certyfikat lokalny zgodny ze zdalnym", + "Local certificate not found": "Nie znaleziono lokalnego certyfikatu", + "Local File (Workspace)": "Plik lokalny (obszar roboczy)", + "Login Settings: \"{0}\"": "Ustawienia logowania: \"{0}\"", + "Lowercase file type": "Typ pliku małymi literami", + "Lowercase name of the object": "Nazwa obiektu z małymi literami", + "Maximum allowed memory": "Maksymalna dozwolona pamięć", + "Member": "Podzbiór", + "Member {0} already exists!": "Podzbiór {0} już istnieje!", + "Member was uploaded.": "Podzbiór został wysłany.", + "Members": "Podzbiory", + "Members download cancelled.": "Pobieranie podzbiorów zostało anulowane.", + "Members download complete.": "Pobieranie podzbiorów zostało zakończone.", + "Memory pool": "Pula pamięci", + "Modified": "Zmodyfikowany", + "Move": "Przenieś", + "Move object": "Przenieś obiekt", + "Moved object {0} {1} to {2}.": "Przeniesiono obiekt {0} {1} do {2}.", + "Moved object {0} {1} to {2}. Refresh object browser.": "Przeniesiono obiekt {0} {1} do {2}. Odśwież przeglądarkę obiektów.", + "Moving object {0} {1} to {2}...": "Przenoszenie obiektu {0} {1} do {2}...", + "Name of new library": "Nazwa nowej biblioteki", + "Name of new path": "Nazwa nowej ścieżki", + "Name of new source file": "Nazwa nowego zbioru źródłowego", + "Name of new source member (member.ext)": "Nazwa nowego podzbioru źródłowego (podzbiór.typ)", + "Name of new streamfile": "Nazwa nowego pliku strumieniowego", + "Name of profile": "Nazwa profilu", + "Name of the file (&NAMEL for lowercase)": "Nazwa pliku (&NAMEL małymi literami)", + "Name of the file, including the extension": "Nazwa pliku, łącznie z rozszerzeniem", + "Name of the object (&NAMEL for lowercase)": "Nazwa obiektu (&NAMEL małymi literami)", + "Name of the parent directory or source file": "Nazwa katalogu nadrzędnego lub pliku źródłowego", + "Name of the source member (&OPENMBRL for lowercase)": "Nazwa podzbioru źródłowego (&OPENMBRL małymi literami)", + "New Action": "Nowa Akcja", + "New connection name": "Nowa nazwa połączenia", + "New connection name must be different from its current name": "Nowa nazwa połączenia musi różnić się od bieżącej nazwy", + "New member name must be different from it's current name": "Nowa nazwa podzbioru musi różnić się od bieżącej", + "New path for copy of source member": "Nowa ścieżka dla kopii podzbioru źródłowego", + "No": "Nie", + "No connection named \"{0}\" was found": "Nie znaleziono połączenia o nazwie \"{0}\".", + "No file is open or selected": "No file is open or selected", + "No files or folders selected for upload.": "Nie wybrano plików ani folderów do przesłania.", + "No logs to download": "No logs to download", + "No members to search.": "Brak podzbiorów do przeszukania.", + "No parameters for connection \"{0}\" was found": "Nie znaleziono parametrów połączenia \"{0}\".", + "No refresh": "Nie odświeżaj", + "No results found finding filenames with \"{0}\" in {1}.": "No results found finding filenames with \"{0}\" in {1}.", + "No results found searching for \"{0}\" in {1}.": "Nie znaleziono wyników wyszukiwania \"{0}\" w {1}.", + "Not connected to an IBM i": "Brak połączenia z systemem IBM i", + "Not found in {0}": "Nie znaleziono w {0}", + "Object": "Obiekt", + "Object description must be 50 chars or less.": "Opis obiektu może mieć maksymalnie 50 znaków.", + "Object filters": "Filtry obiektów", + "Object name must be 10 chars or less.": "Nazwa obiektu może mieć maksymalnie 10 znaków.", + "Objects in the QSYS file system": "Obiekty w systemie plików QSYS", + "Offline": "Nieaktywny", + "Oh no! The sandbox is down.": "O nie! Sandbox nie działa.", + "Once you delete the directory, it cannot be restored.\nPlease type \"{0}\" to confirm deletion.": "Po usunięciu katalogu nie będzie można go przywrócić.\nWpisz \"{0}\", aby potwierdzić usunięcie.", + "Online": "Online", + "Only provide a password if you want to update an existing one or set a new one.": "Podaj hasło tylko wtedy, gdy chcesz zaktualizować istniejące lub ustawić nowe.", + "Only provide a private key if you want to update from the existing one or set one.": "Podaj klucz prywatny tylko wtedy, gdy chcesz zaktualizować istniejący lub ustawić go.", + "Only provide either the password or a private key - not both.": "Podaj tylko jedno z następujących: hasło lub klucz prywatny.", + "Open": "Open", + "Open configuration": "Otwórz konfigurację", + "Open official Forum": "Otwórz oficjalne Forum", + "OpenSSH, RFC4716 and PPK formats are supported.": "Obsługiwane formaty: OpenSSH, RFC4716 i PPK.", + "Overview": "Przeglądaj", + "Overwrite": "Nadpisz", + "Overwrite all": "Nadpisz wszystko", + "Owner": "Właściciel", + "Parent": "Nadrzędny", + "PASE": "PASE", + "Password": "Hasło", + "Password for server": "Hasło do serwera", + "Password updated and will be used for \"{0}\".": "Hasło zostało zaktualizowane i będzie używane dla \"{0}\".", + "Path of new folder": "Ścieżka nowego folderu", + "Path to IFS directory": "Ścieżka do katalogu IFS", + "Please connect to an IBM i": "Please connect to an IBM i", + "Please enter value in form LIB/SPF/member.ext": "Proszę wprowadzić wartość w postaci LIB/SPF/podzbiór.typ", + "Port (SSH)": "Port (SSH)", + "Previous find terms": "Previous find terms", + "Previous search terms": "Poprzednie wyszukiwane frazy", + "Private Key": "Klucz prywatny", + "Private key updated and will be used for \"{0}\".": "Klucz prywatny został zaktualizowany i będzie używany dla \"{0}\".", + "QShell": "QShell", + "Recently used": "Ostatnio używany", + "Refresh": "Odśwież", + "Relative path of the streamfile from the working directory or workspace": "Ścieżka względna pliku strumieniowego z katalogu roboczego lub obszaru roboczego", + "Remote certificate not found": "Nie znaleziono zdalnego certyfikatu", + "Remote service certificate exists": "Istnieje certyfikat usługi zdalnej", + "Remove auth methods": "Usuń metody uwierzytelniania", + "Rename {0}": "Zmień nazwę {0}", + "Rename connection \"{0}\"": "Zmień nazwę połączenia \"{0}\"", + "Rename object": "Zmień nazwę obiektu", + "Renamed object {0} {1} to {2}.": "Zmieniono nazwę obiektu z {0} {1} na {2}.", + "Renaming object {0} {1} to {2}...": "Zmiana nazwy obiektu {0} {1} na {2}...", + "Report an Issue": "Zgłoś problem", + "Reset to default": "Przywróć ustawienia domyślne", + "Restart": "Uruchom ponownie", + "Retry": "Ponów", + "Review Issues": "Przeglądaj problemy", + "Run on protected/read only": "Uruchom w trybie chronionym/tylko do odczytu", + "Runs as an ILE command": "Działa jako komenda ILE", + "Runs the command in the PASE environment": "Uruchamia komendę w środowisku PASE", + "Runs the command through QShell": "Uruchamia komendę poprzez QShell", + "Save": "Zapisz", + "Save Password": "Zapisz hasło", + "Saved current settings to profile \"{0}\".": "Zapisano bieżące ustawienia w profilu \"{0}\".", + "Search {0}": "Szukaj {0}", + "Search {0} {1}": "Szukaj {0} {1}", + "Search directory": "Przeszukaj katalog", + "Search source file": "Wyszukaj plik źródłowy", + "Searching": "Wyszukiwanie", + "Select an action to duplicate": "Wybierz akcję do zduplikowania", + "Select IFS shortcut to remove": "Wybierz skrót IFS do usunięcia", + "Select the logs you would like to download": "Select the logs you would like to download", + "Select the settings to copy from \"{0}\" to \"{1}\"": "Wybierz ustawienia do skopiowania z \"{0}\" do \"{1}\"", + "sending {0} directory...": "wysyłanie katalogu {0}...", + "sending {0} file(s)...": "wysyłanie plików ({0})...", + "shortcut": "skrót", + "Size": "Rozmiar", + "Skip": "Pomiń", + "Skip all": "Pomiń wszystko", + "Sorry, but the sandbox is offline right now. Try again another time.": "Przepraszamy, ale sandbox jest teraz offline. Spróbuj ponownie innym razem.", + "Source file name where the source member lives (&OPENSPFL for lowercase)": "Nazwa pliku źródłowego, w którym znajduje się podzbiór źródłowy (&OPENSPFL małymi literami)", + "Source filename must be 10 chars or less.": "Nazwa zbioru źródłowego może mieć maksymalnie 10 znaków.", + "Source members in the QSYS file system": "Podzbiory źródłowe w systemie plików QSYS", + "Start": "Uruchom", + "Start time": "Czas uruchomienia", + "Starting debug server...": "Uruchamiam serwer debugowania...", + "Starting debug service...": "Uruchamiam usługę debugowania...", + "Status": "Status", + "Still searching \"{0}\" in {1}...": "Nadal wyszukuję \"{0}\" w {1}...", + "Stop": "Stop", + "Stopping debug server...": "Zatrzymywanie serwera debugowania...", + "Stopping debug service...": "Zatrzymywanie usługi debugowania...", + "stored": "przechowywane", + "streamfile": "plik strumieniowy", + "Streamfile": "Plik strumieniowy", + "Streamfiles in the IFS": "Pliki strumieniowe w IFS", + "Subsystem": "Podsystem", + "Successfully downloaded logs to {0}": "Successfully downloaded logs to {0}", + "Switched to profile \"{0}\".": "Przełączono na profil \"{0}\".", + "Text": "Tekst", + "Thanks for trying the Code for IBM i Sandbox!": "Dziękujemy za wypróbowanie Code for IBM i Sandbox!", + "The browser level to refresh after the action is done": "Poziom przeglądarki do odświeżenia po wykonaniu akcji", + "The directory has file(s) with unsaved changes.": "The directory has file(s) with unsaved changes.", + "The entire browser is refreshed": "Cała przeglądarka zostanie odświeżona", + "The file has unsaved changes.": "Plik zawiera niezapisane zmiany.", + "The file path could not be parsed.": "Nie można przeanalizować ścieżki pliku.", + "The following libraries were removed from the updated library list as they are invalid: {0}": "Następujące biblioteki zostały usunięte ze zaktualizowanej listy bibliotek, ponieważ są nieprawidłowe: {0}", + "The member has unsaved changes.": "Podzbiór zawiera niezapisane zmiany.", + "The parent container is refreshed": "Kontener nadrzędny zostanie odświeżony", + "The parent filter is refreshed": "Filtr nadrzędny zostanie odświeżony", + "The same as &CURLIB": "Tak samo jak &CURLIB", + "The types of files this action can support.": "Typy plików, obsługiwane przez tę akcję.", + "This is taking a while because there are {0} members. Searching \"{1}\" in {2} still.": "To zajmuje trochę czasu, ponieważ jest {0} podzbiorów. Nadal wyszukuję \"{1}\" w {2}.", + "This Visual Studio Code instance is already connected to a server.": "Ta instancja Visual Studio Code jest już połączone z serwerem.", + "This will reset the User Library List, working directory and Custom Variables back to the defaults.": "Spowoduje to zresetowanie listy bibliotek użytkownika, katalogu roboczego i zmiennych niestandardowych do wartości domyślnych.", + "Type": "Typ", + "Type of the object (&TYPEL for lowercase)": "Typ obiektu (&TYPEL małymi literami)", + "Unable to delete protected directories from the IFS Browser!\n{0}": "Nie można usunąć chronionych katalogów z przeglądarki IFS!\n{0}", + "Upload": "Przesyłanie", + "Upload completed.": "Przesyłanie zakończone.", + "Use the Server Browser to select which system to connect to.": "Użyj przeglądarki serwerów, aby wybrać system, z którym chcesz się połączyć.", + "User directory": "Katalog użytkownika", + "User for server": "Użytkownik serwera", + "Username": "Nazwa użytkownika", + "Username for connection": "Nazwa użytkownika do połączenia", + "Valid parameters for SBMJOB": "Poprawne parametry dla SBMJOB", + "What do you want to upload?": "Co chcesz przesłać?", + "What's so special about \"{0}\" anyway?": "Co w ogóle jest takiego specjalnego w \"{0}\"?", + "While you wait, why not make some tea?": "Kiedy będziesz czekać na wyniki, może zrobisz sobie herbatę?", + "Why was six afraid of seven?": "Dlaczego sześć boi się siedmiu?", + "Work with Actions": "Praca z Akcjami", + "Working directory changed to {0}.": "Katalog roboczy został zmieniony na {0}.", + "Would you like to add the new library to the library list?": "Czy chcesz dodać nową bibliotekę do listy bibliotek?", + "Wow. This really is taking a while. Let's hope you get the result you want.": "Wow. To naprawdę zajmuje trochę czasu. Miejmy nadzieję, że uzyskasz pożądany rezultat.", + "Yes": "Tak", + "You are using this system at your own risk. Do not share any sensitive or private information.": "Używasz tego systemu na własne ryzyko. Nie udostępniaj żadnych wrażliwych ani prywatnych informacji.", + "Your changes will be discarded": "Twoje zmiany zostaną usunięte" +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b3305f72c..979a80107 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "@types/source-map-support": "^0.5.6", "@types/tar": "^6.1.4", "@types/tmp": "^0.2.3", - "@types/vscode": "^1.66.0", + "@types/vscode": "^1.90.0", "esbuild": "^0.19.2", "esbuild-loader": "^3.0.1", "eslint": "^7.19.0", @@ -41,7 +41,7 @@ "webpack-cli": "^4.5.0" }, "engines": { - "vscode": "^1.66.0" + "vscode": "^1.90.0" } }, "node_modules/@babel/code-frame": { @@ -728,10 +728,11 @@ "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" }, "node_modules/@types/vscode": { - "version": "1.70.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.70.0.tgz", - "integrity": "sha512-3/9Fz0F2eBgwciazc94Ien+9u1elnjFg9YAhvAb3qDy/WeFWD9VrOPU7CIytryOVUdbxus8uzL4VZYONA0gDtA==", - "dev": true + "version": "1.94.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.94.0.tgz", + "integrity": "sha512-UyQOIUT0pb14XSqJskYnRwD2aG0QrPVefIfrW1djR+/J4KeFQ0i1+hjZoaAmeNf3Z2jleK+R2hv+EboG/m8ruw==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", @@ -4304,9 +4305,9 @@ "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" }, "@types/vscode": { - "version": "1.70.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.70.0.tgz", - "integrity": "sha512-3/9Fz0F2eBgwciazc94Ien+9u1elnjFg9YAhvAb3qDy/WeFWD9VrOPU7CIytryOVUdbxus8uzL4VZYONA0gDtA==", + "version": "1.94.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.94.0.tgz", + "integrity": "sha512-UyQOIUT0pb14XSqJskYnRwD2aG0QrPVefIfrW1djR+/J4KeFQ0i1+hjZoaAmeNf3Z2jleK+R2hv+EboG/m8ruw==", "dev": true }, "@webassemblyjs/ast": { diff --git a/package.json b/package.json index daf51b3ae..0321a0de4 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ }, "license": "MIT", "engines": { - "vscode": "^1.66.0" + "vscode": "^1.90.0" }, "categories": [ "Other" @@ -37,6 +37,7 @@ "onFileSystem:streamfile" ], "main": "./dist/extension.js", + "l10n": "./l10n", "contributes": { "taskDefinitions": [ { @@ -502,29 +503,6 @@ "default": false, "description": "If enabled, when the user tries to delete a directory, they will be asked to confirm the deletion by typing in the directory's name." }, - "code-for-ibmi.locale": { - "type": "string", - "default": "inherit", - "enum": [ - "inherit", - "en", - "da", - "de", - "no", - "pl", - "fr" - ], - "enumDescriptions": [ - "Inherit from VS Code settings", - "English", - "Danish", - "German", - "Norwegian", - "Polish", - "French" - ], - "description": "The locale used when displaying text in Code for IBM i. Requires restart if changed." - }, "code-for-ibmi.showDateSearchButton": { "type": "boolean", "default": true, @@ -2960,7 +2938,7 @@ "@types/source-map-support": "^0.5.6", "@types/tar": "^6.1.4", "@types/tmp": "^0.2.3", - "@types/vscode": "^1.66.0", + "@types/vscode": "^1.90.0", "esbuild": "^0.19.2", "esbuild-loader": "^3.0.1", "eslint": "^7.19.0", diff --git a/src/api/IBMiContent.ts b/src/api/IBMiContent.ts index 0775b561a..62a0a2c42 100644 --- a/src/api/IBMiContent.ts +++ b/src/api/IBMiContent.ts @@ -976,15 +976,15 @@ export default class IBMiContent { objectToToolTip(path: string, object: IBMiObject) { const tooltip = new MarkdownString(Tools.generateTooltipHtmlTable(path, { - type: object.type, - attribute: object.attribute, - text: object.text, - size: object.size, - created: object.created?.toISOString().slice(0, 19).replace(`T`, ` `), - changed: object.changed?.toISOString().slice(0, 19).replace(`T`, ` `), - created_by: object.created_by, - owner: object.owner, - iasp: object.asp + "Type": object.type, + "Attribute": object.attribute, + "Text": object.text, + "Size": object.size, + "Created": object.created?.toISOString().slice(0, 19).replace(`T`, ` `), + "Changed": object.changed?.toISOString().slice(0, 19).replace(`T`, ` `), + "Created by": object.created_by, + "Owner": object.owner, + "IASP": object.asp })); tooltip.supportHtml = true; return tooltip; @@ -992,11 +992,11 @@ export default class IBMiContent { async sourcePhysicalFileToToolTip(path: string, object: IBMiObject) { const tooltip = new MarkdownString(Tools.generateTooltipHtmlTable(path, { - text: object.text, - members: await this.countMembers(object), - length: object.sourceLength, - CCSID: (await this.getAttributes(object, "CCSID"))?.CCSID || '?', - iasp: object.asp + "Text": object.text, + "Members": await this.countMembers(object), + "Length": object.sourceLength, + "CCSID": (await this.getAttributes(object, "CCSID"))?.CCSID || '?', + "IASP": object.asp })); tooltip.supportHtml = true; return tooltip; @@ -1004,10 +1004,10 @@ export default class IBMiContent { memberToToolTip(path: string, member: IBMiMember) { const tooltip = new MarkdownString(Tools.generateTooltipHtmlTable(path, { - text: member.text, - lines: member.lines, - created: member.created?.toISOString().slice(0, 19).replace(`T`, ` `), - changed: member.changed?.toISOString().slice(0, 19).replace(`T`, ` `) + "Text": member.text, + "Lines": member.lines, + "Created": member.created?.toISOString().slice(0, 19).replace(`T`, ` `), + "Changed": member.changed?.toISOString().slice(0, 19).replace(`T`, ` `) })); tooltip.supportHtml = true; return tooltip; @@ -1015,9 +1015,9 @@ export default class IBMiContent { ifsFileToToolTip(path: string, ifsFile: IFSFile) { const tooltip = new MarkdownString(Tools.generateTooltipHtmlTable(path, { - size: ifsFile.size, - modified: ifsFile.modified ? new Date(ifsFile.modified.getTime() - ifsFile.modified.getTimezoneOffset() * 60 * 1000).toISOString().slice(0, 19).replace(`T`, ` `) : ``, - owner: ifsFile.owner ? ifsFile.owner.toUpperCase() : `` + "Size": ifsFile.size, + "Modified": ifsFile.modified ? new Date(ifsFile.modified.getTime() - ifsFile.modified.getTimezoneOffset() * 60 * 1000).toISOString().slice(0, 19).replace(`T`, ` `) : ``, + "Owner": ifsFile.owner ? ifsFile.owner.toUpperCase() : `` })); tooltip.supportHtml = true; return tooltip; diff --git a/src/api/Tools.ts b/src/api/Tools.ts index d38fa7bda..f60ab4a17 100644 --- a/src/api/Tools.ts +++ b/src/api/Tools.ts @@ -2,7 +2,6 @@ import Crypto from 'crypto'; import { readFileSync } from "fs"; import path from "path"; import vscode from "vscode"; -import { t } from "../locale"; import { IBMiMessage, IBMiMessages, QsysPath } from '../typings'; import { API, GitExtension } from "./import/git"; @@ -377,7 +376,7 @@ export namespace Tools { .concat(`${header ? `${header}` : ``}`) .concat(`${Object.entries(rows) .filter(([key, value]) => value !== undefined && value !== '') - .map(([key, value]) => `${t(key)}: ${value}`) + .map(([key, value]) => `${vscode.l10n.t(key)}: ${value}`) .join(``)}` ) .concat(``); diff --git a/src/api/debug/certificates.ts b/src/api/debug/certificates.ts index 2a36452a8..421957c25 100644 --- a/src/api/debug/certificates.ts +++ b/src/api/debug/certificates.ts @@ -5,7 +5,6 @@ import path, { dirname, posix } from "path"; import { promisify } from 'util'; import vscode from "vscode"; import { instance } from '../../instantiate'; -import { t } from '../../locale'; import IBMi from "../IBMi"; import IBMiContent from '../IBMiContent'; import { Tools } from '../Tools'; @@ -248,7 +247,7 @@ export async function checkClientCertificate(connection: IBMi, debugConfig?: Deb if (!remote.code) { const localCertificate = readFileSync(locaCertificatePath).toString("utf-8"); if (localCertificate.trim() !== remote.stdout.trim()) { - throw new Error(t('local.dont.match.remote')); + throw new Error(vscode.l10n.t(`Local certificate doesn't match remote`)); } } else { @@ -256,7 +255,7 @@ export async function checkClientCertificate(connection: IBMi, debugConfig?: Deb } } else { - throw new Error(t('local.certificate.not.found')); + throw new Error(vscode.l10n.t(`Local certificate not found`)); } } diff --git a/src/api/debug/config.ts b/src/api/debug/config.ts index d399de841..74c4f8154 100644 --- a/src/api/debug/config.ts +++ b/src/api/debug/config.ts @@ -1,7 +1,6 @@ import path from "path"; import vscode from "vscode"; import { instance } from "../../instantiate"; -import { t } from "../../locale"; import IBMi from "../IBMi"; import { SERVICE_CERTIFICATE } from "./certificates"; @@ -148,9 +147,9 @@ export async function getDebugServiceDetails(): Promise { }; } } - } catch (e) { + } catch (e: any) { // Something very very bad has happened - vscode.window.showErrorMessage(t('detail.reading.error', detailFilePath, e)); + vscode.window.showErrorMessage(vscode.l10n.t(`Failed to read debug service detail file {0}: {1}`, detailFilePath, e)); console.log(e); } } @@ -175,7 +174,7 @@ export function getJavaHome(connection: IBMi, version: string) { version = version.padEnd(2, '0'); const javaHome = connection.remoteFeatures[`jdk${version}`]; if (!javaHome) { - throw new Error(t('java.not.found', version)); + throw new Error(vscode.l10n.t(`Java version {0} is not installed.`, version)); } return javaHome; diff --git a/src/api/debug/server.ts b/src/api/debug/server.ts index 399f76e6f..451eb2875 100644 --- a/src/api/debug/server.ts +++ b/src/api/debug/server.ts @@ -1,7 +1,6 @@ import path from "path"; -import { commands, window } from "vscode"; +import { commands, l10n, window } from "vscode"; import { instance } from "../../instantiate"; -import { t } from "../../locale"; import { CustomUI } from "../CustomUI"; import IBMi from "../IBMi"; import { Tools } from "../Tools"; @@ -32,8 +31,8 @@ export async function startService(connection: IBMi) { const debugConfig = await new DebugConfiguration().load(); const submitOptions = await window.showInputBox({ - title: t("debug.service.submit.options"), - prompt: t("debug.service.submit.options.prompt"), + title: l10n.t(`Debug Service submit options`), + prompt: l10n.t(`Valid parameters for SBMJOB`), value: `JOBQ(QSYS/QUSRNOMAX) JOBD(QSYS/QSYSJOBD) USER(*CURRENT)` }); @@ -55,7 +54,7 @@ export async function startService(connection: IBMi) { const jobDetail = await readActiveJob(connection, { name: job, ports: [] }); if (jobDetail && typeof jobDetail === "object" && !["HLD", "MSGW", "END"].includes(String(jobDetail.JOB_STATUS))) { if (await getDebugServiceJob()) { - window.showInformationMessage(t("start.debug.service.succeeded")); + window.showInformationMessage(l10n.t(`Debug service started.`)); refreshDebugSensitiveItems(); done(true); } @@ -102,11 +101,11 @@ export async function stopService(connection: IBMi) { }); if (!endResult.code) { - window.showInformationMessage(t("stop.debug.service.succeeded")); + window.showInformationMessage(l10n.t(`Debug service stopped.`)); refreshDebugSensitiveItems(); return true; } else { - window.showErrorMessage(t("stop.debug.service.failed", endResult.stdout || endResult.stderr)); + window.showErrorMessage(l10n.t(`Failed to stop debug service: {0}`, endResult.stdout || endResult.stderr)); return false; } } @@ -167,12 +166,12 @@ export async function startServer() { const result = await instance.getConnection()?.runCommand({ command: "STRDBGSVR", noLibList: true }); if (result) { if (result.code) { - window.showErrorMessage(t("strdbgsvr.failed", result.stderr)); + window.showErrorMessage(l10n.t(`Failed to start debug server: {0}`, result.stderr)); return false; } else { refreshDebugSensitiveItems(); - window.showInformationMessage(t("strdbgsvr.succeeded")); + window.showInformationMessage(l10n.t(`Debug server started.`)); } } return true; @@ -182,12 +181,12 @@ export async function stopServer() { const result = await instance.getConnection()?.runCommand({ command: "ENDDBGSVR", noLibList: true }); if (result) { if (result.code) { - window.showErrorMessage(t("enddbgsvr.failed", result.stderr)); + window.showErrorMessage(l10n.t(`Failed to stop debug server: {0}`, result.stderr)); return false; } else { refreshDebugSensitiveItems(); - window.showInformationMessage(t("enddbgsvr.succeeded")); + window.showInformationMessage(l10n.t(`Debug server stopped.`)); } } return true; @@ -201,7 +200,7 @@ export function refreshDebugSensitiveItems() { export async function readActiveJob(connection: IBMi, job: DebugJob) { try { return (await connection.runSQL( - `select job_name_short, job_user, job_number, subsystem_library_name concat '/' concat subsystem as subsystem, authorization_name, job_status, memory_pool from table(qsys2.active_job_info(job_name_filter => '${job.name.substring(job.name.lastIndexOf('/') + 1)}')) where job_name = '${job.name}' fetch first row only` + `select job_name_short "Job name", job_user "Job user", job_number "Job number", subsystem_library_name concat '/' concat subsystem as "Subsystem", authorization_name "Current user", job_status "Job status", memory_pool "Memory pool" from table(qsys2.active_job_info(job_name_filter => '${job.name.substring(job.name.lastIndexOf('/') + 1)}')) where job_name = '${job.name}' fetch first row only` )).at(0); } catch (error) { return String(error); @@ -211,7 +210,7 @@ export async function readActiveJob(connection: IBMi, job: DebugJob) { export async function readJVMInfo(connection: IBMi, job: DebugJob) { try { return (await connection.runSQL(` - select START_TIME, JAVA_HOME, USER_DIRECTORY, CURRENT_HEAP_SIZE, MAX_HEAP_SIZE + select START_TIME "Start time", JAVA_HOME "Java Home", USER_DIRECTORY "User directory", CURRENT_HEAP_SIZE "Current memory", MAX_HEAP_SIZE "Maximum allowed memory" from QSYS2.JVM_INFO where job_name = '${job.name}' fetch first row only`)).at(0); diff --git a/src/extension.ts b/src/extension.ts index f4e04ab97..9f79c2d8e 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -22,7 +22,6 @@ import { GetNewLibl } from "./components/getNewLibl"; import { extensionComponentRegistry } from "./components/manager"; import { IFSFS } from "./filesystems/ifsFs"; import { LocalActionCompletionItemProvider } from "./languages/actions/completion"; -import { updateLocale } from "./locale"; import * as Sandbox from "./sandbox"; import { initialise } from "./testing"; import { CodeForIBMi, ConnectionData } from "./typings"; @@ -86,7 +85,6 @@ export async function activate(context: ExtensionContext): Promise return (await new IBMi().connect(connectionData, undefined, reloadSettings)).success; } ), - onCodeForIBMiConfigurationChange("locale", updateLocale), onCodeForIBMiConfigurationChange("connections", updateLastConnectionAndServerCache), onCodeForIBMiConfigurationChange("connectionSettings", async () => { const connection = instance.getConnection(); diff --git a/src/instantiate.ts b/src/instantiate.ts index b74d1b1e4..c8fbfea57 100644 --- a/src/instantiate.ts +++ b/src/instantiate.ts @@ -13,7 +13,6 @@ import { setupGitEventHandler } from './api/local/git'; import { GetMemberInfo } from './components/getMemberInfo'; import { QSysFS, getUriFromPath, parseFSOptions } from "./filesystems/qsys/QSysFs"; import { SEUColorProvider } from "./languages/general/SEUColorProvider"; -import { t } from './locale'; import { Action, BrowserItem, DeploymentMethod, MemberItem, OpenEditableOptions, WithPath } from "./typings"; import { ActionsUI } from './webviews/actions'; import { VariablesUI } from "./webviews/variables"; @@ -189,7 +188,7 @@ export async function loadAllofExtension(context: vscode.ExtensionContext) { } else if (node.scheme === `file`) { selectedFile = node } else { - vscode.window.showInformationMessage(t(`compare.no.file`)); + vscode.window.showInformationMessage(vscode.l10n.t(`No file is open or selected`)); } let activeFile; @@ -199,13 +198,13 @@ export async function loadAllofExtension(context: vscode.ExtensionContext) { if (activeFile) { vscode.commands.executeCommand(`vscode.diff`, activeFile, selectedFile); } else { - vscode.window.showInformationMessage(t(`compare.no.file`)); + vscode.window.showInformationMessage(vscode.l10n.t(`No file is open or selected`)); } } else { - vscode.window.showInformationMessage(t(`compare.no.file`)); + vscode.window.showInformationMessage(vscode.l10n.t(`No file is open or selected`)); } } else { - vscode.window.showInformationMessage(t(`compare.no.file`)); + vscode.window.showInformationMessage(vscode.l10n.t(`No file is open or selected`)); } }), @@ -214,7 +213,7 @@ export async function loadAllofExtension(context: vscode.ExtensionContext) { const compareIcon = new vscode.ThemeIcon('split-horizontal'); const compareButton: vscode.QuickInputButton = { iconPath: compareIcon, - tooltip: t(`compare.active.file`) + tooltip: vscode.l10n.t(`Compare with Active File`) }; const LOADING_LABEL = `Please wait`; @@ -762,11 +761,11 @@ export async function loadAllofExtension(context: vscode.ExtensionContext) { if (doc?.isDirty) { vscode.window .showWarningMessage( - t(`discard.changes`), + vscode.l10n.t(`Your changes will be discarded`), { modal: true }, - t(`Continue`)) + vscode.l10n.t(`Continue`)) .then(result => { - if (result === t(`Continue`)) { + if (result === vscode.l10n.t(`Continue`)) { vscode.commands.executeCommand(`workbench.action.files.revert`); } }); @@ -893,8 +892,8 @@ async function compareCurrentFile(node: any, scheme: `streamfile` | `file` | `me if (currentFile) { let compareWith = await vscode.window.showInputBox({ - prompt: t(`compare.prompt`), - title: t(`compare.title`), + prompt: vscode.l10n.t(`Enter the path to compare selected with`), + title: vscode.l10n.t(`Compare with`), value: currentFile.path }); @@ -906,6 +905,6 @@ async function compareCurrentFile(node: any, scheme: `streamfile` | `file` | `me vscode.commands.executeCommand(`vscode.diff`, currentFile, uri); } } else { - vscode.window.showInformationMessage(t(`compare.no.file`)); + vscode.window.showInformationMessage(vscode.l10n.t(`No file is open or selected`)); } } diff --git a/src/languages/actions/completion.ts b/src/languages/actions/completion.ts index 63258adce..29f32f492 100644 --- a/src/languages/actions/completion.ts +++ b/src/languages/actions/completion.ts @@ -1,46 +1,40 @@ import vscode from "vscode"; -import { t } from "../../locale"; -type Item = { - name: string - description: string -} - -const ITEMS = [ - "BASENAME", - "BRANCH", - "BRANCHLIB", - "BUILDLIB", - "CURLIB", - "EXT", - "EXTL", - "FILEDIR", - "FULLPATH", - "HOST", - "LIBLC", - "LIBLS", - "LIBRARY", - "LOCALPATH", - "NAME", - "NAMEL", - "PARENT", - "RELATIVEPATH", - "USERNAME", - "WORKDIR", -]; +const ITEMS = { + "BASENAME": vscode.l10n.t("Name of the file, including the extension"), + "BRANCH": vscode.l10n.t("Current Git branch"), + "BRANCHLIB": vscode.l10n.t("Branch library, based on the current branch"), + "BUILDLIB": vscode.l10n.t("The same as &CURLIB"), + "CURLIB": vscode.l10n.t("Current library, changeable in Library List"), + "EXT": vscode.l10n.t("File type"), + "EXTL": vscode.l10n.t("Lowercase file type"), + "FILEDIR": vscode.l10n.t("Directory of the file on the remote system"), + "FULLPATH": vscode.l10n.t("Full path of the file on the remote system"), + "HOST": vscode.l10n.t("Hostname or IP address from the current connection"), + "LIBLC": vscode.l10n.t("Library list delimited by comma"), + "LIBLS": vscode.l10n.t("Library list delimited by space"), + "LIBRARY": vscode.l10n.t("Library name where the object lives (&LIBRARYL for lowercase)"), + "LOCALPATH": vscode.l10n.t("Local source file path"), + "NAME": vscode.l10n.t("Name of the object (&NAMEL for lowercase)"), + "NAMEL": vscode.l10n.t("Lowercase name of the object"), + "PARENT": vscode.l10n.t("Name of the parent directory or source file"), + "RELATIVEPATH": vscode.l10n.t("Relative path of the streamfile from the working directory or workspace"), + "USERNAME": vscode.l10n.t("Username for connection"), + "WORKDIR": vscode.l10n.t("Current working directory, changeable in IFS Browser"), +}; export class LocalActionCompletionItemProvider implements vscode.CompletionItemProvider { provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, context: vscode.CompletionContext) { //Only provide items if the cursor is on a "command" line if (/^\s*"command"\s*:/.test(document.lineAt(position.line).text)) { - return ITEMS.map(item => ({ - label: item, - detail: t(`actions.${item}`).replaceAll(/|<\/code>|&/g, ""), - insertText: context.triggerCharacter ? undefined : `&${item}`, + return Object.entries(ITEMS).map(([variable, label]) => ({ + label: variable, + detail: label.replaceAll(/|<\/code>|&/g, ""), + insertText: context.triggerCharacter ? undefined : `&${variable}`, kind: vscode.CompletionItemKind.Variable } as vscode.CompletionItem)); } - else{ + else { return []; } } diff --git a/src/locale/ids/da.json b/src/locale/ids/da.json deleted file mode 100644 index 73a6839c3..000000000 --- a/src/locale/ids/da.json +++ /dev/null @@ -1,429 +0,0 @@ -{ - "actions.BASENAME": "Navn på filen, inklusive filtypen", - "actions.BRANCH": "Nuværende git-gren", - "actions.BRANCHLIB": "Bibliotek for den nuværende Git-gren", - "actions.BUILDLIB": "Det samme som &CURLIB", - "actions.CURLIB": "Aktuelle bibliotek (sættes i Library List)", - "actions.duplicate.select": "Vælg en aktion til kopiering", - "actions.EXT": "Filtypen", - "actions.EXTL": "Filtypen med små bogstaver", - "actions.FILEDIR": "Katalog over filen på fjernsystemet", - "actions.FULLPATH": "Fulde sti på filen på fjernsystemet", - "actions.HOST": "Host navn eller IP adresse fra den aktuelle forbindelse", - "actions.LIBLC": "Liste af biblioteker adskilt af komma", - "actions.LIBLS": "Liste af biblioteker adskilt af mellemrum", - "actions.LIBRARY": "Biblioteksnavn med objektet (&LIBRARYL for små bogstaver)", - "actions.mainMenu.createOrMaintain": "Opret eller revider Aktioner. Aktioner er grupperede efter typen på de vedrørte filer/objekter.", - "actions.mainMenu.newAction": "Opret", - "actions.mainMenu.workWithActions": "Arbejd med Aktioner", - "actions.member.EXT": "Type af source member (&EXTL for små bogstaver)", - "actions.NAME": "Navn på objektet (&NAMEL for små bogstaver)", - "actions.NAMEL": "Navn på objektet med små bogstaver", - "actions.object.EXT": "Objektets attribut (&EXTL for små bogstaver)", - "actions.object.TYPE": "Typen af objektet (&TYPEL for små bogstaver)", - "actions.OPENLIB": "Biblioteksnavn med source member (&OPENLIBL for små bogstaver)", - "actions.OPENMBR": "Navn på source member (&OPENMBRL for små bogstaver)", - "actions.OPENSPF": "Source fil navn med source member (&OPENSPFL for små bogstaver)", - "actions.PARENT": "Navn på forrige mappe eller source fil", - "actions.RELATIVEPATH": "Relativ sti til streamfilen fra arbejdsbiblioteket eller arbejdsområdet", - "actions.streamfile.EXT": "Filtypen (&EXTL for små bogstaver)", - "actions.streamfile.NAME": "Navn på filen (&NAMEL for små bogstaver)", - "actions.USERNAME": "Brugernavn for forbindelsen", - "actions.workAction.command": "Kommandoer", - "actions.workAction.command.description": "Nedenfor er de tilgængelige variable, baseret på objekt typen. Du kan angive forskellige kommandoer på hver linie. Hver kommando er \"stateless\" og afvikles i eget job.", - "actions.workAction.create.title": "Opret aktion", - "actions.workAction.delete.confirm": "Er du sikker på du vil slette \"{0}\"?", - "actions.workAction.duplicate.title": "Kopier aktion \"{0}\"", - "actions.workAction.edit.title": "Revider aktion \"{0}\"", - "actions.workAction.environment": "Miljø", - "actions.workAction.environment.description": "Miljø som kommandoerne skal afvikles i.", - "actions.workAction.environment.ile": "ILE", - "actions.workAction.environment.ile.description": "Afvikles som ILE kommando", - "actions.workAction.environment.pase": "PASE", - "actions.workAction.environment.pase.description": "Afvikles som kommando i PASE", - "actions.workAction.environment.qsh": "QSHELL", - "actions.workAction.environment.qsh.description": "Afvikles som kommando i QSHELL", - "actions.workAction.extensions": "Typer", - "actions.workAction.extensions.description": "En komma-separeret liste af typer for denne aktion. Dette kan være en member type, en streamfile filtype, en objekt type eller en objekt attribut.", - "actions.workAction.name": "Aktionsnavn", - "actions.workAction.refresh": "Opfrisk", - "actions.workAction.refresh.browser": "Vindue", - "actions.workAction.refresh.browser.description": "Hele vinduet bliver opfrisket", - "actions.workAction.refresh.description": "Liste niveauet for opfriskning efter aktion er udført.", - "actions.workAction.refresh.filter": "Filter", - "actions.workAction.refresh.filter.description": "Det aktuelle filter bliver opfrisket", - "actions.workAction.refresh.no": "Ingen", - "actions.workAction.refresh.no.description": "Ingen opfriskning", - "actions.workAction.refresh.parent": "Container", - "actions.workAction.refresh.parent.description": "Den aktuelle container bliver opfrisket", - "actions.workAction.runOnProtected": "Må afvikles på sikret/skrive-beskyttet", - "actions.workAction.runOnProtected.description": "Tillader afvikling af denne aktion på sikrede eller skrive-beskyttede mål", - "actions.workAction.types": "Type", - "actions.workAction.types.description": "Typer understøttet af denne aktion.", - "actions.workAction.types.file": "Lokal fil (workspace)", - "actions.workAction.types.file.description": "Aktioner for lokale filer i VS Code Workspace.", - "actions.workAction.types.member": "Member", - "actions.workAction.types.member.description": "Source members i QSYS filsystemet", - "actions.workAction.types.object": "Objekt", - "actions.workAction.types.object.description": "Objekter i QSYS filsystemet", - "actions.workAction.types.streamfile": "Streamfile", - "actions.workAction.types.streamfile.description": "Filer i det integrerede filsystem (IFS)", - "actions.WORKDIR": "Aktuel arbejdsmappe, kan ændres i IFS Browser", - "active.job": "Aktive job", - "ask.overwrite": "{0} eksisterer allerede.\nVil du erstatte?", - "attribute": "Attribut", - "AUTHORIZATION_NAME": "Aktuelle bruger", - "cancel": "Afbryd", - "Cancel": "Afbryd", - "CCSID": "CCSID", - "certificates.match": "Lokalt certifikat matcher værtens", - "changed": "Ændret", - "clearedList": "Nulstillede liste.", - "clearList": "$(trash) Nulstil liste", - "compare.active.file": "Sammenlign med aktiv editor", - "compare.no.file": "Der er ikke åbnet eller valgt nogen fil til sammenligning.", - "compare.prompt": "Indtast stien til filen, der skal sammenlignes med", - "compare.title": "Sammenlign med", - "connectionBrowser.connectTo.error": "Brug Servere vinduet til at vælge hvilket system, der skal forbindes til.", - "connectionBrowser.connectTo.lastConnection": "Seneste forbindelse", - "connectionBrowser.connectTo.lastUsed": "Senest brugt: {0}", - "connectionBrowser.connectTo.title": "Seneste IBM i forbindelser", - "connectionBrowser.copyConnection.already.exists": "Forbindelsen \"{0}\" eksisterer allerede", - "connectionBrowser.copyConnection.placeholder": "Navn på ny forbindelse", - "connectionBrowser.copyConnection.prompt": "Kopier forbindelsen \"{0}\"", - "connectionBrowser.copyConnection.select.command.profiles": "Kommando profiler", - "connectionBrowser.copyConnection.select.connection.profiles": "Forbindelses profiler", - "connectionBrowser.copyConnection.select.custom.variables": "Bruger variable", - "connectionBrowser.copyConnection.select.home.directory": "Aktuelle mappe", - "connectionBrowser.copyConnection.select.ifs.shortcuts": "IFS genveje", - "connectionBrowser.copyConnection.select.library.list": "Biblioteks listen", - "connectionBrowser.copyConnection.select.object.filters": "Objekt filtre", - "connectionBrowser.copyConnection.select.settings": "Vælg indstillingerne, der skal kopieres fra \"{0}\" til \"{1}\"", - "connectionBrowser.deleteConnection.multiple.warning": "Er du sikker på at du vil slette disse {0} forbindelser?", - "connectionBrowser.deleteConnection.warning": "Er du sikker på at du vil slette forbindelsen \"{0}\"?", - "connectionBrowser.renameConnection.alreadyExists": "Forbindelsen \"{0}\" findes allerede.", - "connectionBrowser.renameConnection.error": "Fejl ved omdøbning af forbindelsen \"{0}\"! {1}", - "connectionBrowser.renameConnection.invalid.input": "Nyt forbindelses navn skal være forskelligt fra det nuværende navn", - "connectionBrowser.renameConnection.noConnectionFound": "Ingen forbindelse med navnet \"{0}\" blev fundet", - "connectionBrowser.renameConnection.noConnParmsFound": "Ingen parametre til forbindelsen \"{0}\" blev fundet", - "connectionBrowser.renameConnection.prompt": "Omdøb forbindelsen \"{0}\"", - "connectionBrowser.ServerItem.title": "Forbind", - "connectionBrowser.ServerItem.tooltip": " (forrige forbindelse)", - "Continue": "Fortsæt", - "created": "Oprettet", - "created_by": "Oprettet af", - "current": "aktuelle", - "CURRENT_HEAP_SIZE": "Nuværende memory", - "currentLibrary": "(aktuelle bibliotek)", - "debug.server": "Debug Server", - "debug.service": "Debug Service", - "debug.service.certificate": "Debug Service certifikat", - "debug.service.submit.options": "Debug Service submit options", - "debug.service.submit.options.prompt": "Valid parameters for SBMJOB", - "debugger.status": "Debugger {0} status", - "delete": "Slet", - "detail.reading.error": "Fejl ved læsning af debug service detail fil {0}: {1}", - "directory": "mappe", - "directory.unsaved.changes": "Mappen har filer med ikke-gemte ændringer.", - "discard.changes": "Dine ændringer vil blive kasseret", - "download.certificate": "Hent certifikat", - "duplicate": "Kopier", - "enddbgsvr.failed": "Fejl ved stop af debug server: {0}", - "enddbgsvr.succeeded": "Debug server er stoppet.", - "error": "fejl", - "errors": "fejl", - "file.path.not.parsed": "Filstien kunne ikke fortolkes.", - "file.unsaved.changes": "Filen har ikke-gemte ændringer.", - "generate.certificate": "Generer service certifikat", - "helpView.getStarted": "Dokumentation", - "helpView.downloadLogs": "Hent logfiler", - "helpView.downloadLogs.gatheringLogs": "Henter logfiler...", - "helpView.downloadLogs.codeForIBMiLog": "Code for IBM i Log", - "helpView.downloadLogs.debugServiceEclipseInstanceLog": "Debug Service Eclipse Instance Log", - "helpView.downloadLogs.debugServiceLog": "Debug Service Log", - "helpView.downloadLogs.downloadTo": "Download til", - "helpView.downloadLogs.failed": "Fejl ved download af logfiler til {0}", - "helpView.downloadLogs.failedMessage": "Fejl ved download af logfiler til {0}. {1}", - "helpView.downloadLogs.noConnection": "Venligst opret forbindelse til en IBM i", - "helpView.downloadLogs.noLogs": "Ingen logfiler til download", - "helpView.downloadLogs.open": "Åbn", - "helpView.downloadLogs.selectLogs": "Vælg de logfiler du vil downloade", - "helpView.downloadLogs.success": "Logfiler blev downloadet til {0}", - "helpView.officialForum": "Forum", - "helpView.reportIssue": "Opret en fejlrapport", - "helpView.reviewIssues": "Se fejlrapporter", - "iasp": "IASP", - "ifsBrowser.addIFSShortcut.error": "{0} er ikke en mappe.", - "ifsBrowser.addIFSShortcut.errorMessage": "Fejl ved oprettelse af IFS genvej! {0}", - "ifsBrowser.addIFSShortcut.prompt": "Sti til IFS mappe", - "ifsBrowser.changeWorkingDirectory.message": "Aktuelle mappe er skiftet til {0}.", - "ifsBrowser.changeWorkingDirectory.prompt": "Skifter aktuelle mappe", - "ifsBrowser.copyIFS.errorMessage": "Fejl ved kopiering af {0}! {1}", - "ifsBrowser.copyIFS.infoMessage": "{0} blev kopieret til {1}.", - "ifsBrowser.copyIFS.prompt": "Nyt navn", - "ifsBrowser.copyToStreamfile.failed": "Fejl ved kopiering af member(s) til {0}: {1}", - "ifsBrowser.copyToStreamfile.infoMessage": "{0} member(s) kopieret til streamfile(s) i {1}.", - "ifsBrowser.createDirectory.errorMessage": "Fejl ved oprettelse af ny mappe! {0}", - "ifsBrowser.createDirectory.prompt": "Sti til ny mappe", - "ifsBrowser.createStreamfile.errorMessage": "Fejl ved oprettelse af ny streamfile! {0}", - "ifsBrowser.createStreamfile.infoMessage": "Opretter streamfile {0}.", - "ifsBrowser.createStreamfile.prompt": "Navn på ny streamfile", - "ifsBrowser.deleteIFS.cancelled": "Sletning afbrudt.", - "ifsBrowser.deleteIFS.default.home.dir": "{0} var den aktuelle mappe; det er nu {1}.", - "ifsBrowser.deleteIFS.deletionPrompt": "Når du har slettet mappen, kan den ikke retableres.\nVenligst tast \"{0}\" for at bekræfte sletning.", - "ifsBrowser.deleteIFS.deletionPrompt2": " (Tryk \"Escape\" for at afbryde)", - "ifsBrowser.deleteIFS.dirNotAllowed": "Ikke tilladt at slette valgte mapper fra IFS Browser.\n{0}", - "ifsBrowser.deleteIFS.errorMessage": "Fejl ved sletning af streamfile! {0}", - "ifsBrowser.deleteIFS.multi.warningMessage": "Er du sikker på at du vil slette de {0} valgte filer?", - "ifsBrowser.deleteIFS.progress": "Sletning af {0} element(er)...", - "ifsBrowser.deleteIFS.warningMessage": "Er du sikker på at du vil slette {0}?", - "ifsBrowser.doFindStreamfiles.errorMessage": "Fejl ved søgning efter filnavne.", - "ifsBrowser.doFindStreamfiles.noResults": "Ingen resultater blev fundet ved søgning efter filnavne med \"{0}\" i {1}.", - "ifsBrowser.doFindStreamfiles.progressMessage": "Finder filnavne med \"{0}\" i {1}.", - "ifsBrowser.doFindStreamfiles.title": "Finder", - "ifsBrowser.doSearchInStreamfiles.errorMessage": "Fejl ved søgning i filer.", - "ifsBrowser.doSearchInStreamfiles.noResults": "Ingen resultater blev fundet ved søgning efter \"{0}\" i {1}.", - "ifsBrowser.doSearchInStreamfiles.progressMessage": "\"{0}\" i {1}.", - "ifsBrowser.doSearchInStreamfiles.title": "Søger", - "ifsBrowser.downloadStreamfile.complete": "Hentning gennemført.", - "ifsBrowser.downloadStreamfile.downloading": "Henter", - "ifsBrowser.downloadStreamfile.errorMessage": "Fejl under hentning: {0}", - "ifsBrowser.getChildren.errorMessage": "Fejl ved læsning af objekter.", - "ifsBrowser.handleFileListErrors.errorMessage": "{0} {1} opstod ved visning af filer.", - "ifsBrowser.ifs.find.noFind": "\"findutils\" skal være installeret på systemet for søgning efter filnavne.", - "ifsBrowser.ifs.find.placeholder": "Indtast søgetekst eller vælg en af de tidligere søgninger.", - "ifsBrowser.ifs.find.placeholder2": "Indtast søgetekst.", - "ifsBrowser.ifs.find.previousSearches": "Forrige søgninger", - "ifsBrowser.ifs.find.prompt": "Indtast IFS mappe for søgning af filnavne", - "ifsBrowser.ifs.find.title": "Find i mappe", - "ifsBrowser.ifs.find.title2": "Finder {0}", - "ifsBrowser.moveIFS.errorMessage": "Fejl ved flytning/omdøbning af {0}! {1}", - "ifsBrowser.moveIFS.moved": "{0} blev flyttet til {1}.", - "ifsBrowser.moveIFS.prompt": "Nyt navn", - "ifsBrowser.moveIFS.renamed": "{0} blev omdøbt til {1}.", - "ifsBrowser.removeIFSShortcut.placeHolder": "Vælg IFS genvej til sletning", - "ifsBrowser.searchIFS.noGrep": "\"grep\" skal være installeret på systemet for IFS søgning.", - "ifsBrowser.searchIFS.placeholder": "Indtast søgetekst eller vælg en af de tidligere søgninger.", - "ifsBrowser.searchIFS.placeholder2": "Indtast søgetekst.", - "ifsBrowser.searchIFS.previousSearches": "Forrige søgninger", - "ifsBrowser.searchIFS.prompt": "Indtast IFS mappe for søgning", - "ifsBrowser.searchIFS.title": "Søg mappe", - "ifsBrowser.searchIFS.title2": "Søg i {0}", - "ifsBrowser.uploadStreamfile.ask": "Vil du kopiere eller flytte det valgte til {0}?", - "ifsBrowser.uploadStreamfile.copy": "Kopier", - "ifsBrowser.uploadStreamfile.copy.failed": "Fejl ved kopiering af det valgte til {0}: {1}", - "ifsBrowser.uploadStreamfile.errorMessage": "Fejl ved upload af filer! {0}", - "ifsBrowser.uploadStreamfile.move": "Flyt", - "ifsBrowser.uploadStreamfile.move.failed": "Fejl ved flytning af det valgte til {0}: {1}", - "ifsBrowser.uploadStreamfile.noFilesSelected": "Ingen filer eller mapper er valgt til upload.", - "ifsBrowser.uploadStreamfile.process.uploading": "Upload", - "ifsBrowser.uploadStreamfile.process.uploading.directory": "sender {0} mappe(r)...", - "ifsBrowser.uploadStreamfile.process.uploading.files": "sender {0} file(r)...", - "ifsBrowser.uploadStreamfile.select.type.files": "Filer", - "ifsBrowser.uploadStreamfile.select.type.folders": "Mapper", - "ifsBrowser.uploadStreamfile.select.type.title": "Hvad ønsker du at uploade?", - "ifsBrowser.uploadStreamfile.uploadedFiles": "Upload er udført.", - "JAVA_HOME": "Java Home", - "java.not.found":"Java version {0} is not installed.", - "job": "Job", - "JOB_NAME_SHORT": "Job navn", - "JOB_NUMBER": "Job nummer", - "JOB_STATUS": "Job status", - "JOB_USER": "Job bruger", - "jvm.info": "JVM information", - "length": "Længde", - "LibraryListView.addToLibraryList.addedLib": "Bibliotek {0} blev tilføjet til bibliotekslisten.", - "LibraryListView.addToLibraryList.alreadyInList": "Bibliotek {0} er allerede i bibliotekslisten.", - "LibraryListView.addToLibraryList.invalidLib": "Bibliotek {0} findes ikke.", - "LibraryListView.addToLibraryList.prompt": "Tilføj bibliotek", - "LibraryListView.addToLibraryList.removedLibs": "De følgende biblioteker blev fjernet fra den opdaterede biblioteksliste, da de ikke er gyldige: {0}", - "LibraryListView.addToLibraryList.tooLong": "Bibioteksnavn er for langt.", - "LibraryListView.changeCurrentLibrary.alreadyCurrent": "{0} er allerede det aktuelle bibliotek.", - "LibraryListView.changeCurrentLibrary.changedCurrent": "Skiftede aktuelle bibliotek til {0}.", - "LibraryListView.changeCurrentLibrary.currentlyActive": "Nuværende", - "LibraryListView.changeCurrentLibrary.placeholder": "Filter eller nyt bibliotek til at sætte som aktuelle", - "LibraryListView.changeCurrentLibrary.recentlyUsed": "Tidligere", - "LibraryListView.changeCurrentLibrary.title": "Skift aktuelle bibliotek", - "LibraryListView.changeUserLibraryList.prompt": "Skift biblioteksliste (du kan bruge \"*reset\")", - "LibraryListView.changeUserLibraryList.removedLibs": "De følgende biblioteker blev fjernet fra den opdaterede biblioteksliste, da de ikke er gyldige: {0}", - "LibraryListView.cleanupLibraryList.removedLibs": "De følgende biblioteker blev fjernet fra den opdaterede biblioteksliste, da de ikke er gyldige: {0}", - "LibraryListView.cleanupLibraryList.validated": "Bibliotekslisten blev valideret uden fejl.", - "LibraryListView.removeFromLibraryList.removedLib": "Bibliotek {0} blev fjernet fra bibliotekslisten.", - "LibraryListView.setCurrentLibrary.failed": "Fejl ved skift til {0} som aktuelt bibliotek: {1}", - "lines": "Linier", - "listening.on.port": "Lytter på port", - "listening.on.ports": "Lytter på porte", - "loading.debugger.info": "Henter debugger information...", - "local.certificate": "Lokalt certifikat", - "local.certificate.not.found": "Lokalt certifikat er ikke fundet", - "local.dont.match.remote": "Lokalt certifikat matcher ikke værtens", - "login.authDecision": "Angiv enten kodeord eller privat nøgle - ikke begge dele.", - "login.authRemoved": "Kodeord og privat nøgle er fjernet for \"{0}\".", - "login.host": "Værtsnavn eller IP adresse", - "login.password.label": "Angiv kun et kodeord hvis du ønsker at ændre det gemte eller oprette et nyt.", - "login.password.updated": "Kodeord er opdateret og bruges for \"{0}\".", - "login.port": "Port (SSH)", - "login.privateKey.label": "Angiv kun en privat nøgle hvis du ønsker at opdatere den aktuelle eller indstille en ny.", - "login.privateKey.support": "OpenSSH, RFC4716 og PPK formater understøttes.", - "login.privateKey.updated": "Privat nøgle er opdateret og bruges for \"{0}\".", - "login.removeAuth": "Fjern kodeord+nøgle", - "login.savePassword": "Gem kodeord", - "login.title.create": "Forbind til IBM i", - "login.title.edit": "Login Indstillinger: \"{0}\"", - "MAX_HEAP_SIZE": "Maksimalt tilladt memory", - "member.has.unsaved.changes": "Memberet har ikke-gemte ændringer.", - "members": "Members", - "MEMORY_POOL": "Memory pulje", - "modified": "Ændret", - "No": "Nej", - "not.connected": "Ikke forbundet til en IBM i", - "not.found.in": "Ikke fundet i {0}", - "objectBrowser.changeObjectDesc.errorMessage": "Objekt beskrivelse må være 50 tegn eller mindre.", - "objectBrowser.changeObjectDesc.errorMessage2": "Fejl ved ændring af objekt beskrivelse for {0}! {1}", - "objectBrowser.changeObjectDesc.infoMessage": "Ændrede objekt beskrivelsen for {0} {1}.", - "objectBrowser.changeObjectDesc.prompt": "Opdater objekt beskrivelse for {0}, *BLANK for ingen beskrivelse", - "objectBrowser.copyMember.errorMessage": "Kan ikke kopiere et member til sig selv!", - "objectBrowser.copyMember.errorMessage2": "Member {0} eksisterer allerede!", - "objectBrowser.copyMember.errorMessage3": "Fejl ved oprettelse af member {0}: {1}", - "objectBrowser.copyMember.overwrite": "Vil du overskrive member {0}?", - "objectBrowser.copyMember.progressTitle": "Opretter member {0}...", - "objectBrowser.copyMember.prompt": "Ny sti til kopiering af source member", - "objectBrowser.copyObject.errorMessage": "Forkert sti: {0}. Brug formatet LIB/OBJ", - "objectBrowser.copyObject.errorMessage2": "Biblioteksnavn må være 10 tegn eller mindre.", - "objectBrowser.copyObject.errorMessage3": "Objektnavn må være 10 tegn eller mindre.", - "objectBrowser.copyObject.errorMessage4": "Fejl ved kopiering af objekt {0}! {1}", - "objectBrowser.copyObject.infoMessage": "Kopierede objekt {0} {1} til {2}.", - "objectBrowser.copyObject.infoMessage2": "Kopierede objekt {0} {1} til {2}. Opfrisk object browser.", - "objectBrowser.copyObject.prompt": "Kopier objekt til new bibliotek/objekt", - "objectBrowser.createFilter": "Opret nyt filter", - "objectBrowser.createLibrary.errorMessage": "Kan ikke oprette bibliotek \"{0}\": {1}", - "objectBrowser.createLibrary.errorMessage2": "Biblioteksnavn er for langt.", - "objectBrowser.createLibrary.infoMessage": "Vil du tilføje det nyt bibliotek til bibliotekslisten?", - "objectBrowser.createLibrary.prompt": "Navn på nyt bibliotek", - "objectBrowser.createMember.errorMessage": "Fejl ved oprettelse af member {0}: {1}", - "objectBrowser.createMember.progressTitle": "Opretter member {0}...", - "objectBrowser.createMember.prompt": "Navn på nyt member (member.ext)", - "objectBrowser.createSourceFile.errorMessage": "Fejl ved oprettelse af source fil! {0}", - "objectBrowser.createSourceFile.errorMessage2": "Source filnavn må være 10 tegn eller mindre.", - "objectBrowser.createSourceFile.infoMessage": "Opretter source fil {0}.", - "objectBrowser.createSourceFile.prompt": "Navn på ny source fil", - "objectBrowser.delete.confirm": "Er du sikker på at du vil slette {0}?", - "objectBrowser.delete.multiple.confirm": "Er du sikker på at du vil slette de {0} valgte elementer?", - "objectBrowser.delete.progress": "Sletter", - "objectBrowser.deleteMember.errorMessage": "Fejl ved sletning af member! {0}", - "objectBrowser.deleteObject.errorMessage": "Fejl ved sletning af objekt! {0}", - "objectBrowser.doSearchInSourceFile.errorMessage": "Fejl ved søgning i members: {0}", - "objectBrowser.doSearchInSourceFile.noMembers": "Der er ingen members at søge i.", - "objectBrowser.doSearchInSourceFile.notFound": "Søgning efter \"{0}\" i {1} gav intet resultat.", - "objectBrowser.doSearchInSourceFile.progressMessage": "Henter member liste for {0}.", - "objectBrowser.doSearchInSourceFile.searchMessage1": "\"{0}\" i {1}.", - "objectBrowser.doSearchInSourceFile.searchMessage2": "Dette kan tage noget tid da der er {0} members. Søger stadig efter \"{1}\" i {2}.", - "objectBrowser.doSearchInSourceFile.searchMessage3": "Hvad er egentligt så specielt med \"{0}\"?", - "objectBrowser.doSearchInSourceFile.searchMessage4": "Søger stadig efter \"{0}\" i {1}...", - "objectBrowser.doSearchInSourceFile.searchMessage5": "Hvad med at hente en kop kaffe mens du venter?", - "objectBrowser.doSearchInSourceFile.searchMessage6": "Uha, dette tager virkelig lang tid. Lad os håbe du får det ønskede resultat.", - "objectBrowser.doSearchInSourceFile.searchMessage7": "Der er 10 slags mennesker - dem der forstår binært og dem, der ikke gør!", - "objectBrowser.doSearchInSourceFile.searchMessage8": "Hvordan i alverden ender man med {0} members?", - "objectBrowser.doSearchInSourceFile.searchMessage9": "\"{0}\" i {1}.", - "objectBrowser.doSearchInSourceFile.title": "Søgning", - "objectBrowser.downloadMemberContent.cancel": "Members download cancelled.", - "objectBrowser.downloadMemberContent.download.cpytostmf": "copying to streamfiles", - "objectBrowser.downloadMemberContent.download.progress": "Downloading {0} members", - "objectBrowser.downloadMemberContent.download.streamfiles": "getting streamfiles", - "objectBrowser.downloadMemberContent.errorMessage": "Error downloading member(s)! {0}", - "objectBrowser.downloadMemberContent.infoMessage": "Members download complete.", - "objectBrowser.moveObject.errorMessage": "Objekt navn må være 10 tegn eller mindre.", - "objectBrowser.moveObject.errorMessage2": "Fejl ved flytning af objekt {0}! {1}", - "objectBrowser.moveObject.infoMessage": "Flyttede objekt {0} {1} til {2}.", - "objectBrowser.moveObject.infoMessage2": "Flyttede objekt {0} {1} til {2}. Opfrisk object browser.", - "objectBrowser.moveObject.progress": "Flytter objekt {0} {1} til {2}...", - "objectBrowser.moveObject.prompt": "Flyt objekt", - "objectBrowser.renameMember.errorMessage": "Fejl ved omdøbning af member! {0}", - "objectBrowser.renameMember.invalid.input": "Nyt member navn skal være forskelligt fra det nuværende navn", - "objectBrowser.renameMember.prompt": "Omdøb member {0}", - "objectBrowser.renameObject.errorMessage": "Objektnavn må være 10 tegn eller mindre.", - "objectBrowser.renameObject.errorMessage2": "Fejl ved omdøbning af objekt {0}! {1}", - "objectBrowser.renameObject.infoMessage": "Omdøbte objekt {0} {1} til {2}.", - "objectBrowser.renameObject.progress": "Omdøber objekt {0} {1} til {2}...", - "objectBrowser.renameObject.prompt": "Omdøb objekt", - "objectBrowser.searchSourceFile.aspText": "(i ASP {0})", - "objectBrowser.searchSourceFile.errorMessage": "Kan ikke søge med *ALL.", - "objectBrowser.searchSourceFile.invalidForm": "Venligst indtast værdi på formatet LIB/SPF/member.ext", - "objectBrowser.searchSourceFile.placeholder": "Indtast søgetekst eller vælg en af de tidligere søgninger.", - "objectBrowser.searchSourceFile.placeholder2": "Indtast søgetekst.", - "objectBrowser.searchSourceFile.previousSearches": "Forrige søgninger", - "objectBrowser.searchSourceFile.prompt": "Indtast LIB/SPF/member.ext til søgning (member.ext er valgfrit og kan indeholde mønstertegn)", - "objectBrowser.searchSourceFile.title": "Søg source fil", - "objectBrowser.searchSourceFile.title2": "Søg i {0} {1}", - "objectBrowser.updateMemberText.errorMessage": "Fejl ved ændring af member beskrivelse! {0}", - "objectBrowser.updateMemberText.prompt": "Opdater beskrivelse af member {0}, *BLANK for ingen beskrivelse", - "objectBrowser.uploadAndReplaceMemberAsFile.errorMessage": "Fejl ved afsendelse af fil! {0}", - "objectBrowser.uploadAndReplaceMemberAsFile.infoMessage": "Fil blev sendt til member.", - "offline": "Offline", - "online": "Online", - "open":"Open", - "open.service.configuration": "Åbn konfiguration", - "overview": "Overblik", - "overwrite": "Erstat", - "overwrite_all": "Erstat alle", - "owner": "Ejer", - "password": "Kodeord", - "privateKey": "Privat nøgle", - "ProfilesView.deleteConnectionProfile.warningMessage": "Er du sikker på at du vil slette profilen \"{0}\"?", - "ProfilesView.loadCommandProfile.errorMessage": "Fejl ved at hente bibliotekslisten fra kommando: {0}", - "ProfilesView.loadCommandProfile.infoMessage": "Skiftede til profilen \"{0}\".", - "ProfilesView.loadCommandProfile.warningMessage": "Fejl ved at hente bibliotekslisten fra kommando. Feature er ikke installeret.", - "ProfilesView.loadConnectionProfile.infoMessage": "Skiftede til profilen \"{0}\".", - "ProfilesView.saveConnectionProfile.infoMessage": "Gemte aktuelle indstillinger til profil \"{0}\".", - "ProfilesView.saveConnectionProfile.prompt": "Navn på profil", - "ProfilesView.setToDefault.detail": "Dette vil nulstille bibliotekslisten, aktuelle mappe og Bruger Variable.", - "ProfilesView.setToDefault.infoMessage": "Nulstil til standard", - "remote.certificate.not.found": "Værtens certifikat er ikke fundet", - "remote.certificate.not.found.detail": "{0} er ikke fundet under {1}", - "restart": "Genstart", - "Retry": "Prøv igen", - "sandbox.alreadyConnected": "Denne Visual Studio Code instans er allerede forbundet til en server.", - "sandbox.connected.modal.detail": "Du bruger dette system på egen risiko. Del ingen følsomme eller private informationer.", - "sandbox.connected.modal.title": "Tak for at afprøve Code for IBM i Sandbox!", - "sandbox.failedToConnect.text": "Fejl ved forbindelse til {0} som {1}", - "sandbox.failedToConnect.title": "Fejl ved forbindelse", - "sandbox.input.password.prompt": "Indtast kodeord for {0}@{1}", - "sandbox.input.password.title": "Kodeord for server", - "sandbox.input.user.prompt": "Indtast brugernavn for {0}", - "sandbox.input.user.title": "Bruger for server", - "sandbox.noconnection.modal.detail": "Desværre, men \"Sandkassen\" er ikke tilgængelig lige nu. Prøv igen lidt senere.", - "sandbox.noconnection.modal.title": "Åh nej! \"Sandkassen\" er ikke tilgængelig.", - "sandbox.noPassword": "Forbindelse til {0} afsluttet da intet kodeord blev angivet.", - "save": "Gem", - "searchView.find.message":"{0} fil(er) hedder '{1}'", - "searchView.search.message":"{0} fil(er) indeholder '{1}'", - "service.certificate.exists": "Remote service certifikat eksisterer", - "shortcut": "genvej", - "size": "Størrelse", - "skip": "Spring over", - "skip_all": "Spring alle over", - "start": "Start", - "START_TIME": "Start tid", - "start.debug.server.task": "Starter debug server...", - "start.debug.service.failed": "Fejl ved start af debug service: {0}", - "start.debug.service.succeeded": "Debug service er startet.", - "start.debug.service.task": "Starter debug service...", - "status": "Status", - "stop": "Stop", - "stop.debug.server.task": "Stopper debug server...", - "stop.debug.service.failed": "Fejl ved stop af debug service: {0}", - "stop.debug.service.succeeded": "Debug service er stoppet.", - "stop.debug.service.task": "Stopper debug service...", - "stored": "gemt", - "strdbgsvr.failed": "Fejl ved start af debug server: {0}", - "strdbgsvr.succeeded": "Debug server er startet.", - "streamfile": "fil", - "SUBSYSTEM": "Subsystem", - "text": "Tekst", - "type": "Type", - "USER_DIRECTORY": "Bruger mappe", - "username": "Brugernavn", - "Yes": "Ja", - "debug.service.config.incomplete": "Ufuldstændig konfiguration", - "debug.service.config.incomplete.detail": "Certifikatet skal regenereres" -} diff --git a/src/locale/ids/de.json b/src/locale/ids/de.json deleted file mode 100644 index 0fae41858..000000000 --- a/src/locale/ids/de.json +++ /dev/null @@ -1,429 +0,0 @@ -{ - "actions.BASENAME": "Name der Datei, einschließlich der Erweiterung", - "actions.BRANCH": "Aktueller Git-Branch", - "actions.BRANCHLIB": "Branchbibliothek, basierend auf dem aktuellen Branch", - "actions.BUILDLIB": "Das Gleiche wie &CURLIB", - "actions.CURLIB": "Aktuelle Bibliothek, änderbar in der Bibliotheksliste", - "actions.duplicate.select": "Wählen Sie eine Aktion zum Duplizieren aus", - "actions.EXT": "Filtertyp", - "actions.EXTL": "Dateityp in Kleinbuchstaben", - "actions.FILEDIR": "Verzeichnis der Datei auf dem Remote-System", - "actions.FULLPATH": "Vollständiger Pfad der Datei auf dem Remote-System", - "actions.HOST": "Hostname oder IP-Adresse der aktuellen Verbindung", - "actions.LIBLC": "Durch Komma getrennte Bibliotheksliste", - "actions.LIBLS": "Durch Leerzeichen getrennte Bibliotheksliste", - "actions.LIBRARY": "Bibliotheksname, in dem sich das Objekt befindet (&LIBRARYL for lowercase)", - "actions.mainMenu.createOrMaintain": "Erstellen oder verwalten Sie Aktionen. Aktionen werden nach der Art der Datei/des Objekts gruppiert, auf die sie abzielen.", - "actions.mainMenu.newAction": "Neue Aktion", - "actions.mainMenu.workWithActions": "Arbeiten Sie mit Aktionen", - "actions.member.EXT": "Erweiterung der Quelle (&EXTL for lowercase)", - "actions.NAME": "Name des Objekts (&NAMEL for lowercase)", - "actions.NAMEL": "Kleingeschriebener Name des Objekts", - "actions.object.EXT": "Erweiterung/Attribut des Objekts (&EXTL for lowercase)", - "actions.object.TYPE": "Typ des Objekts (&TYPEL for lowercase)", - "actions.OPENLIB": "Bibliotheksname, in dem sich die Quelle befindet (&OPENLIBL for lowercase)", - "actions.OPENMBR": "Name der Quelle (&OPENMBRL for lowercase)", - "actions.OPENSPF": "Name der Quelldatei, in der sich die Quelle befindet (&OPENSPFL for lowercase)", - "actions.PARENT": "Name des übergeordneten Verzeichnisses oder der Quelldatei", - "actions.RELATIVEPATH": "Relativer Pfad der Datei vom Arbeitsverzeichnis oder Arbeitsbereich", - "actions.streamfile.EXT": "Erweiterung der Datei (&EXTL for lowercase)", - "actions.streamfile.NAME": "Name der Datei (&NAMEL for lowercase)", - "actions.USERNAME": "Benutzername für die Verbindung", - "actions.workAction.command": "Befehl(e) zum Ausführen", - "actions.workAction.command.description": "Nachfolgend finden Sie verfügbare Variablen basierend auf dem Typ, den Sie unten ausgewählt haben. Sie können in jeder Zeile unterschiedliche Befehle angeben. Jede Befehlsausführung ist zustandslos und wird in einem eigenen Job ausgeführt.", - "actions.workAction.create.title": "Aktion erstellen", - "actions.workAction.delete.confirm": "Sind Sie sicher, dass Sie die Aktion \"{0}\" löschen möchten?", - "actions.workAction.duplicate.title": "Doppelte Aktion \"{0}\"", - "actions.workAction.edit.title": "Aktion bearbeiten \"{0}\"", - "actions.workAction.environment": "Umfeld", - "actions.workAction.environment.description": "Umgebung, in der der Befehl ausgeführt werden soll.", - "actions.workAction.environment.ile": "ILE", - "actions.workAction.environment.ile.description": "Wird als ILE-Befehl ausgeführt", - "actions.workAction.environment.pase": "PASE", - "actions.workAction.environment.pase.description": "Führt den Befehl in der PASE-Umgebung aus", - "actions.workAction.environment.qsh": "QShell", - "actions.workAction.environment.qsh.description": "Führt den Befehl über QShell aus", - "actions.workAction.extensions": "Erweiterungen", - "actions.workAction.extensions.description": "Eine durch Kommas getrennte Liste von Erweiterungen für diese Aktion. Dies kann eine Quellenerweiterung, eine Dateierweiterung, ein Objekttyp oder ein Objektattribut sein", - "actions.workAction.name": "Aktionsname", - "actions.workAction.refresh": "Aktualisierung", - "actions.workAction.refresh.browser": "Browser", - "actions.workAction.refresh.browser.description": "Der gesamte Browser wird aktualisiert", - "actions.workAction.refresh.description": "Die Browserebene, die nach Abschluss der Aktion aktualisiert werden soll", - "actions.workAction.refresh.filter": "Filter", - "actions.workAction.refresh.filter.description": "Der übergeordnete Filter wird aktualisiert", - "actions.workAction.refresh.no": "Nein", - "actions.workAction.refresh.no.description": "Keine Aktualisierung", - "actions.workAction.refresh.parent": "Übergeordnet", - "actions.workAction.refresh.parent.description": "Der übergeordnete Container wird aktualisiert", - "actions.workAction.runOnProtected": "Geschützt/schreibgeschützt ausführen", - "actions.workAction.runOnProtected.description": "Ermöglicht die Ausführung dieser Aktion auf geschützten oder schreibgeschützten Zielen", - "actions.workAction.types": "Typ", - "actions.workAction.types.description": "Die Dateitypen, die diese Aktion unterstützen kann.", - "actions.workAction.types.file": "Lokale Datei (Arbeitsbereich)", - "actions.workAction.types.file.description": "Aktionen für lokale Dateien im VS Code Arbeitsbereich.", - "actions.workAction.types.member": "Quelle", - "actions.workAction.types.member.description": "Quelle im QSYS-Dateisystem", - "actions.workAction.types.object": "Objekt", - "actions.workAction.types.object.description": "Objekte im QSYS-Dateisystem", - "actions.workAction.types.streamfile": "Datei", - "actions.workAction.types.streamfile.description": "Dateien im IFS", - "actions.WORKDIR": "Aktuelles Arbeitsverzeichnis, änderbar im IFS Browser", - "active.job": "Aktiver Job", - "ask.overwrite": "{0} existiert bereits.\nMöchten Sie es ersetzen?", - "attribute": "Attribut", - "AUTHORIZATION_NAME": "Aktueller Benutzer", - "cancel": "Stornieren", - "Cancel": "Stornieren", - "CCSID": "CCSID", - "certificates.match": "Das lokale Zertifikat stimmt mit dem Remote-Zertifikat überein", - "changed": "Geändert", - "clearedList": "Liste gelöscht.", - "clearList": "$(trash) Liste löschen", - "compare.active.file": "Compare with Active File", - "compare.no.file": "No file is open or selected", - "compare.prompt": "Enter the path to compare selected with", - "compare.title": "Compare with", - "connectionBrowser.connectTo.error": "Verwenden Sie den Serverbrowser, um auszuwählen, mit welchem ​​System eine Verbindung hergestellt werden soll.", - "connectionBrowser.connectTo.lastConnection": "Letzte Verbindung", - "connectionBrowser.connectTo.lastUsed": "Zuletzt verwendet: {0}", - "connectionBrowser.connectTo.title": "Letzte IBM i-Verbindungen", - "connectionBrowser.copyConnection.already.exists": "Verbindung \"{0}\" existiert bereits", - "connectionBrowser.copyConnection.placeholder": "Neuer Verbindungsname", - "connectionBrowser.copyConnection.prompt": "Verbindung \"{0}\" kopieren", - "connectionBrowser.copyConnection.select.command.profiles": "Befehlsprofile", - "connectionBrowser.copyConnection.select.connection.profiles": "Verbindungsprofile", - "connectionBrowser.copyConnection.select.custom.variables": "Benutzerdefinierte Variablen", - "connectionBrowser.copyConnection.select.home.directory": "Home-Verzeichnis", - "connectionBrowser.copyConnection.select.ifs.shortcuts": "IFS-Verknüpfungen", - "connectionBrowser.copyConnection.select.library.list": "Bibliotheksliste", - "connectionBrowser.copyConnection.select.object.filters": "Objektfilter", - "connectionBrowser.copyConnection.select.settings": "Wählen Sie die Einstellungen aus, die von \"{0}\" nach \"{1}\" kopiert werden sollen.", - "connectionBrowser.deleteConnection.multiple.warning": "Sind Sie sicher, dass Sie diese {0} Verbindungen löschen möchten?", - "connectionBrowser.deleteConnection.warning": "Sind Sie sicher, dass Sie die Verbindung \"{0}\" löschen möchten?", - "connectionBrowser.renameConnection.alreadyExists": "Verbindung \"{0}\" existiert bereits.", - "connectionBrowser.renameConnection.error": "Fehler beim Umbenennen der Verbindung \"{0}\"! {1}", - "connectionBrowser.renameConnection.invalid.input": "Der neue Verbindungsname muss sich vom aktuellen Namen unterscheiden", - "connectionBrowser.renameConnection.noConnectionFound": "Es wurde keine Verbindung mit dem Namen \"{0}\" gefunden", - "connectionBrowser.renameConnection.noConnParmsFound": "Für die Verbindung \"{0}\" wurden keine Parameter gefunden", - "connectionBrowser.renameConnection.prompt": "Verbindung \"{0}\" umbenennen", - "connectionBrowser.ServerItem.title": "Verbinden", - "connectionBrowser.ServerItem.tooltip": " (vorherige Verbindung)", - "Continue": "Weitermachen", - "created": "Erstellt", - "created_by": "Erstellt von", - "current": "aktuell", - "CURRENT_HEAP_SIZE": "Aktueller Speicher", - "currentLibrary": "(aktuelle Bibliothek)", - "debug.server": "Debug-Server", - "debug.service": "Debug-Dienst", - "debug.service.certificate": "Debug-Service-Zertifikat", - "debug.service.submit.options": "Debug-Service-Übermittlungsoptionen", - "debug.service.submit.options.prompt": "Gültige Parameter für SBMJOB", - "debugger.status": "Debugger-{0}-Status", - "delete": "Löschen", - "detail.reading.error": "Fehler beim Lesen der Debug-Service-Detaildatei {0}: {1}", - "directory": "Verzeichnis", - "directory.unsaved.changes": "Das Verzeichnis beinhaltet Datei(en) mit nicht gespeicherten Änderungen.", - "discard.changes": "Ihre Änderungen werden verworfen", - "download.certificate": "Zertifikat herunterladen", - "duplicate": "Duplikat", - "enddbgsvr.failed": "Fehler beim Stoppen des Debug-Servers: {0}", - "enddbgsvr.succeeded": "Debug-Server gestoppt.", - "error": "Fehler", - "errors": "Fehler", - "file.path.not.parsed": "Der Dateipfad konnte nicht analysiert werden.", - "file.unsaved.changes": "Die Datei enthält nicht gespeicherte Änderungen.", - "generate.certificate": "Servicezertifikat generieren", - "helpView.getStarted": "Loslegen", - "helpView.downloadLogs": "Download Logs", - "helpView.downloadLogs.gatheringLogs": "Gathering logs...", - "helpView.downloadLogs.codeForIBMiLog": "Code for IBM i Log", - "helpView.downloadLogs.debugServiceEclipseInstanceLog": "Debug Service Eclipse Instance Log", - "helpView.downloadLogs.debugServiceLog": "Debug Service Log", - "helpView.downloadLogs.downloadTo": "Download To", - "helpView.downloadLogs.failed": "Failed to downloaded logs to {0}", - "helpView.downloadLogs.failedMessage": "Failed to download logs to {0}. {1}", - "helpView.downloadLogs.noConnection": "Please connect to an IBM i", - "helpView.downloadLogs.noLogs": "No logs to download", - "helpView.downloadLogs.open": "Open", - "helpView.downloadLogs.selectLogs": "Select the logs you would like to download", - "helpView.downloadLogs.success": "Successfully downloaded logs to {0}", - "helpView.officialForum": "Offizielles Forum öffnen", - "helpView.reportIssue": "Ein Problem melden", - "helpView.reviewIssues": "Überprüfen Sie Probleme", - "iasp": "IASP", - "ifsBrowser.addIFSShortcut.error": "{0} ist kein Verzeichnis.", - "ifsBrowser.addIFSShortcut.errorMessage": "Fehler beim Erstellen der IFS-Verknüpfung! {0}", - "ifsBrowser.addIFSShortcut.prompt": "Pfad zum IFS-Verzeichnis", - "ifsBrowser.changeWorkingDirectory.message": "Arbeitsverzeichnis wurde in {0} geändert.", - "ifsBrowser.changeWorkingDirectory.prompt": "Arbeitsverzeichnis ändern", - "ifsBrowser.copyIFS.errorMessage": "Fehler beim Kopieren von {0}! {1}", - "ifsBrowser.copyIFS.infoMessage": "{0} wurde nach {1} kopiert.", - "ifsBrowser.copyIFS.prompt": "Name des neuen Pfads", - "ifsBrowser.copyToStreamfile.failed": "Fehler beim Kopieren von Quelle(n) nach {0}: {1}", - "ifsBrowser.copyToStreamfile.infoMessage": "{0} Quelle(n) wurde(n) in Datei(en) in {1} kopiert.", - "ifsBrowser.createDirectory.errorMessage": "Fehler beim Erstellen eines neuen Verzeichnisses! {0}", - "ifsBrowser.createDirectory.prompt": "Pfad des neuen Ordners", - "ifsBrowser.createStreamfile.errorMessage": "Fehler beim Erstellen einer neuen Datei! {0}", - "ifsBrowser.createStreamfile.infoMessage": "Datei {0} wird erstellt.", - "ifsBrowser.createStreamfile.prompt": "Name der neuen Datei", - "ifsBrowser.deleteIFS.cancelled": "Löschung abgebrochen.", - "ifsBrowser.deleteIFS.default.home.dir": "{0} war das Arbeitsverzeichnis; es ist jetzt {1}.", - "ifsBrowser.deleteIFS.deletionPrompt": "Sobald Sie das Verzeichnis gelöscht haben, kann es nicht wiederhergestellt werden.\nBitte geben Sie \"{0}\" ein, um den Löschvorgang zu bestätigen.", - "ifsBrowser.deleteIFS.deletionPrompt2": " (Drücken Sie „Escape“, um abzubrechen)“", - "ifsBrowser.deleteIFS.dirNotAllowed": "Geschützte Verzeichnisse können nicht aus dem IFS-Browser gelöscht werden!\n{0}", - "ifsBrowser.deleteIFS.errorMessage": "Fehler beim Löschen der Datei! {0}", - "ifsBrowser.deleteIFS.multi.warningMessage": "Sind Sie sicher, dass Sie die {0} ausgewählten Dateien löschen möchten?", - "ifsBrowser.deleteIFS.progress": "{0} Element(e) werden gelöscht...", - "ifsBrowser.deleteIFS.warningMessage": "Sind Sie sicher, dass Sie {0} löschen möchten?", - "ifsBrowser.doFindStreamfiles.errorMessage": "Error finding filenames.", - "ifsBrowser.doFindStreamfiles.noResults": "No results found finding filenames with \"{0}\" in {1}.", - "ifsBrowser.doFindStreamfiles.progressMessage": "Finding filenames with \"{0}\" in {1}.", - "ifsBrowser.doFindStreamfiles.title": "Finding", - "ifsBrowser.doSearchInStreamfiles.errorMessage": "Fehler beim Durchsuchen der Dateien.", - "ifsBrowser.doSearchInStreamfiles.noResults": "Für die Suche nach \"{0}\" in {1} wurden keine Ergebnisse gefunden.", - "ifsBrowser.doSearchInStreamfiles.progressMessage": "\"{0}\" in {1}.", - "ifsBrowser.doSearchInStreamfiles.title": "Suchen", - "ifsBrowser.downloadStreamfile.complete": "Download abgeschlossen", - "ifsBrowser.downloadStreamfile.downloading": "wird heruntergeladen", - "ifsBrowser.downloadStreamfile.errorMessage": "Fehler beim Herunterladen der Datei(en): {0}", - "ifsBrowser.ifs.find.noFind": "\"findutils\" must be installed on the remote system.", - "ifsBrowser.ifs.find.placeholder": "Enter find term or select one of the previous find terms.", - "ifsBrowser.ifs.find.placeholder2": "Enter find term.", - "ifsBrowser.ifs.find.previousSearches": "Previous find terms", - "ifsBrowser.ifs.find.prompt": "Enter IFS directory to find files in", - "ifsBrowser.ifs.find.title": "Find in directory", - "ifsBrowser.ifs.find.title2": "Find {0}", - "ifsBrowser.getChildren.errorMessage": "Fehler beim Laden von Objekten.", - "ifsBrowser.handleFileListErrors.errorMessage": "{0} {1} ist beim Auflisten von Dateien aufgetreten.", - "ifsBrowser.moveIFS.errorMessage": "Fehler beim Umbenennen/Verschieben von {0}! {1}", - "ifsBrowser.moveIFS.moved": "{0} wurde nach {1} verschoben.", - "ifsBrowser.moveIFS.prompt": "Name des neuen Pfads", - "ifsBrowser.moveIFS.renamed": "{0} wurde in {1} umbenannt.", - "ifsBrowser.removeIFSShortcut.placeHolder": "Wählen Sie die zu entfernende IFS-Verknüpfung aus", - "ifsBrowser.searchIFS.noGrep": "Für die IFS-Suche muss grep auf dem Remote-System installiert sein.", - "ifsBrowser.searchIFS.placeholder": "Geben Sie den Suchbegriff ein oder wählen Sie einen der vorherigen Suchbegriffe aus.", - "ifsBrowser.searchIFS.placeholder2": "Geben Sie einen Suchbegriff ein.", - "ifsBrowser.searchIFS.previousSearches": "Vorherige Suchbegriffe", - "ifsBrowser.searchIFS.prompt": "Geben Sie das zu durchsuchende IFS-Verzeichnis ein", - "ifsBrowser.searchIFS.title": "Verzeichnis durchsuchen", - "ifsBrowser.searchIFS.title2": "Suche {0}", - "ifsBrowser.uploadStreamfile.ask": "Möchten Sie die Auswahl nach {0} kopieren oder verschieben?", - "ifsBrowser.uploadStreamfile.copy": "Kopieren", - "ifsBrowser.uploadStreamfile.copy.failed": "Auswahl konnte nicht nach {0} kopiert werden: {1}", - "ifsBrowser.uploadStreamfile.errorMessage": "Fehler beim Hochladen der Dateien! {0}", - "ifsBrowser.uploadStreamfile.move": "Bewegen", - "ifsBrowser.uploadStreamfile.move.failed": "Auswahl konnte nicht nach {0} verschoben werden: {1}", - "ifsBrowser.uploadStreamfile.noFilesSelected": "Keine Dateien oder Ordner zum Hochladen ausgewählt.", - "ifsBrowser.uploadStreamfile.process.uploading": "Hochladen", - "ifsBrowser.uploadStreamfile.process.uploading.directory": "{0} Verzeichnis wird gesendet...", - "ifsBrowser.uploadStreamfile.process.uploading.files": "{0} Datei(en) werden gesendet...", - "ifsBrowser.uploadStreamfile.select.type.files": "Dateien", - "ifsBrowser.uploadStreamfile.select.type.folders": "Ordner", - "ifsBrowser.uploadStreamfile.select.type.title": "Was möchten Sie hochladen?", - "ifsBrowser.uploadStreamfile.uploadedFiles": "Hochladen abgeschlossen.", - "JAVA_HOME": "Java-Home Pfad", - "java.not.found":"Java version {0} is not installed.", - "job": "Job", - "JOB_NAME_SHORT": "Job Name", - "JOB_NUMBER": "Job Nummer", - "JOB_STATUS": "Job Status", - "JOB_USER": "Job Benutzer", - "jvm.info": "JVM-Informationen", - "length": "Länge", - "LibraryListView.addToLibraryList.addedLib": "Bibliothek {0} wurde zur Bibliotheksliste hinzugefügt.", - "LibraryListView.addToLibraryList.alreadyInList": "Bibliothek {0} war bereits in der Bibliotheksliste.", - "LibraryListView.addToLibraryList.invalidLib": "Bibliothek {0} existiert nicht.", - "LibraryListView.addToLibraryList.prompt": "Bibliothek zum Hinzufügen", - "LibraryListView.addToLibraryList.removedLibs": "Die folgenden Bibliotheken wurden aus der aktualisierten Bibliotheksliste entfernt, da sie ungültig sind: {0}", - "LibraryListView.addToLibraryList.tooLong": "Die Bibliothek ist zu lang.", - "LibraryListView.changeCurrentLibrary.alreadyCurrent": "{0} ist bereits aktuelle Bibliothek.", - "LibraryListView.changeCurrentLibrary.changedCurrent": "Aktuelle Bibliothek in {0} geändert.", - "LibraryListView.changeCurrentLibrary.currentlyActive": "Derzeit aktiv", - "LibraryListView.changeCurrentLibrary.placeholder": "Filter oder neue Bibliothek, die als aktuelle Bibliothek festgelegt werden soll", - "LibraryListView.changeCurrentLibrary.recentlyUsed": "Kürzlich benutzt", - "LibraryListView.changeCurrentLibrary.title": "Aktuelle Bibliothek ändern", - "LibraryListView.changeUserLibraryList.prompt": "Bibliotheksliste ändern (can use \"*reset\")", - "LibraryListView.changeUserLibraryList.removedLibs": "Die folgenden Bibliotheken wurden aus der aktualisierten Bibliotheksliste entfernt, da sie ungültig sind: {0}", - "LibraryListView.cleanupLibraryList.removedLibs": "Die folgenden Bibliotheken wurden aus der aktualisierten Bibliotheksliste entfernt, da sie ungültig sind: {0}", - "LibraryListView.cleanupLibraryList.validated": "Die Bibliotheksliste wurde ohne Fehler validiert.", - "LibraryListView.removeFromLibraryList.removedLib": "Die Bibliothek {0} wurde aus der Bibliotheksliste entfernt.", - "LibraryListView.setCurrentLibrary.failed": "{0} konnte nicht als aktuelle Bibliothek festgelegt werden: {1}", - "lines": "Linien", - "listening.on.port": "Hört auf Port", - "listening.on.ports": "Hört auf Ports", - "loading.debugger.info": "Debugger-Informationen werden geladen...", - "local.certificate": "Lokales Zertifikat", - "local.certificate.not.found": "Lokales Zertifikat nicht gefunden", - "local.dont.match.remote": "Lokales Zertifikat stimmt nicht mit Remote-Zertifikat überein", - "login.authDecision": "Geben Sie nur entweder das Passwort oder einen privaten Schlüssel an – nicht beides.", - "login.authRemoved": "Authentifizierungsmethoden für \"{0}\" entfernt.", - "login.host": "Host oder IP-Adresse", - "login.password.label": "Geben Sie nur dann ein Passwort ein, wenn Sie ein bestehendes aktualisieren oder ein neues festlegen möchten.", - "login.password.updated": "Passwort aktualisiert und wird für \"{0}\" verwendet.", - "login.port": "Port (SSH)", - "login.privateKey.label": "Geben Sie nur dann einen privaten Schlüssel an, wenn Sie vom vorhandenen aktualisieren oder einen festlegen möchten.", - "login.privateKey.support": "Die Formate OpenSSH, RFC4716 und PPK werden unterstützt.", - "login.privateKey.updated": "Privater Schlüssel aktualisiert und wird für \"{0}\" verwendet.", - "login.removeAuth": "Authentifizierungsmethoden entfernen", - "login.savePassword": "Passwort speichern", - "login.title.create": "Stellen Sie eine Verbindung zu IBM i her", - "login.title.edit": "Anmeldeeinstellungen: \"{0}\"", - "MAX_HEAP_SIZE": "Maximal zulässiger Speicher", - "member.has.unsaved.changes": "Die Quelle hat nicht gespeicherte Änderungen.", - "members": "Quellen", - "MEMORY_POOL": "Speicherpool", - "modified": "Geändert", - "No": "Nein", - "not.connected": "Nicht mit einem IBM i verbunden", - "not.found.in": "Nicht gefunden in {0}", - "objectBrowser.changeObjectDesc.errorMessage": "Die Objektbeschreibung darf maximal 50 Zeichen lang sein.", - "objectBrowser.changeObjectDesc.errorMessage2": "Fehler beim Ändern der Beschreibung für {0}! {1}", - "objectBrowser.changeObjectDesc.infoMessage": "Objektbeschreibung für {0} {1} geändert.", - "objectBrowser.changeObjectDesc.prompt": "Objektbeschreibung für {0} ändern, *BLANK für keine Beschreibung", - "objectBrowser.copyMember.errorMessage": "Quelle kann nicht in sich selbst kopiert werden!", - "objectBrowser.copyMember.errorMessage2": "Quelle {0} existiert bereits!", - "objectBrowser.copyMember.errorMessage3": "Fehler beim Erstellen von Quelle {0}: {1}", - "objectBrowser.copyMember.overwrite": "Sind Sie sicher, dass Sie Quelle {0} überschreiben möchten?", - "objectBrowser.copyMember.progressTitle": "Quelle {0} wird erstellt...", - "objectBrowser.copyMember.prompt": "Neuer Pfad für die Kopie der Quelle", - "objectBrowser.copyObject.errorMessage": "Ungültiger Pfad: {0}. Verwenden Sie das Format LIB/OBJ", - "objectBrowser.copyObject.errorMessage2": "Die Bibliothek darf höchstens 10 Zeichen lang sein.", - "objectBrowser.copyObject.errorMessage3": "Der Objektname darf höchstens 10 Zeichen lang sein.", - "objectBrowser.copyObject.errorMessage4": "Fehler beim Kopieren des Objekts {0}! {1}", - "objectBrowser.copyObject.infoMessage": "Objekt {0} {1} nach {2} kopiert.", - "objectBrowser.copyObject.infoMessage2": "Objekt {0} {1} nach {2} kopiert. Objektbrowser aktualisieren.", - "objectBrowser.copyObject.prompt": "Erstellen Sie ein doppeltes Objekt für eine neue Bibliothek/ein neues Objekt", - "objectBrowser.createFilter": "Neuen Filter erstellen", - "objectBrowser.createLibrary.errorMessage": "Bibliothek \"{0}\" kann nicht erstellt werden", - "objectBrowser.createLibrary.errorMessage2": "Bibliotheksname zu lang.", - "objectBrowser.createLibrary.infoMessage": "Möchten Sie die neue Bibliothek zur Bibliotheksliste hinzufügen?", - "objectBrowser.createLibrary.prompt": "Name der neuen Bibliothek", - "objectBrowser.createMember.errorMessage": "Fehler beim Erstellen von Quelle {0}: {1}", - "objectBrowser.createMember.progressTitle": "Quelle {0} wird erstellt...", - "objectBrowser.createMember.prompt": "Name des neuen Quelle (member.ext)", - "objectBrowser.createSourceFile.errorMessage": "Fehler beim Erstellen der Quelldatei! {0}", - "objectBrowser.createSourceFile.errorMessage2": "Der Name der Quelldatei darf höchstens 10 Zeichen lang sein.", - "objectBrowser.createSourceFile.infoMessage": "Quelldatei {0} wird erstellt.", - "objectBrowser.createSourceFile.prompt": "Name der neuen Quelldatei", - "objectBrowser.delete.confirm": "Sind Sie sicher, dass Sie {0} löschen möchten?", - "objectBrowser.delete.multiple.confirm": "Sind Sie sicher, dass Sie diese {0} Elemente löschen möchten?", - "objectBrowser.delete.progress": "Löschen", - "objectBrowser.deleteMember.errorMessage": "Fehler beim Löschen der Quelle! {0}", - "objectBrowser.deleteObject.errorMessage": "Fehler beim Löschen des Objekts! {0}", - "objectBrowser.doSearchInSourceFile.errorMessage": "Fehler bei der Suche nach Quelle: {0}", - "objectBrowser.doSearchInSourceFile.noMembers": "Keine Quellen zum Suchen vorhanden.", - "objectBrowser.doSearchInSourceFile.notFound": "Für die Suche nach \"{0}\" in {1} wurden keine Ergebnisse gefunden.", - "objectBrowser.doSearchInSourceFile.progressMessage": "Quellenliste für {0} wird abgerufen.", - "objectBrowser.doSearchInSourceFile.searchMessage1": "\"{0}\" in {1}.", - "objectBrowser.doSearchInSourceFile.searchMessage2": "Dies dauert eine Weile, da es {0} Quellen gibt. Suche nach \"{1}\" in {2} noch.", - "objectBrowser.doSearchInSourceFile.searchMessage3": "Was ist überhaupt das Besondere an \"{0}\"?", - "objectBrowser.doSearchInSourceFile.searchMessage4": "Suche immer noch \"{0}\" in {1}...", - "objectBrowser.doSearchInSourceFile.searchMessage5": "Während Sie warten, bereiten Sie sich doch mal einen Tee zu.", - "objectBrowser.doSearchInSourceFile.searchMessage6": "Wow. Das dauert wirklich eine Weile. Hoffen wir, dass Sie das gewünschte Ergebnis erhalten.", - "objectBrowser.doSearchInSourceFile.searchMessage7": "Warum hatten sechs Angst vor sieben?", - "objectBrowser.doSearchInSourceFile.searchMessage8": "Wie kommt man zu {0} Quellen?", - "objectBrowser.doSearchInSourceFile.searchMessage9": "\"{0}\" in {1}.", - "objectBrowser.doSearchInSourceFile.title": "Suchen", - "objectBrowser.downloadMemberContent.cancel": "Download für Quellen abgebrochen.", - "objectBrowser.downloadMemberContent.download.cpytostmf": "Kopieren in Dateien", - "objectBrowser.downloadMemberContent.download.progress": "{0} Quellen werden heruntergeladen", - "objectBrowser.downloadMemberContent.download.streamfiles": "Dateien abrufen", - "objectBrowser.downloadMemberContent.errorMessage": "Fehler beim Herunterladen der Quellen! {0}", - "objectBrowser.downloadMemberContent.infoMessage": "Download für Quellen abgeschlossen.", - "objectBrowser.moveObject.errorMessage": "Der Objektname darf höchstens 10 Zeichen lang sein.", - "objectBrowser.moveObject.errorMessage2": "Fehler beim Verschieben des Objekts {0}! {1}", - "objectBrowser.moveObject.infoMessage": "Objekt {0} {1} nach {2} verschoben.", - "objectBrowser.moveObject.infoMessage2": "Objekt {0} {1} nach {2} verschoben. Objektbrowser aktualisieren.", - "objectBrowser.moveObject.progress": "Objekt {0} {1} nach {2} verschieben...", - "objectBrowser.moveObject.prompt": "Objekt verschieben", - "objectBrowser.renameMember.errorMessage": "Fehler beim Umbenennen der Quelle! {0}", - "objectBrowser.renameMember.invalid.input": "Der Name der neuen Quelle muss sich vom aktuellen Namen unterscheiden", - "objectBrowser.renameMember.prompt": "{0} umbenennen", - "objectBrowser.renameObject.errorMessage": "Der Objektname darf höchstens 10 Zeichen lang sein.", - "objectBrowser.renameObject.errorMessage2": "Fehler beim Umbenennen des Objekts {0}! {1}", - "objectBrowser.renameObject.infoMessage": "Objekt {0} {1} in {2} umbenannt.", - "objectBrowser.renameObject.progress": "Objekt {0} {1} wird in {2} umbenannt...", - "objectBrowser.renameObject.prompt": "Objekt umbenennen", - "objectBrowser.searchSourceFile.aspText": "(in ASP {0})", - "objectBrowser.searchSourceFile.errorMessage": "Einträge mit *ALL können nicht durchsucht werden.", - "objectBrowser.searchSourceFile.invalidForm": "Bitte geben Sie den Wert im Formular LIB/SPF/member.ext ein", - "objectBrowser.searchSourceFile.placeholder": "Geben Sie den Suchbegriff ein oder wählen Sie einen der vorherigen Suchbegriffe aus.", - "objectBrowser.searchSourceFile.placeholder2": "Geben Sie einen Suchbegriff ein.", - "objectBrowser.searchSourceFile.previousSearches": "Vorherige Suchbegriffe", - "objectBrowser.searchSourceFile.prompt": "Geben Sie LIB/SPF/member.ext ein, um zu suchen (member.ext ist optional und kann Platzhalter enthalten).", - "objectBrowser.searchSourceFile.title": "Quelldatei durchsuchen", - "objectBrowser.searchSourceFile.title2": "Suche {0} {1}", - "objectBrowser.updateMemberText.errorMessage": "Fehler beim Ändern der Quellenbeschreibung! {0}", - "objectBrowser.updateMemberText.prompt": "Ändern Sie die Quellenbeschreibung für {0}, *BLANK für keine Beschreibung", - "objectBrowser.uploadAndReplaceMemberAsFile.errorMessage": "Fehler beim Hochladen von Inhalten für die Quelle! {0}", - "objectBrowser.uploadAndReplaceMemberAsFile.infoMessage": "Quelle wurde hochgeladen.", - "offline": "Offline", - "online": "Online", - "open":"Open", - "open.service.configuration": "Konfiguration öffnen", - "overview": "Überblick", - "overwrite": "Überschreiben", - "overwrite_all": "Alles überschreiben", - "owner": "Eigentümer", - "password": "Passwort", - "privateKey": "Privat Schlüssel", - "ProfilesView.deleteConnectionProfile.warningMessage": "Sind Sie sicher, dass Sie das Profil \"{0}\" löschen möchten?", - "ProfilesView.loadCommandProfile.errorMessage": "Bibliotheksliste konnte nicht mit Befehl abgerufen werden: {0}", - "ProfilesView.loadCommandProfile.infoMessage": "Zum Profil \"{0}\" gewechselt.", - "ProfilesView.loadCommandProfile.warningMessage": "Bibliotheksliste konnte nicht vom Befehl abgerufen werden. Funktion nicht installiert.", - "ProfilesView.loadConnectionProfile.infoMessage": "Zum Profil \"{0}\" gewechselt.", - "ProfilesView.saveConnectionProfile.infoMessage": "Aktuelle Einstellungen im Profil \"{0}\" gespeichert.", - "ProfilesView.saveConnectionProfile.prompt": "Name des Profils", - "ProfilesView.setToDefault.detail": "Dadurch werden die Benutzerbibliotheksliste, das Arbeitsverzeichnis und die benutzerdefinierten Variablen auf die Standardwerte zurückgesetzt.", - "ProfilesView.setToDefault.infoMessage": "Zurücksetzen", - "remote.certificate.not.found": "Remote-Zertifikat nicht gefunden", - "remote.certificate.not.found.detail": "{0} nicht gefunden unter {1}", - "restart": "Neu starten", - "Retry": "Wiederholen", - "sandbox.alreadyConnected": "Diese Visual Studio Code-Instanz ist bereits mit einem Server verbunden.", - "sandbox.connected.modal.detail": "Sie nutzen dieses System auf eigenes Risiko. Geben Sie keine sensiblen oder privaten Informationen weiter.", - "sandbox.connected.modal.title": "Vielen Dank, dass Sie den Code für IBM i Sandbox ausprobiert haben!", - "sandbox.failedToConnect.text": "Es konnte keine Verbindung zu {0} als {1} hergestellt werden.", - "sandbox.failedToConnect.title": "Verbindung nicht möglich", - "sandbox.input.password.prompt": "Geben Sie das Passwort für {0}@{1} ein.", - "sandbox.input.password.title": "Passwort für Server", - "sandbox.input.user.prompt": "Geben Sie den Benutzernamen für {0} ein", - "sandbox.input.user.title": "Benutzer für Server", - "sandbox.noconnection.modal.detail": "Tut mir leid, aber die Sandbox ist gerade offline. Versuchen Sie es ein anderes Mal noch einmal.", - "sandbox.noconnection.modal.title": "Ach nein! Die Sandbox ist ausgefallen.", - "sandbox.noPassword": "Die Verbindung zu {0} wurde beendet, da kein Passwort angegeben wurde.", - "save": "Speichern", - "searchView.find.message":"{0} file(s) named '{1}'", - "searchView.search.message":"{0} file(s) contain(s) '{1}'", - "service.certificate.exists": "Remote-Service-Zertifikat vorhanden", - "shortcut": "Abkürzung", - "size": "Größe", - "skip": "Überspringen", - "skip_all": "Alles überspringen", - "start": "Start", - "START_TIME": "Startzeit", - "start.debug.server.task": "Debug-Server wird gestartet...", - "start.debug.service.failed": "Debug-Dienst konnte nicht gestartet werden: {0}", - "start.debug.service.succeeded": "Debug-Dienst gestartet.", - "start.debug.service.task": "Debug-Dienst wird gestartet...", - "status": "Status", - "stop": "Stoppen", - "stop.debug.server.task": "Debug-Server wird gestoppt...", - "stop.debug.service.failed": "Der Debug-Dienst konnte nicht gestoppt werden: {0}", - "stop.debug.service.succeeded": "Der Debug-Dienst wurde gestoppt.", - "stop.debug.service.task": "Debug-Dienst wird gestoppt...", - "stored": "gespeichert", - "strdbgsvr.failed": "Fehler beim Starten des Debug-Servers: {0}", - "strdbgsvr.succeeded": "Debug-Server gestartet.", - "streamfile": "Datei", - "SUBSYSTEM": "Subsystem", - "text": "Text", - "type": "Typ", - "USER_DIRECTORY": "Benutzerverzeichnis", - "username": "Nutzername", - "Yes": "Ja", - "debug.service.config.incomplete": "Incomplete configuration", - "debug.service.config.incomplete.detail": "Certificate needs to be regenerated" - } \ No newline at end of file diff --git a/src/locale/ids/en.json b/src/locale/ids/en.json deleted file mode 100644 index ee6b11c5b..000000000 --- a/src/locale/ids/en.json +++ /dev/null @@ -1,429 +0,0 @@ -{ - "actions.BASENAME": "Name of the file, including the extension", - "actions.BRANCH": "Current Git branch", - "actions.BRANCHLIB": "Branch library, based on the current branch", - "actions.BUILDLIB": "The same as &CURLIB", - "actions.CURLIB": "Current library, changeable in Library List", - "actions.duplicate.select": "Select an action to duplicate", - "actions.EXT": "File type", - "actions.EXTL": "Lowercase file type", - "actions.FILEDIR": "Directory of the file on the remote system", - "actions.FULLPATH": "Full path of the file on the remote system", - "actions.HOST": "Hostname or IP address from the current connection", - "actions.LIBLC": "Library list delimited by comma", - "actions.LIBLS": "Library list delimited by space", - "actions.LIBRARY": "Library name where the object lives (&LIBRARYL for lowercase)", - "actions.mainMenu.createOrMaintain": "Create or maintain Actions. Actions are grouped by the type of file/object they target.", - "actions.mainMenu.newAction": "New Action", - "actions.mainMenu.workWithActions": "Work with Actions", - "actions.member.EXT": "Extension of the source member (&EXTL for lowercase)", - "actions.NAME": "Name of the object (&NAMEL for lowercase)", - "actions.NAMEL": "Lowercase name of the object", - "actions.object.EXT": "Extension/attribute of the object (&EXTL for lowercase)", - "actions.object.TYPE": "Type of the object (&TYPEL for lowercase)", - "actions.OPENLIB": "Library name where the source member lives (&OPENLIBL for lowercase)", - "actions.OPENMBR": "Name of the source member (&OPENMBRL for lowercase)", - "actions.OPENSPF": "Source file name where the source member lives (&OPENSPFL for lowercase)", - "actions.PARENT": "Name of the parent directory or source file", - "actions.RELATIVEPATH": "Relative path of the streamfile from the working directory or workspace", - "actions.streamfile.EXT": "Extension of the file (&EXTL for lowercase)", - "actions.streamfile.NAME": "Name of the file (&NAMEL for lowercase)", - "actions.USERNAME": "Username for connection", - "actions.workAction.command": "Command(s) to run", - "actions.workAction.command.description": "Below are available variables based on the Type you have select below. You can specify different commands on each line. Each command run is stateless and run in their own job.", - "actions.workAction.create.title": "Create action", - "actions.workAction.delete.confirm": "Are you sure you want to delete the action \"{0}\"?", - "actions.workAction.duplicate.title": "Duplicate action \"{0}\"", - "actions.workAction.edit.title": "Edit action \"{0}\"", - "actions.workAction.environment": "Environment", - "actions.workAction.environment.description": "Environment for command to be executed in.", - "actions.workAction.environment.ile": "ILE", - "actions.workAction.environment.ile.description": "Runs as an ILE command", - "actions.workAction.environment.pase": "PASE", - "actions.workAction.environment.pase.description": "Runs the command in the PASE environment", - "actions.workAction.environment.qsh": "QShell", - "actions.workAction.environment.qsh.description": "Runs the command through QShell", - "actions.workAction.extensions": "Extensions", - "actions.workAction.extensions.description": "A comma delimited list of extensions for this action. This can be a member extension, a streamfile extension, an object type or an object attribute", - "actions.workAction.name": "Action name", - "actions.workAction.refresh": "Refresh", - "actions.workAction.refresh.browser": "Browser", - "actions.workAction.refresh.browser.description": "The entire browser is refreshed", - "actions.workAction.refresh.description": "The browser level to refresh after the action is done", - "actions.workAction.refresh.filter": "Filter", - "actions.workAction.refresh.filter.description": "The parent filter is refreshed", - "actions.workAction.refresh.no": "No", - "actions.workAction.refresh.no.description": "No refresh", - "actions.workAction.refresh.parent": "Parent", - "actions.workAction.refresh.parent.description": "The parent container is refreshed", - "actions.workAction.runOnProtected": "Run on protected/read only", - "actions.workAction.runOnProtected.description": "Allows the execution of this Action on protected or read only targets", - "actions.workAction.types": "Type", - "actions.workAction.types.description": "The types of files this action can support.", - "actions.workAction.types.file": "Local File (Workspace)", - "actions.workAction.types.file.description": "Actions for local files in the VS Code Workspace.", - "actions.workAction.types.member": "Member", - "actions.workAction.types.member.description": "Source members in the QSYS file system", - "actions.workAction.types.object": "Object", - "actions.workAction.types.object.description": "Objects in the QSYS file system", - "actions.workAction.types.streamfile": "Streamfile", - "actions.workAction.types.streamfile.description": "Streamfiles in the IFS", - "actions.WORKDIR": "Current working directory, changeable in IFS Browser", - "active.job": "Active job", - "ask.overwrite": "{0} already exists.\nDo you want to replace it?", - "attribute": "Attribute", - "AUTHORIZATION_NAME": "Current user", - "cancel": "Cancel", - "Cancel": "Cancel", - "CCSID": "CCSID", - "certificates.match": "Local certificate matches remote", - "changed": "Changed", - "clearedList": "Cleared list.", - "clearList": "$(trash) Clear list", - "compare.active.file": "Compare with Active File", - "compare.no.file": "No file is open or selected", - "compare.prompt": "Enter the path to compare selected with", - "compare.title": "Compare with", - "connectionBrowser.connectTo.error": "Use the Server Browser to select which system to connect to.", - "connectionBrowser.connectTo.lastConnection": "Last connection", - "connectionBrowser.connectTo.lastUsed": "Last used: {0}", - "connectionBrowser.connectTo.title": "Last IBM i connections", - "connectionBrowser.copyConnection.already.exists": "Connection \"{0}\" already exists", - "connectionBrowser.copyConnection.placeholder": "New connection name", - "connectionBrowser.copyConnection.prompt": "Copy connection \"{0}\"", - "connectionBrowser.copyConnection.select.command.profiles": "Command profiles", - "connectionBrowser.copyConnection.select.connection.profiles": "Connection profiles", - "connectionBrowser.copyConnection.select.custom.variables": "Custom variables", - "connectionBrowser.copyConnection.select.home.directory": "Home directory", - "connectionBrowser.copyConnection.select.ifs.shortcuts": "IFS shortcuts", - "connectionBrowser.copyConnection.select.library.list": "Library list", - "connectionBrowser.copyConnection.select.object.filters": "Object filters", - "connectionBrowser.copyConnection.select.settings": "Select the settings to copy from \"{0}\" to \"{1}\"", - "connectionBrowser.deleteConnection.multiple.warning": "Are you sure you want to delete these {0} connections?", - "connectionBrowser.deleteConnection.warning": "Are you sure you want to delete the connection \"{0}\"?", - "connectionBrowser.renameConnection.alreadyExists": "Connection \"{0}\" already exists.", - "connectionBrowser.renameConnection.error": "Error renaming connection \"{0}\"! {1}", - "connectionBrowser.renameConnection.invalid.input": "New connection name must be different from its current name", - "connectionBrowser.renameConnection.noConnectionFound": "No connection named \"{0}\" was found", - "connectionBrowser.renameConnection.noConnParmsFound": "No parameters for connection \"{0}\" was found", - "connectionBrowser.renameConnection.prompt": "Rename connection \"{0}\"", - "connectionBrowser.ServerItem.title": "Connect", - "connectionBrowser.ServerItem.tooltip": " (previous connection)", - "Continue": "Continue", - "created": "Created", - "created_by": "Created by", - "current": "current", - "CURRENT_HEAP_SIZE": "Current memory", - "currentLibrary": "(current library)", - "debug.server": "Debug Server", - "debug.service": "Debug Service", - "debug.service.certificate": "Debug Service Certificate", - "debug.service.submit.options": "Debug Service submit options", - "debug.service.submit.options.prompt": "Valid parameters for SBMJOB", - "debugger.status": "Debugger {0} Status", - "delete": "Delete", - "detail.reading.error": "Failed to read debug service detail file {0}: {1}", - "directory": "directory", - "directory.unsaved.changes": "The directory has file(s) with unsaved changes.", - "discard.changes": "Your changes will be discarded", - "download.certificate": "Download certificate", - "duplicate": "Duplicate", - "enddbgsvr.failed": "Failed to stop debug server: {0}", - "enddbgsvr.succeeded": "Debug server stopped.", - "error": "error", - "errors": "errors", - "file.path.not.parsed": "The file path could not be parsed.", - "file.unsaved.changes": "The file has unsaved changes.", - "generate.certificate": "Generate service certificate", - "helpView.getStarted": "Get started", - "helpView.downloadLogs": "Download Logs", - "helpView.downloadLogs.gatheringLogs": "Gathering logs...", - "helpView.downloadLogs.codeForIBMiLog": "Code for IBM i Log", - "helpView.downloadLogs.debugServiceEclipseInstanceLog": "Debug Service Eclipse Instance Log", - "helpView.downloadLogs.debugServiceLog": "Debug Service Log", - "helpView.downloadLogs.downloadTo": "Download To", - "helpView.downloadLogs.failed": "Failed to downloaded logs to {0}", - "helpView.downloadLogs.failedMessage": "Failed to download logs to {0}. {1}", - "helpView.downloadLogs.noConnection": "Please connect to an IBM i", - "helpView.downloadLogs.noLogs": "No logs to download", - "helpView.downloadLogs.open": "Open", - "helpView.downloadLogs.selectLogs": "Select the logs you would like to download", - "helpView.downloadLogs.success": "Successfully downloaded logs to {0}", - "helpView.officialForum": "Open official Forum", - "helpView.reportIssue": "Report an Issue", - "helpView.reviewIssues": "Review Issues", - "iasp": "IASP", - "ifsBrowser.addIFSShortcut.error": "{0} is not a directory.", - "ifsBrowser.addIFSShortcut.errorMessage": "Error creating IFS shortcut! {0}", - "ifsBrowser.addIFSShortcut.prompt": "Path to IFS directory", - "ifsBrowser.changeWorkingDirectory.message": "Working directory changed to {0}.", - "ifsBrowser.changeWorkingDirectory.prompt": "Changing working directory", - "ifsBrowser.copyIFS.errorMessage": "Error copying {0}! {1}", - "ifsBrowser.copyIFS.infoMessage": "{0} was copied to {1}.", - "ifsBrowser.copyIFS.prompt": "Name of new path", - "ifsBrowser.copyToStreamfile.failed": "Error copying member(s) to {0}: {1}", - "ifsBrowser.copyToStreamfile.infoMessage": "{0} member(s) copied to streamfile(s) in {1}.", - "ifsBrowser.createDirectory.errorMessage": "Error creating new directory! {0}", - "ifsBrowser.createDirectory.prompt": "Path of new folder", - "ifsBrowser.createStreamfile.errorMessage": "Error creating new streamfile! {0}", - "ifsBrowser.createStreamfile.infoMessage": "Creating streamfile {0}.", - "ifsBrowser.createStreamfile.prompt": "Name of new streamfile", - "ifsBrowser.deleteIFS.cancelled": "Deletion canceled.", - "ifsBrowser.deleteIFS.default.home.dir": "{0} was the working directory; it is now {1}.", - "ifsBrowser.deleteIFS.deletionPrompt": "Once you delete the directory, it cannot be restored.\nPlease type \"{0}\" to confirm deletion.", - "ifsBrowser.deleteIFS.deletionPrompt2": " (Press \"Escape\" to cancel)", - "ifsBrowser.deleteIFS.dirNotAllowed": "Unable to delete protected directories from the IFS Browser!\n{0}", - "ifsBrowser.deleteIFS.errorMessage": "Error deleting streamfile! {0}", - "ifsBrowser.deleteIFS.multi.warningMessage": "Are you sure you want to delete the {0} selected files?", - "ifsBrowser.deleteIFS.progress": "Deleting {0} element(s)...", - "ifsBrowser.deleteIFS.warningMessage": "Are you sure you want to delete {0}?", - "ifsBrowser.doFindStreamfiles.errorMessage": "Error finding filenames.", - "ifsBrowser.doFindStreamfiles.noResults": "No results found finding filenames with \"{0}\" in {1}.", - "ifsBrowser.doFindStreamfiles.progressMessage": "Finding filenames with \"{0}\" in {1}.", - "ifsBrowser.doFindStreamfiles.title": "Finding", - "ifsBrowser.doSearchInStreamfiles.errorMessage": "Error searching streamfiles.", - "ifsBrowser.doSearchInStreamfiles.noResults": "No results found searching for \"{0}\" in {1}.", - "ifsBrowser.doSearchInStreamfiles.progressMessage": "\"{0}\" in {1}.", - "ifsBrowser.doSearchInStreamfiles.title": "Searching", - "ifsBrowser.downloadStreamfile.complete": "Download complete", - "ifsBrowser.downloadStreamfile.downloading": "Downloading", - "ifsBrowser.downloadStreamfile.errorMessage": "Error downloading file(s): {0}", - "ifsBrowser.getChildren.errorMessage": "Error loading objects.", - "ifsBrowser.handleFileListErrors.errorMessage": "{0} {1} occurred while listing files.", - "ifsBrowser.ifs.find.noFind": "\"findutils\" must be installed on the remote system.", - "ifsBrowser.ifs.find.placeholder": "Enter find term or select one of the previous find terms.", - "ifsBrowser.ifs.find.placeholder2": "Enter find term.", - "ifsBrowser.ifs.find.previousSearches": "Previous find terms", - "ifsBrowser.ifs.find.prompt": "Enter IFS directory to find files in", - "ifsBrowser.ifs.find.title": "Find in directory", - "ifsBrowser.ifs.find.title2": "Find {0}", - "ifsBrowser.moveIFS.errorMessage": "Error renaming/moving {0}! {1}", - "ifsBrowser.moveIFS.moved": "{0} was moved to {1}.", - "ifsBrowser.moveIFS.prompt": "Name of new path", - "ifsBrowser.moveIFS.renamed": "{0} was renamed to {1}.", - "ifsBrowser.removeIFSShortcut.placeHolder": "Select IFS shortcut to remove", - "ifsBrowser.searchIFS.noGrep": "grep must be installed on the remote system for the IFS search.", - "ifsBrowser.searchIFS.placeholder": "Enter search term or select one of the previous search terms.", - "ifsBrowser.searchIFS.placeholder2": "Enter search term.", - "ifsBrowser.searchIFS.previousSearches": "Previous search terms", - "ifsBrowser.searchIFS.prompt": "Enter IFS directory to search", - "ifsBrowser.searchIFS.title": "Search directory", - "ifsBrowser.searchIFS.title2": "Search {0}", - "ifsBrowser.uploadStreamfile.ask": "Do you want to copy or move the selection to {0}?", - "ifsBrowser.uploadStreamfile.copy": "Copy", - "ifsBrowser.uploadStreamfile.copy.failed": "Failed to copy selection to {0}: {1}", - "ifsBrowser.uploadStreamfile.errorMessage": "Error uploading files! {0}", - "ifsBrowser.uploadStreamfile.move": "Move", - "ifsBrowser.uploadStreamfile.move.failed": "Failed to move selection to {0}: {1}", - "ifsBrowser.uploadStreamfile.noFilesSelected": "No files or folders selected for upload.", - "ifsBrowser.uploadStreamfile.process.uploading": "Upload", - "ifsBrowser.uploadStreamfile.process.uploading.directory": "sending {0} directory...", - "ifsBrowser.uploadStreamfile.process.uploading.files": "sending {0} file(s)...", - "ifsBrowser.uploadStreamfile.select.type.files": "Files", - "ifsBrowser.uploadStreamfile.select.type.folders": "Folders", - "ifsBrowser.uploadStreamfile.select.type.title": "What do you want to upload?", - "ifsBrowser.uploadStreamfile.uploadedFiles": "Upload completed.", - "JAVA_HOME": "Java Home", - "java.not.found":"Java version {0} is not installed.", - "job": "Job", - "JOB_NAME_SHORT": "Job name", - "JOB_NUMBER": "Job number", - "JOB_STATUS": "Job status", - "JOB_USER": "Job user", - "jvm.info": "JVM information", - "length": "Length", - "LibraryListView.addToLibraryList.addedLib": "Library {0} was added to the library list.", - "LibraryListView.addToLibraryList.alreadyInList": "Library {0} was already in the library list.", - "LibraryListView.addToLibraryList.invalidLib": "Library {0} does not exist.", - "LibraryListView.addToLibraryList.prompt": "Library to add", - "LibraryListView.addToLibraryList.removedLibs": "The following libraries were removed from the updated library list as they are invalid: {0}", - "LibraryListView.addToLibraryList.tooLong": "Library is too long.", - "LibraryListView.changeCurrentLibrary.alreadyCurrent": "{0} is already current library.", - "LibraryListView.changeCurrentLibrary.changedCurrent": "Changed current library to {0}.", - "LibraryListView.changeCurrentLibrary.currentlyActive": "Currently active", - "LibraryListView.changeCurrentLibrary.placeholder": "Filter or new library to set as current library", - "LibraryListView.changeCurrentLibrary.recentlyUsed": "Recently used", - "LibraryListView.changeCurrentLibrary.title": "Change current library", - "LibraryListView.changeUserLibraryList.prompt": "Changing library list (can use \"*reset\")", - "LibraryListView.changeUserLibraryList.removedLibs": "The following libraries were removed from the updated library list as they are invalid: {0}", - "LibraryListView.cleanupLibraryList.removedLibs": "The following libraries were removed from the updated library list as they are invalid: {0}", - "LibraryListView.cleanupLibraryList.validated": "Library list were validated without any errors.", - "LibraryListView.removeFromLibraryList.removedLib": "Library {0} was removed from the library list.", - "LibraryListView.setCurrentLibrary.failed": "Failed to set {0} as current library: {1}", - "lines": "Lines", - "listening.on.port": "Listening on port", - "listening.on.ports": "Listening on ports", - "loading.debugger.info": "Loading debugger information...", - "local.certificate": "Local certificate", - "local.certificate.not.found": "Local certificate not found", - "local.dont.match.remote": "Local certificate doesn't match remote", - "login.authDecision": "Only provide either the password or a private key - not both.", - "login.authRemoved": "Authentication methods removed for \"{0}\".", - "login.host": "Host or IP Address", - "login.password.label": "Only provide a password if you want to update an existing one or set a new one.", - "login.password.updated": "Password updated and will be used for \"{0}\".", - "login.port": "Port (SSH)", - "login.privateKey.label": "Only provide a private key if you want to update from the existing one or set one.", - "login.privateKey.support": "OpenSSH, RFC4716 and PPK formats are supported.", - "login.privateKey.updated": "Private key updated and will be used for \"{0}\".", - "login.removeAuth": "Remove auth methods", - "login.savePassword": "Save Password", - "login.title.create": "Connect to IBM i", - "login.title.edit": "Login Settings: \"{0}\"", - "MAX_HEAP_SIZE": "Maximum allowed memory", - "member.has.unsaved.changes": "The member has unsaved changes.", - "members": "Members", - "MEMORY_POOL": "Memory pool", - "modified": "Modified", - "No": "No", - "not.connected": "Not connected to an IBM i", - "not.found.in": "Not found in {0}", - "objectBrowser.changeObjectDesc.errorMessage": "Object description must be 50 chars or less.", - "objectBrowser.changeObjectDesc.errorMessage2": "Error changing description for {0}! {1}", - "objectBrowser.changeObjectDesc.infoMessage": "Changed object description for {0} {1}.", - "objectBrowser.changeObjectDesc.prompt": "Change object description for {0}, *BLANK for no description", - "objectBrowser.copyMember.errorMessage": "Cannot copy member to itself!", - "objectBrowser.copyMember.errorMessage2": "Member {0} already exists!", - "objectBrowser.copyMember.errorMessage3": "Error creating member {0}: {1}", - "objectBrowser.copyMember.overwrite": "Are you sure you want overwrite member {0}?", - "objectBrowser.copyMember.progressTitle": "Creating member {0}...", - "objectBrowser.copyMember.prompt": "New path for copy of source member", - "objectBrowser.copyObject.errorMessage": "Invalid path: {0}. Use format LIB/OBJ", - "objectBrowser.copyObject.errorMessage2": "Library must be 10 chars or less.", - "objectBrowser.copyObject.errorMessage3": "Object name must be 10 chars or less.", - "objectBrowser.copyObject.errorMessage4": "Error copying object {0}! {1}", - "objectBrowser.copyObject.infoMessage": "Copied object {0} {1} to {2}.", - "objectBrowser.copyObject.infoMessage2": "Copied object {0} {1} to {2}. Refresh object browser.", - "objectBrowser.copyObject.prompt": "Create duplicate object to new library/object", - "objectBrowser.createFilter": "Create new filter", - "objectBrowser.createLibrary.errorMessage": "Cannot create library \"{0}\": {1}", - "objectBrowser.createLibrary.errorMessage2": "Library name too long.", - "objectBrowser.createLibrary.infoMessage": "Would you like to add the new library to the library list?", - "objectBrowser.createLibrary.prompt": "Name of new library", - "objectBrowser.createMember.errorMessage": "Error creating member {0}: {1}", - "objectBrowser.createMember.progressTitle": "Creating member {0}...", - "objectBrowser.createMember.prompt": "Name of new source member (member.ext)", - "objectBrowser.createSourceFile.errorMessage": "Error creating source file! {0}", - "objectBrowser.createSourceFile.errorMessage2": "Source filename must be 10 chars or less.", - "objectBrowser.createSourceFile.infoMessage": "Creating source file {0}.", - "objectBrowser.createSourceFile.prompt": "Name of new source file", - "objectBrowser.delete.confirm": "Are you sure you want to delete {0}?", - "objectBrowser.delete.multiple.confirm": "Are you sure you want to delete these {0} elements?", - "objectBrowser.delete.progress": "Deleting", - "objectBrowser.deleteMember.errorMessage": "Error deleting member! {0}", - "objectBrowser.deleteObject.errorMessage": "Error deleting object! {0}", - "objectBrowser.doSearchInSourceFile.errorMessage": "Error searching source members: {0}", - "objectBrowser.doSearchInSourceFile.noMembers": "No members to search.", - "objectBrowser.doSearchInSourceFile.notFound": "No results found searching for \"{0}\" in {1}.", - "objectBrowser.doSearchInSourceFile.progressMessage": "Fetching member list for {0}.", - "objectBrowser.doSearchInSourceFile.searchMessage1": "\"{0}\" in {1}.", - "objectBrowser.doSearchInSourceFile.searchMessage2": "This is taking a while because there are {0} members. Searching \"{1}\" in {2} still.", - "objectBrowser.doSearchInSourceFile.searchMessage3": "What's so special about \"{0}\" anyway?", - "objectBrowser.doSearchInSourceFile.searchMessage4": "Still searching \"{0}\" in {1}...", - "objectBrowser.doSearchInSourceFile.searchMessage5": "While you wait, why not make some tea?", - "objectBrowser.doSearchInSourceFile.searchMessage6": "Wow. This really is taking a while. Let's hope you get the result you want.", - "objectBrowser.doSearchInSourceFile.searchMessage7": "Why was six afraid of seven?", - "objectBrowser.doSearchInSourceFile.searchMessage8": "How does one end up with {0} members?", - "objectBrowser.doSearchInSourceFile.searchMessage9": "\"{0}\" in {1}.", - "objectBrowser.doSearchInSourceFile.title": "Searching", - "objectBrowser.downloadMemberContent.cancel": "Members download cancelled.", - "objectBrowser.downloadMemberContent.download.cpytostmf": "copying to streamfiles", - "objectBrowser.downloadMemberContent.download.progress": "Downloading {0} members", - "objectBrowser.downloadMemberContent.download.streamfiles": "getting streamfiles", - "objectBrowser.downloadMemberContent.errorMessage": "Error downloading member(s)! {0}", - "objectBrowser.downloadMemberContent.infoMessage": "Members download complete.", - "objectBrowser.moveObject.errorMessage": "Object name must be 10 chars or less.", - "objectBrowser.moveObject.errorMessage2": "Error moving object {0}! {1}", - "objectBrowser.moveObject.infoMessage": "Moved object {0} {1} to {2}.", - "objectBrowser.moveObject.infoMessage2": "Moved object {0} {1} to {2}. Refresh object browser.", - "objectBrowser.moveObject.progress": "Moving object {0} {1} to {2}...", - "objectBrowser.moveObject.prompt": "Move object", - "objectBrowser.renameMember.errorMessage": "Error renaming member! {0}", - "objectBrowser.renameMember.invalid.input": "New member name must be different from it's current name", - "objectBrowser.renameMember.prompt": "Rename {0}", - "objectBrowser.renameObject.errorMessage": "Object name must be 10 chars or less.", - "objectBrowser.renameObject.errorMessage2": "Error renaming object {0}! {1}", - "objectBrowser.renameObject.infoMessage": "Renamed object {0} {1} to {2}.", - "objectBrowser.renameObject.progress": "Renaming object {0} {1} to {2}...", - "objectBrowser.renameObject.prompt": "Rename object", - "objectBrowser.searchSourceFile.aspText": "(in ASP {0})", - "objectBrowser.searchSourceFile.errorMessage": "Cannot search listings using *ALL.", - "objectBrowser.searchSourceFile.invalidForm": "Please enter value in form LIB/SPF/member.ext", - "objectBrowser.searchSourceFile.placeholder": "Enter search term or select one of the previous search terms.", - "objectBrowser.searchSourceFile.placeholder2": "Enter search term.", - "objectBrowser.searchSourceFile.previousSearches": "Previous search terms", - "objectBrowser.searchSourceFile.prompt": "Enter LIB/SPF/member.ext to search (member.ext is optional and can contain wildcards)", - "objectBrowser.searchSourceFile.title": "Search source file", - "objectBrowser.searchSourceFile.title2": "Search {0} {1}", - "objectBrowser.updateMemberText.errorMessage": "Error changing member description! {0}", - "objectBrowser.updateMemberText.prompt": "Change member description for {0}, *BLANK for no description", - "objectBrowser.uploadAndReplaceMemberAsFile.errorMessage": "Error uploading content to member! {0}", - "objectBrowser.uploadAndReplaceMemberAsFile.infoMessage": "Member was uploaded.", - "offline": "Offline", - "online": "Online", - "open": "Open", - "open.service.configuration": "Open configuration", - "overview": "Overview", - "overwrite": "Overwrite", - "overwrite_all": "Overwrite all", - "owner": "Owner", - "password": "Password", - "privateKey": "Private Key", - "ProfilesView.deleteConnectionProfile.warningMessage": "Are you sure you want to delete the \"{0}\" profile?", - "ProfilesView.loadCommandProfile.errorMessage": "Failed to get library list from command: {0}", - "ProfilesView.loadCommandProfile.infoMessage": "Switched to profile \"{0}\".", - "ProfilesView.loadCommandProfile.warningMessage": "Failed to get library list from command. Feature not installed.", - "ProfilesView.loadConnectionProfile.infoMessage": "Switched to profile \"{0}\".", - "ProfilesView.saveConnectionProfile.infoMessage": "Saved current settings to profile \"{0}\".", - "ProfilesView.saveConnectionProfile.prompt": "Name of profile", - "ProfilesView.setToDefault.detail": "This will reset the User Library List, working directory and Custom Variables back to the defaults.", - "ProfilesView.setToDefault.infoMessage": "Reset to default", - "remote.certificate.not.found": "Remote certificate not found", - "remote.certificate.not.found.detail": "{0} not found under {1}", - "restart": "Restart", - "Retry": "Retry", - "sandbox.alreadyConnected": "This Visual Studio Code instance is already connected to a server.", - "sandbox.connected.modal.detail": "You are using this system at your own risk. Do not share any sensitive or private information.", - "sandbox.connected.modal.title": "Thanks for trying the Code for IBM i Sandbox!", - "sandbox.failedToConnect.text": "Failed to connect to {0} as {1}", - "sandbox.failedToConnect.title": "Failed to connect", - "sandbox.input.password.prompt": "Enter password for {0}@{1}", - "sandbox.input.password.title": "Password for server", - "sandbox.input.user.prompt": "Enter username for {0}", - "sandbox.input.user.title": "User for server", - "sandbox.noconnection.modal.detail": "Sorry, but the sandbox is offline right now. Try again another time.", - "sandbox.noconnection.modal.title": "Oh no! The sandbox is down.", - "sandbox.noPassword": "Connection to {0} ended as no password was provided.", - "save": "Save", - "searchView.find.message": "{0} file(s) named '{1}'", - "searchView.search.message": "{0} file(s) contain(s) '{1}'", - "service.certificate.exists": "Remote service certificate exists", - "shortcut": "shortcut", - "size": "Size", - "skip": "Skip", - "skip_all": "Skip all", - "start": "Start", - "START_TIME": "Start time", - "start.debug.server.task": "Starting debug server...", - "start.debug.service.failed": "Failed to start debug service: {0}", - "start.debug.service.succeeded": "Debug service started.", - "start.debug.service.task": "Starting debug service...", - "status": "Status", - "stop": "Stop", - "stop.debug.server.task": "Stopping debug server...", - "stop.debug.service.failed": "Failed to stop debug service: {0}", - "stop.debug.service.succeeded": "Debug service stopped.", - "stop.debug.service.task": "Stopping debug service...", - "stored": "stored", - "strdbgsvr.failed": "Failed to start debug server: {0}", - "strdbgsvr.succeeded": "Debug server started.", - "streamfile": "streamfile", - "SUBSYSTEM": "Subsystem", - "text": "Text", - "type": "Type", - "USER_DIRECTORY": "User directory", - "username": "Username", - "Yes": "Yes", - "debug.service.config.incomplete": "Incomplete configuration", - "debug.service.config.incomplete.detail": "Certificate needs to be regenerated" -} \ No newline at end of file diff --git a/src/locale/ids/fr.json b/src/locale/ids/fr.json deleted file mode 100644 index bc59252ba..000000000 --- a/src/locale/ids/fr.json +++ /dev/null @@ -1,429 +0,0 @@ -{ - "actions.BASENAME": "Nom du fichier avec son extension", - "actions.BRANCH": "Branche Git en cours", - "actions.BRANCHLIB": "Bibliothèque de la branche, basée sur la branche en cours", - "actions.BUILDLIB": "Voir &CURLIB", - "actions.CURLIB": "Bibliothèque en cours, modifiable depuis la Liste des Bibliothèques", - "actions.duplicate.select": "Sélectionnez l'action à dupliquer", - "actions.EXT": "Extension du fichier", - "actions.EXTL": "Extension du fichier en minuscule", - "actions.FILEDIR": "Répertoire du fichier sur le système distant", - "actions.FULLPATH": "Chemin absolu du fichier sur le système distant", - "actions.HOST": "Nom d'hôte ou adresse IP de la connexion", - "actions.LIBLC": "Liste des bilbiothèques, séparée par des virgules", - "actions.LIBLS": "Liste des bilbiothèques, séparée par des espaces", - "actions.LIBRARY": "Nom de la bibliothèque contenant l'objet (&LIBRARYL pour le nom en minuscule)", - "actions.mainMenu.createOrMaintain": "Créez ou éditez des Actions. Les Actions sont groupées par type.", - "actions.mainMenu.newAction": "Créer Action", - "actions.mainMenu.workWithActions": "Maintenance des Actions", - "actions.member.EXT": "Extension du membre source (&EXTL pour le nom en minuscule)", - "actions.NAME": "Nom de l'objet (&NAMEL pour le nom en minuscule)", - "actions.NAMEL": "Nom de l'objet en minuscule", - "actions.object.EXT": "Extension/attribut de l'objet (&EXTL pour le nom en minuscule)", - "actions.object.TYPE": "Type de l'objet (&TYPEL pour le nom en minuscule)", - "actions.OPENLIB": "Nom de la bibliothèque contenant le membre source (&OPENLIBL pour le nom en minuscule)", - "actions.OPENMBR": "Nom du membre source (&OPENMBRL pour le nom en minuscule)", - "actions.OPENSPF": "Nom du fichier source contenant le membre source (&OPENSPFL pour le nom en minuscule)", - "actions.PARENT": "Nom du répertoire parent du fichier", - "actions.RELATIVEPATH": "Chemin relatif du fichier de flux à partir du répertoire de travail ou de l'espace de travail", - "actions.streamfile.EXT": "Extension du fichier (&EXTL pour le nom en minuscule)", - "actions.streamfile.NAME": "Nom du fichier (&NAMEL pour le nom en minuscule)", - "actions.USERNAME": "Nom d'utilisateur de la connexion", - "actions.workAction.command": "Commande(s) à exécuter", - "actions.workAction.command.description": "Les variables ci-dessous sont disponibles en fonction du Type sélectionné ci-après. Vous pouvez définir plusieurs commande; une par ligne. Chaque commande est exécutée dans son propre Job et n'a pas d'état.", - "actions.workAction.create.title": "Créer une action", - "actions.workAction.delete.confirm": "Êtes-vous sûr de vouloir supprimer l'action \"{0}\"?", - "actions.workAction.duplicate.title": "Duplication de l'action \"{0}\"", - "actions.workAction.edit.title": "Édition de l'action \"{0}\"", - "actions.workAction.environment": "Environnement", - "actions.workAction.environment.description": "Environnement d'exécution des commandes de l'action.", - "actions.workAction.environment.ile": "ILE", - "actions.workAction.environment.ile.description": "Exécution en commande ILE", - "actions.workAction.environment.pase": "PASE", - "actions.workAction.environment.pase.description": "Exécution via l'environnement PASE", - "actions.workAction.environment.qsh": "QShell", - "actions.workAction.environment.qsh.description": "Exécution via QShell", - "actions.workAction.extensions": "Extensions", - "actions.workAction.extensions.description": "Liste d'extensions de membre/fichier ou de type/attribut d'objet, séparée par des virgules.", - "actions.workAction.name": "Nom de l'action", - "actions.workAction.refresh": "Rafraîchissement", - "actions.workAction.refresh.browser": "Navigateur", - "actions.workAction.refresh.browser.description": "Le navigateur est entièrement rafraîchi", - "actions.workAction.refresh.description": "Le niveau du navigateur devant être rafraîchi une fois l\"action exécutée", - "actions.workAction.refresh.filter": "Filtre", - "actions.workAction.refresh.filter.description": "Le filtre parent est rafraîchi", - "actions.workAction.refresh.no": "Aucun", - "actions.workAction.refresh.no.description": "Pas de rafraîchissement", - "actions.workAction.refresh.parent": "Parent", - "actions.workAction.refresh.parent.description": "Le conteneur parent est rafraîchi", - "actions.workAction.runOnProtected": "Exécuter en mode protégé/lecture seule", - "actions.workAction.runOnProtected.description": "Autorise l'exécution de cette action sur des cibles protégés ou en lecture seule", - "actions.workAction.types": "Type", - "actions.workAction.types.description": "Les types de fichier auxquels s'appliquent l'action.", - "actions.workAction.types.file": "Fichier Local (Workspace)", - "actions.workAction.types.file.description": "Fichiers locaux du Workspace VS Code", - "actions.workAction.types.member": "Membre", - "actions.workAction.types.member.description": "Membres source du système de fichier QSYS", - "actions.workAction.types.object": "Objet", - "actions.workAction.types.object.description": "Objets du système de fichier QSYS", - "actions.workAction.types.streamfile": "Fichier", - "actions.workAction.types.streamfile.description": "Fichier stocké sur l'IFS", - "actions.WORKDIR": "Répertoire de travail actuel, modifiable dans le navigateur IFS", - "active.job": "Job actif", - "ask.overwrite": "{0} existe déjà.\nVoulez-vous le remplacer?", - "attribute": "Attribut", - "AUTHORIZATION_NAME": "Utilisateur en cours", - "cancel": "Annuler", - "Cancel": "Annuler", - "CCSID": "CCSID", - "certificates.match": "Certif. local correspond au certif. distant", - "changed": "Modification", - "clearedList": "Liste effacée.", - "clearList": "$(trash) Effacer liste", - "compare.active.file": "Compare with Active File", - "compare.no.file": "No file is open or selected", - "compare.prompt": "Enter the path to compare selected with", - "compare.title": "Compare with", - "connectionBrowser.connectTo.error": "Utilisez l'Explorateur de Serveur pour sélectionner le serveur auquel se connecter.", - "connectionBrowser.connectTo.lastConnection": "Dernière connexion", - "connectionBrowser.connectTo.lastUsed": "Dernière utilisation: {0}", - "connectionBrowser.connectTo.title": "Dernières connexions IBM i", - "connectionBrowser.copyConnection.already.exists": "La connexion \"{0}\" existe déjà", - "connectionBrowser.copyConnection.placeholder": "Nouveau nom de connexion", - "connectionBrowser.copyConnection.prompt": "Copier la connexion \"{0}\"", - "connectionBrowser.copyConnection.select.command.profiles": "Profiles de commande", - "connectionBrowser.copyConnection.select.connection.profiles": "Profile de connection", - "connectionBrowser.copyConnection.select.custom.variables": "Variables personnalisées", - "connectionBrowser.copyConnection.select.home.directory": "Répertoire home", - "connectionBrowser.copyConnection.select.ifs.shortcuts": "Raccourcis IFS", - "connectionBrowser.copyConnection.select.library.list": "Liste de bibliothèques", - "connectionBrowser.copyConnection.select.object.filters": "Filtres d'objets", - "connectionBrowser.copyConnection.select.settings": "Sélectionner les paramètres à copier de \"{0}\" vers \"{1}\"", - "connectionBrowser.deleteConnection.multiple.warning": "Êtes vous sûr de vouloir supprimer ces {0} connexions?", - "connectionBrowser.deleteConnection.warning": "Êtes vous sûr de vouloir supprimer la connexion \"{0}\"?", - "connectionBrowser.renameConnection.alreadyExists": "La connexion \"{0}\" existe déjà.", - "connectionBrowser.renameConnection.error": "Erreur lors du renommage de la connexion \"{0}\"! {1}", - "connectionBrowser.renameConnection.invalid.input": "Le nouveau nom de la connexion doit être différent de son nom actuel", - "connectionBrowser.renameConnection.noConnectionFound": "Aucune connexion nommée \"{0}\" n' a été trouvée", - "connectionBrowser.renameConnection.noConnParmsFound": "Aucun paramètre pour la connexion \"{0}\" n'a été trouvé", - "connectionBrowser.renameConnection.prompt": "Renommer la connexion \"{0}\"", - "connectionBrowser.ServerItem.title": "Se Connecter", - "connectionBrowser.ServerItem.tooltip": " (précédente connexion)", - "Continue": "Continue", - "created": "Création", - "created_by": "Créé par", - "current": "actuelle", - "CURRENT_HEAP_SIZE": "Mémoire utilisée", - "currentLibrary": "(bibliothèque en cours)", - "debug.server": "Serveur de débogage", - "debug.service": "Service de débogage", - "debug.service.certificate": "Certificat du service de débogage", - "debug.service.submit.options": "Options de soumission du Service de Debug", - "debug.service.submit.options.prompt": "Paramètres valides de SBMJOB", - "debugger.status": "Status du débogueur {0}", - "delete": "Supprimer", - "detail.reading.error": "Erreur de lecture du fichier détail du service de débogage {0}: {1}", - "directory": "Répertoire", - "directory.unsaved.changes": "Le répertoire a des fichiers ouverts non sauvegardés.", - "discard.changes": "Vos modifications vont être perdues", - "download.certificate": "Télécharger le certificat", - "duplicate": "Dupliquer", - "enddbgsvr.failed": "Échec de l\"arrêt du serveur de débogage: {0}", - "enddbgsvr.succeeded": "Serveur de débogage arrêté.", - "error": "erreur", - "errors": "erreurs", - "file.path.not.parsed": "Le chemin du fichier n'a pas pu être analysé.", - "file.unsaved.changes": "Le fichier a des changements non sauvegardés.", - "generate.certificate": "Generer le certificat du service", - "helpView.getStarted": "Pour commencer", - "helpView.downloadLogs": "Télécharger les logs", - "helpView.downloadLogs.gatheringLogs": "Rassemblement des logs...", - "helpView.downloadLogs.codeForIBMiLog": "Log de Code for IBM i", - "helpView.downloadLogs.debugServiceEclipseInstanceLog": "Log de l'instance Eclipse du Debug Service", - "helpView.downloadLogs.debugServiceLog": "Log du Debug Service", - "helpView.downloadLogs.downloadTo": "Télécharger les logs", - "helpView.downloadLogs.failed": "Échec du téléchargement des logs vers {0}", - "helpView.downloadLogs.failedMessage": "Failed to download logs to {0}. {1}", - "helpView.downloadLogs.noConnection": "Connection requise à un IBM i", - "helpView.downloadLogs.noLogs": "Aucun log disponible au téléchargement", - "helpView.downloadLogs.open": "Ouvrir", - "helpView.downloadLogs.selectLogs": "Sélectionner les logs à télécharger", - "helpView.downloadLogs.success": "Logs téléchargés avec succès vers {0}", - "helpView.officialForum": "Forum officiel", - "helpView.reportIssue": "Déclarer un incident", - "helpView.reviewIssues": "Voir les incidents", - "iasp": "IASP", - "ifsBrowser.addIFSShortcut.error": "{0} n'est pas un répertoire.", - "ifsBrowser.addIFSShortcut.errorMessage": "Erreur lors de la création du raccourci IFS! {0}", - "ifsBrowser.addIFSShortcut.prompt": "Chemin du répertoire IFS", - "ifsBrowser.changeWorkingDirectory.message": "Répertoire courant changé pour {0}.", - "ifsBrowser.changeWorkingDirectory.prompt": "Changer le répertoire courant", - "ifsBrowser.copyIFS.errorMessage": "Erreur lors de la copie de {0}! {1}", - "ifsBrowser.copyIFS.infoMessage": "{0} a été copié vers {1}.", - "ifsBrowser.copyIFS.prompt": "Nouveau chemin", - "ifsBrowser.copyToStreamfile.failed": "Error copying member(s) to {0}: {1}", - "ifsBrowser.copyToStreamfile.infoMessage": "{0} member(s) copied to streamfile(s) in {1}.", - "ifsBrowser.createDirectory.errorMessage": "Erreur à la création du répertoire! {0}", - "ifsBrowser.createDirectory.prompt": "Chemin du nouveau répertoire", - "ifsBrowser.createStreamfile.errorMessage": "Erreur lors de la création du fichier! {0}", - "ifsBrowser.createStreamfile.infoMessage": "Création du fichier {0}.", - "ifsBrowser.createStreamfile.prompt": "Nom du nouveau fichier", - "ifsBrowser.deleteIFS.cancelled": "Suppression annulée.", - "ifsBrowser.deleteIFS.default.home.dir": "{0} était le répertoire de travail; c\"est désormais {1}.", - "ifsBrowser.deleteIFS.deletionPrompt": "La suppression du répertoire est irréversible!\nEntrez \"{0}\" pour confirmer la suppression.", - "ifsBrowser.deleteIFS.deletionPrompt2": " (Appuyer sur \"Escape\" pour annuler)", - "ifsBrowser.deleteIFS.dirNotAllowed": "Impossible de supprimer les répertoires protégés depuis l'Explorateur IFS!\n{0}", - "ifsBrowser.deleteIFS.errorMessage": "Erreur lors de la suppression du fichier! {0}", - "ifsBrowser.deleteIFS.multi.warningMessage": "Êtes-vous sûr de vouloir suprimer les {0} fichiers sélectionnés?", - "ifsBrowser.deleteIFS.progress": "Suppression de {0} élément(s)...", - "ifsBrowser.deleteIFS.warningMessage": "Êtes-vous sûr de vouloir suprimer {0}?", - "ifsBrowser.doFindStreamfiles.errorMessage": "Erreur lors de la recherche de fichiers.", - "ifsBrowser.doFindStreamfiles.noResults": "Aucun fichier nommé \"{0}\" n'a été trouvé dans {1}.", - "ifsBrowser.doFindStreamfiles.progressMessage": "Recherche de fichiers nommés \"{0}\" dans {1}.", - "ifsBrowser.doFindStreamfiles.title": "Rechercher", - "ifsBrowser.doSearchInStreamfiles.errorMessage": "Erreur lors de la recherche de fichiers.", - "ifsBrowser.doSearchInStreamfiles.noResults": "Aucun résultat trouvé pour \"{0}\" dans {1}.", - "ifsBrowser.doSearchInStreamfiles.progressMessage": "\"{0}\" dans {1}.", - "ifsBrowser.doSearchInStreamfiles.title": "Recherche", - "ifsBrowser.downloadStreamfile.complete": "Téléchargement terminé", - "ifsBrowser.downloadStreamfile.downloading": "Téléchargement", - "ifsBrowser.downloadStreamfile.errorMessage": "Erreur lors du téléchargement: {0}", - "ifsBrowser.getChildren.errorMessage": "Erreur lors du chargement des objets.", - "ifsBrowser.handleFileListErrors.errorMessage": "{0} {1} s'est produit lors du chargement des fichiers.", - "ifsBrowser.ifs.find.noFind": "\"findutils\" doit être installé sur le système distant.", - "ifsBrowser.ifs.find.placeholder": "Entrez le nom à rechercher ou sélectionnez une précédente recherche.", - "ifsBrowser.ifs.find.placeholder2": "Entrez le nom à rechercher.", - "ifsBrowser.ifs.find.previousSearches": "Recherches précédentes", - "ifsBrowser.ifs.find.prompt": "Entrez le répertoire IFS où rechercher les fichiers", - "ifsBrowser.ifs.find.title": "Rechercher dans un répertoire", - "ifsBrowser.ifs.find.title2": "Rechercher {0}", - "ifsBrowser.moveIFS.errorMessage": "Erreur lors du renommage/déplacement de {0}! {1}", - "ifsBrowser.moveIFS.moved": "{0} a été déplacé vers {1}.", - "ifsBrowser.moveIFS.prompt": "Nouveau chemin", - "ifsBrowser.moveIFS.renamed": "{0} a été renommé {1}.", - "ifsBrowser.removeIFSShortcut.placeHolder": "Sélection du raccourci IFS à supprimer", - "ifsBrowser.searchIFS.noGrep": "grep doit être installé sur le système distant pour la recherche sur l'IFS.", - "ifsBrowser.searchIFS.placeholder": "Entrez un mot à chercher ou choisissez une recherche précédente.", - "ifsBrowser.searchIFS.placeholder2": "Entrez le mot à chercher.", - "ifsBrowser.searchIFS.previousSearches": "Recherches précédentes", - "ifsBrowser.searchIFS.prompt": "Entrez le répertoire IFS où chercher", - "ifsBrowser.searchIFS.title": "Chercher dans un répertoire", - "ifsBrowser.searchIFS.title2": "Chercher dans {0}.", - "ifsBrowser.uploadStreamfile.ask": "Voulez-vous déplacer ou copier la sélection vers {0}?", - "ifsBrowser.uploadStreamfile.copy": "Copier", - "ifsBrowser.uploadStreamfile.copy.failed": "Échec de la copie de la sélection vers {0}: {1}", - "ifsBrowser.uploadStreamfile.errorMessage": "Erreur lors de l'envoi des fichiers! {0}", - "ifsBrowser.uploadStreamfile.move": "Déplacer", - "ifsBrowser.uploadStreamfile.move.failed": "Échec du déplacement de la sélection vers {0}: {1}", - "ifsBrowser.uploadStreamfile.noFilesSelected": "Aucun fichier ou dossier sélectionné pour l'envoi.", - "ifsBrowser.uploadStreamfile.process.uploading": "Téléchargement", - "ifsBrowser.uploadStreamfile.process.uploading.directory": "envoi du répertoire {0}...", - "ifsBrowser.uploadStreamfile.process.uploading.files": "envoi de {0} fichier(s)...", - "ifsBrowser.uploadStreamfile.select.type.files": "Fichiers", - "ifsBrowser.uploadStreamfile.select.type.folders": "Dossiers", - "ifsBrowser.uploadStreamfile.select.type.title": "Que souhaitez-vous envoyer?", - "ifsBrowser.uploadStreamfile.uploadedFiles": "Envoi terminée.", - "JAVA_HOME": "Java Home", - "java.not.found":"Java version {0} n'est pas installé.", - "job": "Job", - "JOB_NAME_SHORT": "Nom du job", - "JOB_NUMBER": "Numéro du job", - "JOB_STATUS": "Status du job", - "JOB_USER": "Utilisateur", - "jvm.info": "Information JVM", - "length": "Longueur", - "LibraryListView.addToLibraryList.addedLib": "La bibliohtèque {0} a été ajoutée à la liste des bibliothèques.", - "LibraryListView.addToLibraryList.alreadyInList": "La bibliohtèque {0} est déjà dans la liste des bibliothèques.", - "LibraryListView.addToLibraryList.invalidLib": "La bibliohtèque {0} n'existe pas.", - "LibraryListView.addToLibraryList.prompt": "Bibliothèque à ajouter", - "LibraryListView.addToLibraryList.removedLibs": "Les bibliothèques suivantes ont été retirées de la liste des bibliothèques mise à jour car elles sont invalides: {0}", - "LibraryListView.addToLibraryList.tooLong": "Le nom de bibliothèque est trop long.", - "LibraryListView.changeCurrentLibrary.alreadyCurrent": "{0} est déjà la bibliothèque en cours.", - "LibraryListView.changeCurrentLibrary.changedCurrent": "La bibliothèque en cours est maintenant {0}.", - "LibraryListView.changeCurrentLibrary.currentlyActive": "Active", - "LibraryListView.changeCurrentLibrary.placeholder": "Filtre ou nouvelle bibliothèque à utiliser comme bibliothèque en cours", - "LibraryListView.changeCurrentLibrary.recentlyUsed": "Utilisé récemment", - "LibraryListView.changeCurrentLibrary.title": "Changer la bibliothèque en cours", - "LibraryListView.changeUserLibraryList.prompt": "Changement de la liste des bibliothèques (valeur spécial: \"*reset\")", - "LibraryListView.changeUserLibraryList.removedLibs": "Les bibliothèques suivantes ont été retirées de la liste des bibliothèques mise à jour car elles sont invalides: {0}", - "LibraryListView.cleanupLibraryList.removedLibs": "Les bibliothèques suivantes ont été retirées de la liste des bibliothèques mise à jour car elles sont invalides: {0}", - "LibraryListView.cleanupLibraryList.validated": "La liste des bibliothèques a été validée avec succès.", - "LibraryListView.removeFromLibraryList.removedLib": "La bibliohtèque {0} a été retirée de la liste des bibliothèques.", - "LibraryListView.setCurrentLibrary.failed": "La bibliothèque {0} ne peut pas devenir la bibliothèque en cours: {1}", - "lines": "Lignes", - "listening.on.port": "Écoute sur le port", - "listening.on.ports": "Écoute sur les ports", - "loading.debugger.info": "Chargement du status du débogueur...", - "local.certificate": "Certificat local", - "local.certificate.not.found": "Le certificat local n\"existe pas", - "local.dont.match.remote": "Le certificat local ne correspond pas à celui du service", - "login.authDecision": "Renseignez soit le mot de passe, soit la clé privée - pas les deux.", - "login.authRemoved": "Authentification supprimée pour \"{0}\".", - "login.host": "Nom d'Hôte ou Adresse IP", - "login.password.label": "Renseignez un mot de passe seulement si vous souhaitez le changer.", - "login.password.updated": "Mot de passe mis à jour et utilisé pour se connecter à \"{0}\".", - "login.port": "Port (SSH)", - "login.privateKey.label": "Sélectionnez une clé privée seulement si vous souhaitez en changer.", - "login.privateKey.support": "Les formats OpenSSH, RFC4716 et PPK sont supportés.", - "login.privateKey.updated": "Clé privée mise à jour et utilisée pour se connecter à \"{0}\".", - "login.removeAuth": "Supprimer l'authentification", - "login.savePassword": "Sauvegarder Mot de passe", - "login.title.create": "Connect to IBM i", - "login.title.edit": "paramètres d'authentification: \"{0}\"", - "MAX_HEAP_SIZE": "Mémoire maximum allouée", - "member.has.unsaved.changes": "Le membre a des changements non sauvegardés.", - "members": "Membres", - "MEMORY_POOL": "Pool mémoire", - "modified": "Modifié", - "No": "Non", - "not.connected": "Non connecté à un IBM i", - "not.found.in": "Non trouvé dans {0}", - "objectBrowser.changeObjectDesc.errorMessage": "La description de l'objet doit faire au maximum 50 caractères de long.", - "objectBrowser.changeObjectDesc.errorMessage2": "Erreur lors du changement de la description de {0}! {1}", - "objectBrowser.changeObjectDesc.infoMessage": "La description de l'objet {0} {1} a été changée.", - "objectBrowser.changeObjectDesc.prompt": "Changer la description de l'objet pour {0}, *BLANK pour effacer la description", - "objectBrowser.copyMember.errorMessage": "Impossible de copier un membre sur lui-même!", - "objectBrowser.copyMember.errorMessage2": "Le membre {0} existe déjà!", - "objectBrowser.copyMember.errorMessage3": "Erreur lors de la création du membre {0}: {1}", - "objectBrowser.copyMember.overwrite": "Êtes-vous sûr de vouloir écraser le membre {0}?", - "objectBrowser.copyMember.progressTitle": "Création du membre {0}...", - "objectBrowser.copyMember.prompt": "Chemin pour la copie du membre source", - "objectBrowser.copyObject.errorMessage": "Chemin invalide: {0}. Utilisez le format LIB/OBJ", - "objectBrowser.copyObject.errorMessage2": "Le nom de la bibliothèque doit faire au maximum 10 caractères de long.", - "objectBrowser.copyObject.errorMessage3": "Le nom de l'objet doit faire au maximum 10 caractères de long.", - "objectBrowser.copyObject.errorMessage4": "Erreur lors de la copie de l'objet {0}! {1}", - "objectBrowser.copyObject.infoMessage": "Objet {0} {1} copié vers {2}.", - "objectBrowser.copyObject.infoMessage2": "Objet {0} {1} copié vers {2}. Rafraîchissement de l'explorateur d'objet.", - "objectBrowser.copyObject.prompt": "Duplication de l'objet vers une nouvelle bibliothèque/objet", - "objectBrowser.createFilter": "Créer un filtre", - "objectBrowser.createLibrary.errorMessage": "Impossible de créer la bibliothèque \"{0}\": {1}", - "objectBrowser.createLibrary.errorMessage2": "Nom de bibliothèque trop long.", - "objectBrowser.createLibrary.infoMessage": "Voulez-vous ajouter la nouvelle bibliothèque à la liste des bibliothèques?", - "objectBrowser.createLibrary.prompt": "Nom de la nouvelle bibliothèque", - "objectBrowser.createMember.errorMessage": "Erreur lors de la creation du membre {0}: {1}", - "objectBrowser.createMember.progressTitle": "Creation du membre {0}...", - "objectBrowser.createMember.prompt": "Nom du nouveau membre source (membre.ext)", - "objectBrowser.createSourceFile.errorMessage": "Erreur lors de la création du fichier source! {0}", - "objectBrowser.createSourceFile.errorMessage2": "Le nom du fichier source doit faire au maximum 10 caractères de long.", - "objectBrowser.createSourceFile.infoMessage": "Création du fichier source {0}.", - "objectBrowser.createSourceFile.prompt": "Nom du nouveau fichier source", - "objectBrowser.delete.confirm": "Êtes-vous sûr de vouloir supprimer {0}?", - "objectBrowser.delete.multiple.confirm": "Êtes-vous sûr de vouloir supprimer les {0} éléments sélectionnés?", - "objectBrowser.delete.progress": "Suppression", - "objectBrowser.deleteMember.errorMessage": "Erreur lors de la suppression du membre! {0}", - "objectBrowser.deleteObject.errorMessage": "Erreur lors de la suppression de l'objet! {0}", - "objectBrowser.doSearchInSourceFile.errorMessage": "Erreur lors de la recherche de membres source: {0}", - "objectBrowser.doSearchInSourceFile.noMembers": "Aucun membre à rechercher.", - "objectBrowser.doSearchInSourceFile.notFound": "Aucun résultat trouvé pour \"{0}\" dans {1}.", - "objectBrowser.doSearchInSourceFile.progressMessage": "Récupération de la liste des membres de {0}.", - "objectBrowser.doSearchInSourceFile.searchMessage1": "\"{0}\" dans {1}.", - "objectBrowser.doSearchInSourceFile.searchMessage2": "La recherche prend du temps car il y a {0} membres...mais elle continue!", - "objectBrowser.doSearchInSourceFile.searchMessage3": "Qu'est ce que \"{0}\" a de si spécial en fait?!", - "objectBrowser.doSearchInSourceFile.searchMessage4": "Les fouilles pour trouver \"{0}\" dans {1} continuent...⛏", - "objectBrowser.doSearchInSourceFile.searchMessage5": "Sinon ça va vous? Et si on se faisait un thé? 🍵", - "objectBrowser.doSearchInSourceFile.searchMessage6": "Bon...c'est vraiment long là! Espérons que vous allez trouver ce que vous cherchez! 🤞🏻", - "objectBrowser.doSearchInSourceFile.searchMessage7": "Qu'est ce qui est jaune et qui attend?", - "objectBrowser.doSearchInSourceFile.searchMessage8": "Mais...pourquoi il y a {0} membres dans ce fichier en fait?", - "objectBrowser.doSearchInSourceFile.searchMessage9": "\"{0}\" in {1}.", - "objectBrowser.doSearchInSourceFile.title": "Recherche", - "objectBrowser.downloadMemberContent.cancel": "Téléchargement des membres annulé.", - "objectBrowser.downloadMemberContent.download.cpytostmf": "copie des membres en streamfiles", - "objectBrowser.downloadMemberContent.download.progress": "Téléchargement de {0} membres", - "objectBrowser.downloadMemberContent.download.streamfiles": "récupération des streamfiles", - "objectBrowser.downloadMemberContent.errorMessage": "Erreur lors du téléchargement des membres! {0}", - "objectBrowser.downloadMemberContent.infoMessage": "Téléchargement des membres terminé.", - "objectBrowser.moveObject.errorMessage": "Le nom de l'objet doit faire au maximum 10 caractères de long.", - "objectBrowser.moveObject.errorMessage2": "Erreur lors du déplacement de l'objet {0}! {1}", - "objectBrowser.moveObject.infoMessage": "Objet {0} {1} déplacé vers {2}.", - "objectBrowser.moveObject.infoMessage2": "Objet {0} {1} déplacé vers {2}. Rafraîchissement de l'explorateur d'objet.", - "objectBrowser.moveObject.progress": "Déplacement de l'objet {0} {1} vers {2}...", - "objectBrowser.moveObject.prompt": "Déplacer l'objet", - "objectBrowser.renameMember.errorMessage": "Erreur lors du renommage du membre! {0}", - "objectBrowser.renameMember.invalid.input": "Le nouveau nom du membre doit être différent de l'ancien", - "objectBrowser.renameMember.prompt": "Renommer {0}", - "objectBrowser.renameObject.errorMessage": "Le nom de l'objet doit faire au maximum 10 caractères de long.", - "objectBrowser.renameObject.errorMessage2": "Erreur lors du renommage de l'objet {0}! {1}", - "objectBrowser.renameObject.infoMessage": "Objet {0} {1} renommé {2}.", - "objectBrowser.renameObject.progress": "Renommage de l'objet {0} {1} en {2}...", - "objectBrowser.renameObject.prompt": "Renamer l'objet", - "objectBrowser.searchSourceFile.aspText": "(dans l'ASP {0})", - "objectBrowser.searchSourceFile.errorMessage": "Impossible de rechercher une liste avec *ALL.", - "objectBrowser.searchSourceFile.invalidForm": "Entrez une valeur de la forme LIB/SPF/membre.ext", - "objectBrowser.searchSourceFile.placeholder": "Entrez un mot à chercher ou choisissez une recherche précédente.", - "objectBrowser.searchSourceFile.placeholder2": "Entrez le mot à chercher.", - "objectBrowser.searchSourceFile.previousSearches": "Recherches précédentes", - "objectBrowser.searchSourceFile.prompt": "Entrez LIB/SPF/membre.ext pour chercher (membre.ext est optionnel et peut contenir des caractères génériques)", - "objectBrowser.searchSourceFile.title": "Rechercher dans un fichier source", - "objectBrowser.searchSourceFile.title2": "Rechercher dans {0} {1}", - "objectBrowser.updateMemberText.errorMessage": "Erreur lors de la mise à jour du texte du membre! {0}", - "objectBrowser.updateMemberText.prompt": "Changer la description du membre {0}, *BLANK pour effacer la description", - "objectBrowser.uploadAndReplaceMemberAsFile.errorMessage": "Erreur lors de l'upload du contenu du membre! {0}", - "objectBrowser.uploadAndReplaceMemberAsFile.infoMessage": "Le membre a été uploadé.", - "offline": "Hors ligne", - "online": "En ligne", - "open":"Ouvrir", - "open.service.configuration": "Ouvrir la configuration", - "overview": "Aperçu", - "overwrite": "Écraser", - "overwrite_all": "Écraser tout", - "owner": "Propriétaire", - "password": "Mot de passe", - "privateKey": "Clé privée", - "ProfilesView.deleteConnectionProfile.warningMessage": "Êtes-vous sûr de vouloir supprimer le profil \"{0}\"?", - "ProfilesView.loadCommandProfile.errorMessage": "Échec de la récupération de la liste des bibliothèque depuis la commande: {0}", - "ProfilesView.loadCommandProfile.infoMessage": "Le profil en cours est \"{0}\".", - "ProfilesView.loadCommandProfile.warningMessage": "Échec de la récupération de la liste des bibliothèque depuis la commande. Fonctionnalité non installée.", - "ProfilesView.loadConnectionProfile.infoMessage": "Le profil en cours est \"{0}\".", - "ProfilesView.saveConnectionProfile.infoMessage": "Paramètres actuels sauvés sur le profil \"{0}\".", - "ProfilesView.saveConnectionProfile.prompt": "Nom du profil", - "ProfilesView.setToDefault.detail": "La liste des bibliothèques Utilisateur, le répertoire de travail et les variables personnalisées vont être réinitialisés.", - "ProfilesView.setToDefault.infoMessage": "Réinitialisation", - "remote.certificate.not.found": "Le certificat du service n\"existe pas", - "remote.certificate.not.found.detail": "{0} n\"a pas été trouvé dans {1}", - "restart": "Redémarrer", - "Retry": "Réessayer", - "sandbox.alreadyConnected": "Cette instance de Visual Studio Code est déjà connectée à un serveur.", - "sandbox.connected.modal.detail": "Vous êtes seul responsable de l'utilisation du bas à sable. Ne partagez pas d'informations à caractère sensible ou privé.", - "sandbox.connected.modal.title": "Merci d'essayer le bac à sable Code for IBM i!", - "sandbox.failedToConnect.text": "Échec de la connexion à {0} avec {1}", - "sandbox.failedToConnect.title": "Échec de la connexion", - "sandbox.input.password.prompt": "Entrez le mot de passe pour {0}@{1}", - "sandbox.input.password.title": "Mot de passe", - "sandbox.input.user.prompt": "Entrez le nom d'utilisateur pour {0}", - "sandbox.input.user.title": "Nom d'utilisateur", - "sandbox.noconnection.modal.detail": "Désolé, le bac à sable est est hors-ligne pour le moment. Réessayez plus tard.", - "sandbox.noconnection.modal.title": "Aïe aïe aïe, le bac à sable est en panne!", - "sandbox.noPassword": "Connexion à {0} interrompue car aucun mot de passe n'a été fourni.", - "save": "Enregistrer", - "searchView.find.message":"{0} fichier(s) nommé(s) '{1}'", - "searchView.search.message":"{0} file(s) contenant '{1}'", - "service.certificate.exists": "Certificat du service existe", - "shortcut": "raccourci", - "size": "Taille", - "skip": "Ignorer", - "skip_all": "Ignorer tout", - "start": "Démarrer", - "START_TIME": "Démarré le", - "start.debug.server.task": "Démarrage du serveur de débogage...", - "start.debug.service.failed": "Échec du démarrage du service de débogage: {0}", - "start.debug.service.succeeded": "Service de débogage démarré.", - "start.debug.service.task": "Démarrage du service de débogage...", - "status": "Status", - "stop": "Arrêter", - "stop.debug.server.task": "Arrêt du serveur de débogage...", - "stop.debug.service.failed": "Échec de l\"arrêt du service de débogage: {0}", - "stop.debug.service.succeeded": "Service de débogage arrêté.", - "stop.debug.service.task": "Arrêt du service de débogage...", - "stored": "enregistré", - "strdbgsvr.failed": "Échec du démarrage du serveur de débogage: {0}", - "strdbgsvr.succeeded": "Serveur de débogage démarré.", - "streamfile": "fichier", - "SUBSYSTEM": "Sous-système", - "text": "Texte", - "type": "Type", - "USER_DIRECTORY": "Répertoire utilisateur", - "username": "Utilisateur", - "Yes": "Oui", - "debug.service.config.incomplete": "Incomplete configuration", - "debug.service.config.incomplete.detail": "Certificate needs to be regenerated" -} \ No newline at end of file diff --git a/src/locale/ids/no.json b/src/locale/ids/no.json deleted file mode 100644 index c38a9ca7e..000000000 --- a/src/locale/ids/no.json +++ /dev/null @@ -1,429 +0,0 @@ -{ - "actions.BASENAME": "Navn på filen, inklusive filtypen", - "actions.BRANCH": "Nåværende git-gren", - "actions.BRANCHLIB": "Bibliotek for nåværende Git-gren", - "actions.BUILDLIB": "Det samme som &CURLIB", - "actions.CURLIB": "Aktuelle bibliotek (settes i Library List)", - "actions.duplicate.select": "Velg en handling til kopiering", - "actions.EXT": "Filtypen", - "actions.EXTL": "Filtypen med små bokstaver", - "actions.FILEDIR": "Katalog over filen på fjernsystemet", - "actions.FULLPATH": "Full sti på filen på fjernsystemet", - "actions.HOST": "Host navn eller IP adresse fra gjeldende forbindelse", - "actions.LIBLC": "Bibliotekliste adskilt med komma", - "actions.LIBLS": "Bibliotekliste adskilt med mellomrom", - "actions.LIBRARY": "Biblioteknavn med objektet (&LIBRARYL for små bokstaver)", - "actions.mainMenu.createOrMaintain": "Opprett eller revider handlinger. Handlinger er gruppert etter typen på de berørte filene/objektene.", - "actions.mainMenu.newAction": "Opprett ny handling", - "actions.mainMenu.workWithActions": "Arbeid med handlinger", - "actions.member.EXT": "Type av source member (&EXTL for små bokstaver)", - "actions.NAME": "Navn på objektet (&NAMEL for små bokstaver)", - "actions.NAMEL": "Navn på objektet med små bokstaver", - "actions.object.EXT": "Objektets attributt (&EXTL for små bokstaver)", - "actions.object.TYPE": "Typen av objektet (&TYPEL for små bokstaver)", - "actions.OPENLIB": "Biblioteknavn med source member (&OPENLIBL for små bokstaver)", - "actions.OPENMBR": "Navn på source member (&OPENMBRL for små bokstaver)", - "actions.OPENSPF": "Source fil navn med source member (&OPENSPFL for små bokstaver)", - "actions.PARENT": "Navn på forrige mappe eller source fil", - "actions.RELATIVEPATH": "Relativ sti til streamfilen fra arbeidsbiblioteket eller arbeidsområdet", - "actions.streamfile.EXT": "Filtypen (&EXTL for små bokstaver)", - "actions.streamfile.NAME": "Navn på filen (&NAMEL for små bokstaver)", - "actions.USERNAME": "Brukernavn for forbindelsen", - "actions.workAction.command": "Kommandoer", - "actions.workAction.command.description": "Nedenfor er de tilgjengelige variabler, baseret på objekt typen. Du kan angi forskjellige kommandoer på hver linje. Hver kommando er \"stateless\" og kjører i sin egen jobb.", - "actions.workAction.create.title": " Opprett handling", - "actions.workAction.delete.confirm": "Er du sikker på du vil slette \"{0}\"?", - "actions.workAction.duplicate.title": "Kopier handling \"{0}\"", - "actions.workAction.edit.title": "Revider handling \"{0}\"", - "actions.workAction.environment": "Miljø", - "actions.workAction.environment.description": "Miljø som kommandoen skal kjøres i.", - "actions.workAction.environment.ile": "ILE", - "actions.workAction.environment.ile.description": "Kjøres som ILE kommando", - "actions.workAction.environment.pase": "PASE", - "actions.workAction.environment.pase.description": "Kjøres som kommando i PASE", - "actions.workAction.environment.qsh": "QSHELL", - "actions.workAction.environment.qsh.description": "Kjøres som kommando i QSHELL", - "actions.workAction.extensions": "Typer", - "actions.workAction.extensions.description": "En komma-separeret liste av typer for denne handlingen. Dette kan være en member type, en streamfile filtype, en objekt type eller en objekt attributt.", - "actions.workAction.name": "Handlingsnavn", - "actions.workAction.refresh": "Forny", - "actions.workAction.refresh.browser": "Vindu", - "actions.workAction.refresh.browser.description": "Hele vinduet blir fornyet", - "actions.workAction.refresh.description": "Lister nivået for fornying etter handling er utført.", - "actions.workAction.refresh.filter": "Filter", - "actions.workAction.refresh.filter.description": "Det aktuelle filteret blir fornyet", - "actions.workAction.refresh.no": "Ingen", - "actions.workAction.refresh.no.description": "Ingen fornying", - "actions.workAction.refresh.parent": "Container", - "actions.workAction.refresh.parent.description": "Den aktuelle containeren blir fornyet", - "actions.workAction.runOnProtected": "Kjør på sikret/skrive-beskyttet", - "actions.workAction.runOnProtected.description": "Tillater avvikling av denne handling på sikrede eller skrive-beskyttede mål", - "actions.workAction.types": "Type", - "actions.workAction.types.description": "Typer understøttet av denne handling.", - "actions.workAction.types.file": "Lokal fil (workspace)", - "actions.workAction.types.file.description": "Handlinger for lokale filer i VS Code Workspace.", - "actions.workAction.types.member": "Member", - "actions.workAction.types.member.description": "Source members i QSYS filsystemet", - "actions.workAction.types.object": "Objekt", - "actions.workAction.types.object.description": "Objekter i QSYS filsystemet", - "actions.workAction.types.streamfile": "Streamfile", - "actions.workAction.types.streamfile.description": "Filer i det integrerte filsystemet (IFS)", - "actions.WORKDIR": "Nåværende arbeidsmappe, kan endres i IFS Browser", - "active.job": "Aktive jobber", - "ask.overwrite": "{0} eksisterer allerede.\nVil du erstatte den?", - "attribute": "Attributt", - "AUTHORIZATION_NAME": "Aktuell bruker", - "cancel": "Avbryt", - "Cancel": "Avbryt", - "CCSID": "CCSID", - "certificates.match": "Lokalt sertifikat matcher vertens", - "changed": "Endret", - "clearedList": "Tømt liste.", - "clearList": "$(trash) Tøm liste", - "compare.active.file": "Compare with Active File", - "compare.no.file": "No file is open or selected", - "compare.prompt": "Enter the path to compare selected with", - "compare.title": "Compare with", - "connectionBrowser.connectTo.error": "Bruk Server vinduet til å velge hvilket system som skal kobles til.", - "connectionBrowser.connectTo.lastConnection": "Siste forbindelse", - "connectionBrowser.connectTo.lastUsed": "Sist brukt: {0}", - "connectionBrowser.connectTo.title": "Siste IBM i forbindelse", - "connectionBrowser.copyConnection.already.exists": "Forbindelsen \"{0}\" eksisterer allerede", - "connectionBrowser.copyConnection.placeholder": "Navn på ny forbindelse", - "connectionBrowser.copyConnection.prompt": "Kopier forbindelsen \"{0}\"", - "connectionBrowser.copyConnection.select.command.profiles": "Kommando profiler", - "connectionBrowser.copyConnection.select.connection.profiles": "Forbindelses profiler", - "connectionBrowser.copyConnection.select.custom.variables": "Tilpassede variabler", - "connectionBrowser.copyConnection.select.home.directory": "Aktuell mappe", - "connectionBrowser.copyConnection.select.ifs.shortcuts": "IFS snarveier", - "connectionBrowser.copyConnection.select.library.list": "Bibliotekliste", - "connectionBrowser.copyConnection.select.object.filters": "Objekt filtere", - "connectionBrowser.copyConnection.select.settings": "Velg instillingene det skal kopieres fra \"{0}\" til \"{1}\"", - "connectionBrowser.deleteConnection.multiple.warning": "Er du sikker på å du vil slette disse {0} forbindelsene?", - "connectionBrowser.deleteConnection.warning": "Er du sikker på å du vil slette forbindelsen \"{0}\"?", - "connectionBrowser.renameConnection.alreadyExists": "Forbindelsen \"{0}\" finnes allerede.", - "connectionBrowser.renameConnection.error": "Feil ved omdøping av forbindelsen \"{0}\"! {1}", - "connectionBrowser.renameConnection.invalid.input": "Nytt forbindelses navn må være forskjellig fra nåværende navn", - "connectionBrowser.renameConnection.noConnectionFound": "Ingen forbindelse med navnet \"{0}\" ble funnet", - "connectionBrowser.renameConnection.noConnParmsFound": "Ingen parametre til forbindelsen \"{0}\" ble funnet", - "connectionBrowser.renameConnection.prompt": "Omdøp forbindelsen \"{0}\"", - "connectionBrowser.ServerItem.title": "Forbind", - "connectionBrowser.ServerItem.tooltip": " (forrige forbindelse)", - "Continue": "Fortsett", - "created": " Opprettet", - "created_by": " Opprettet av", - "current": "nåværende", - "CURRENT_HEAP_SIZE": "Nåværende memory", - "currentLibrary": "(nåværende bibliotek)", - "debug.server": "Debug Server", - "debug.service": "Debug Service", - "debug.service.certificate": "Debug Service sertifikat", - "debug.service.submit.options": "Debug Service submit options", - "debug.service.submit.options.prompt": "Gyldige parametere for SBMJOB", - "debugger.status": "Debugger {0} status", - "delete": "Slett", - "detail.reading.error": "Feil ved lesning av debug service detail fil {0}: {1}", - "directory": "mappe", - "directory.unsaved.changes": "The directory has file(s) with unsaved changes.", - "discard.changes": "Dine endringer vil bli slettet", - "download.certificate": "Hent sertifikat", - "duplicate": "Kopier", - "enddbgsvr.failed": "Feil ved stopp av debug server: {0}", - "enddbgsvr.succeeded": "Debug server er stoppet.", - "error": "feil", - "errors": "feil", - "file.path.not.parsed": "Filstien kunne ikke fortolkes.", - "file.unsaved.changes": "Filen har ulagrede endringer.", - "generate.certificate": "Generer service sertifikat", - "helpView.getStarted": "Dokumentasjon", - "helpView.downloadLogs": "Download Logs", - "helpView.downloadLogs.gatheringLogs": "Gathering logs...", - "helpView.downloadLogs.codeForIBMiLog": "Code for IBM i Log", - "helpView.downloadLogs.debugServiceEclipseInstanceLog": "Debug Service Eclipse Instance Log", - "helpView.downloadLogs.debugServiceLog": "Debug Service Log", - "helpView.downloadLogs.downloadTo": "Download To", - "helpView.downloadLogs.failed": "Failed to downloaded logs to {0}", - "helpView.downloadLogs.failedMessage": "Failed to download logs to {0}. {1}", - "helpView.downloadLogs.noConnection": "Please connect to an IBM i", - "helpView.downloadLogs.noLogs": "No logs to download", - "helpView.downloadLogs.open": "Open", - "helpView.downloadLogs.selectLogs": "Select the logs you would like to download", - "helpView.downloadLogs.success": "Successfully downloaded logs to {0}", - "helpView.officialForum": "Forum", - "helpView.reportIssue": " Opprett en feilrapport", - "helpView.reviewIssues": "Se feilrapporter", - "iasp": "IASP", - "ifsBrowser.addIFSShortcut.error": "{0} er ikke en mappe.", - "ifsBrowser.addIFSShortcut.errorMessage": "Feil ved opprettelse av IFS snarvei! {0}", - "ifsBrowser.addIFSShortcut.prompt": "Sti til IFS mappe", - "ifsBrowser.changeWorkingDirectory.message": "Nåværende mappe er endret til {0}.", - "ifsBrowser.changeWorkingDirectory.prompt": "Endrer nåværende mappe", - "ifsBrowser.copyIFS.errorMessage": "Feil ved kopiering av {0}! {1}", - "ifsBrowser.copyIFS.infoMessage": "{0} ble kopiert til {1}.", - "ifsBrowser.copyIFS.prompt": "Nytt navn", - "ifsBrowser.copyToStreamfile.failed": "Feil ved kopiering av member(s) til {0}: {1}", - "ifsBrowser.copyToStreamfile.infoMessage": "{0} member(s) kopiert til streamfile(s) i {1}.", - "ifsBrowser.createDirectory.errorMessage": "Feil ved opprettelse av ny mappe! {0}", - "ifsBrowser.createDirectory.prompt": "Sti til ny mappe", - "ifsBrowser.createStreamfile.errorMessage": "Feil ved opprettelse av ny streamfile! {0}", - "ifsBrowser.createStreamfile.infoMessage": "Oppretter streamfile {0}.", - "ifsBrowser.createStreamfile.prompt": "Navn på ny streamfile", - "ifsBrowser.deleteIFS.cancelled": "Sletting avbrutt.", - "ifsBrowser.deleteIFS.default.home.dir": "{0} var den aktuelle mappen; det er nå {1}.", - "ifsBrowser.deleteIFS.deletionPrompt": "Når du har slettet mappen, kan den ikke gjenopprettes.\nVennligst tast \"{0}\" for å bekrefte sletting.", - "ifsBrowser.deleteIFS.deletionPrompt2": " (Tryk \"Escape\" for å avbryte)", - "ifsBrowser.deleteIFS.dirNotAllowed": "Ikke tillatt å slette valgte mapper fra IFS Browser.\n{0}", - "ifsBrowser.deleteIFS.errorMessage": "Feil ved sletting av streamfile! {0}", - "ifsBrowser.deleteIFS.multi.warningMessage": "Er du sikker på å du vil slette de {0} valgte filene?", - "ifsBrowser.deleteIFS.progress": "Sletting av {0} element(er)...", - "ifsBrowser.deleteIFS.warningMessage": "Er du sikker på å du vil slette {0}?", - "ifsBrowser.doFindStreamfiles.errorMessage": "Error finding filenames.", - "ifsBrowser.doFindStreamfiles.noResults": "No results found finding filenames with \"{0}\" in {1}.", - "ifsBrowser.doFindStreamfiles.progressMessage": "Finding filenames with \"{0}\" in {1}.", - "ifsBrowser.doFindStreamfiles.title": "Finding", - "ifsBrowser.doSearchInStreamfiles.errorMessage": "Feil ved søk i filer.", - "ifsBrowser.doSearchInStreamfiles.noResults": "Ingen resultater ble funnet ved søk etter \"{0}\" i {1}.", - "ifsBrowser.doSearchInStreamfiles.progressMessage": "\"{0}\" i {1}.", - "ifsBrowser.doSearchInStreamfiles.title": "Søker", - "ifsBrowser.downloadStreamfile.complete": "Hentning gjennomført.", - "ifsBrowser.downloadStreamfile.downloading": "Henter", - "ifsBrowser.downloadStreamfile.errorMessage": "Feil under hentning: {0}", - "ifsBrowser.ifs.find.noFind": "\"findutils\" must be installed on the remote system.", - "ifsBrowser.ifs.find.placeholder": "Enter find term or select one of the previous find terms.", - "ifsBrowser.ifs.find.placeholder2": "Enter find term.", - "ifsBrowser.ifs.find.previousSearches": "Previous find terms", - "ifsBrowser.ifs.find.prompt": "Enter IFS directory to find files in", - "ifsBrowser.ifs.find.title": "Find in directory", - "ifsBrowser.ifs.find.title2": "Find {0}", - "ifsBrowser.getChildren.errorMessage": "Feil ved les av objekter.", - "ifsBrowser.handleFileListErrors.errorMessage": "{0} {1} oppstod ved visning av filer.", - "ifsBrowser.moveIFS.errorMessage": "Feil ved flytting/omdøping av {0}! {1}", - "ifsBrowser.moveIFS.moved": "{0} ble flyttet til {1}.", - "ifsBrowser.moveIFS.prompt": "Nytt navn", - "ifsBrowser.moveIFS.renamed": "{0} ble omdøpt til {1}.", - "ifsBrowser.removeIFSShortcut.placeHolder": "Velg IFS snarvei å slette", - "ifsBrowser.searchIFS.noGrep": "\"grep\" må være installert på systemet for å søke i IFS.", - "ifsBrowser.searchIFS.placeholder": "Tast inn søketekst eller velg et tidligere søk.", - "ifsBrowser.searchIFS.placeholder2": "Tast inn søketekst.", - "ifsBrowser.searchIFS.previousSearches": "Tidligere søk", - "ifsBrowser.searchIFS.prompt": "Tast inn IFS mappe for søk", - "ifsBrowser.searchIFS.title": "Søk i mappe", - "ifsBrowser.searchIFS.title2": "Søk i {0}", - "ifsBrowser.uploadStreamfile.ask": "Vil du kopiere eller flytte det valgte til {0}?", - "ifsBrowser.uploadStreamfile.copy": "Kopier", - "ifsBrowser.uploadStreamfile.copy.failed": "Feil ved kopiering av det valgte til {0}: {1}", - "ifsBrowser.uploadStreamfile.errorMessage": "Feil ved upload av filer! {0}", - "ifsBrowser.uploadStreamfile.move": "Flytt", - "ifsBrowser.uploadStreamfile.move.failed": "Feil ved flytting av det valgte til {0}: {1}", - "ifsBrowser.uploadStreamfile.noFilesSelected": "Ingen filer eller mapper er valgt til upload.", - "ifsBrowser.uploadStreamfile.process.uploading": "Upload", - "ifsBrowser.uploadStreamfile.process.uploading.directory": "sender {0} mappe(r)...", - "ifsBrowser.uploadStreamfile.process.uploading.files": "sender {0} file(r)...", - "ifsBrowser.uploadStreamfile.select.type.files": "Filer", - "ifsBrowser.uploadStreamfile.select.type.folders": "Mapper", - "ifsBrowser.uploadStreamfile.select.type.title": "Hva ønsker du å uploade?", - "ifsBrowser.uploadStreamfile.uploadedFiles": "Upload er utført.", - "JAVA_HOME": "Java Home", - "java.not.found":"Java version {0} is not installed.", - "job": "Jobb", - "JOB_NAME_SHORT": "Jobb navn", - "JOB_NUMBER": "Jobb nummer", - "JOB_STATUS": "Jobb status", - "JOB_USER": "Jobb bruker", - "jvm.info": "JVM information", - "length": "Lengde", - "LibraryListView.addToLibraryList.addedLib": "Bibliotek {0} ble lagt til i bibliotekslisten.", - "LibraryListView.addToLibraryList.alreadyInList": "Bibliotek {0} er allerede i bibliotekslisten.", - "LibraryListView.addToLibraryList.invalidLib": "Bibliotek {0} finnes ikke.", - "LibraryListView.addToLibraryList.prompt": "Legg til bibliotek", - "LibraryListView.addToLibraryList.removedLibs": "Følgende biblioteker ble fjernet fra den oppdaterte bibliotekslisten, da de ikke er gyldige: {0}", - "LibraryListView.addToLibraryList.tooLong": "Bibioteksnavn er for langt.", - "LibraryListView.changeCurrentLibrary.alreadyCurrent": "{0} er allerede det aktuelle biblioteket.", - "LibraryListView.changeCurrentLibrary.changedCurrent": "Endret nåværende bibliotek til {0}.", - "LibraryListView.changeCurrentLibrary.currentlyActive": "Nåværende", - "LibraryListView.changeCurrentLibrary.placeholder": "Filter eller nytt bibliotek å sette som nåværende bibliotek", - "LibraryListView.changeCurrentLibrary.recentlyUsed": "Tidligere brukt", - "LibraryListView.changeCurrentLibrary.title": "Endre nåværende bibliotek", - "LibraryListView.changeUserLibraryList.prompt": "Endre biblioteksliste (du kan bruke \"*reset\")", - "LibraryListView.changeUserLibraryList.removedLibs": "Følgende biblioteker ble fjernet fra den oppdaterte bibliotekslisten, da de ikke er gyldige: {0}", - "LibraryListView.cleanupLibraryList.removedLibs": "Følgende biblioteker ble fjernet fra den oppdaterte bibliotekslisten, da de ikke er gyldige: {0}", - "LibraryListView.cleanupLibraryList.validated": "Bibliotekslisten ble valideret uden feil.", - "LibraryListView.removeFromLibraryList.removedLib": "Bibliotek {0} ble fjernet fra bibliotekslisten.", - "LibraryListView.setCurrentLibrary.failed": "Feil ved skift til {0} som aktuelt bibliotek: {1}", - "lines": "Linjer", - "listening.on.port": "Lytter på port", - "listening.on.ports": "Lytter på porter", - "loading.debugger.info": "Henter debugger information...", - "local.certificate": "Lokalt sertifikat", - "local.certificate.not.found": "Lokalt sertifikat er ikke funnet", - "local.dont.match.remote": "Lokalt sertifikat matcher ikke vertens", - "login.authDecision": "Angi enten passord eller privat nøkkel - ikke begge deler.", - "login.authRemoved": "Passord og privat nøkkel er fjernet for \"{0}\".", - "login.host": "Vertsnavn eller IP adresse", - "login.password.label": "Angi kun et passord hvis du ønsker å endre det eksisterende eller opprette et nytt.", - "login.password.updated": "Passord er oppdatert og brukes for \"{0}\".", - "login.port": "Port (SSH)", - "login.privateKey.label": "Angi kun en privat nøkkel hvis du ønsker å oppdatere den aktuelle eller lage en ny.", - "login.privateKey.support": "OpenSSH, RFC4716 og PPK formater understøttes.", - "login.privateKey.updated": "Privat nøkkel er oppdatert og brukes for \"{0}\".", - "login.removeAuth": "Fjern passord+nøkkel", - "login.savePassword": "Lagre passord", - "login.title.create": "Connect til IBM i", - "login.title.edit": "Login Innstillinger: \"{0}\"", - "MAX_HEAP_SIZE": "Maksimalt tillatt memory", - "member.has.unsaved.changes": "Memberet har ulagrede endringer.", - "members": "Members", - "MEMORY_POOL": "Memory pulje", - "modified": "Endret", - "No": "Nei", - "not.connected": "Ikke connected til en IBM i", - "not.found.in": "Ikke funnet i {0}", - "objectBrowser.changeObjectDesc.errorMessage": "Objekt beskrivelse må være 50 tegn eller mindre.", - "objectBrowser.changeObjectDesc.errorMessage2": "Feil ved endring av objekt beskrivelse for {0}! {1}", - "objectBrowser.changeObjectDesc.infoMessage": "Endret objekt beskrivelsen for {0} {1}.", - "objectBrowser.changeObjectDesc.prompt": "Oppdater objekt beskrivelse for {0}, *BLANK for ingen beskrivelse", - "objectBrowser.copyMember.errorMessage": "Kan ikke kopiere et member til seg selv!", - "objectBrowser.copyMember.errorMessage2": "Member {0} eksisterer allerede!", - "objectBrowser.copyMember.errorMessage3": "Feil ved opprettelse av member {0}: {1}", - "objectBrowser.copyMember.overwrite": "Vil du overskrive member {0}?", - "objectBrowser.copyMember.progressTitle": "Oppretter member {0}...", - "objectBrowser.copyMember.prompt": "Ny sti for kopiering av source member", - "objectBrowser.copyObject.errorMessage": "Forkert sti: {0}. Bruk formatet LIB/OBJ", - "objectBrowser.copyObject.errorMessage2": "Biblioteknavn må være 10 tegn eller mindre.", - "objectBrowser.copyObject.errorMessage3": "Objektnavn må være 10 tegn eller mindre.", - "objectBrowser.copyObject.errorMessage4": "Feil ved kopiering av objekt {0}! {1}", - "objectBrowser.copyObject.infoMessage": "Kopiert objekt {0} {1} til {2}.", - "objectBrowser.copyObject.infoMessage2": "Kopiert objekt {0} {1} til {2}. Forny object browser.", - "objectBrowser.copyObject.prompt": "Kopier objekt til nytt bibliotek/objekt", - "objectBrowser.createFilter": "Opprett nytt filter", - "objectBrowser.createLibrary.errorMessage": "Kan ikke opprette bibliotek \"{0}\": {1}", - "objectBrowser.createLibrary.errorMessage2": "Biblioteknavn er for langt.", - "objectBrowser.createLibrary.infoMessage": "Vil du tilføye det nye biblioteket til bibliotekslisten?", - "objectBrowser.createLibrary.prompt": "Navn på nytt bibliotek", - "objectBrowser.createMember.errorMessage": "Feil ved opprettelse av member {0}: {1}", - "objectBrowser.createMember.progressTitle": "Oppretter member {0}...", - "objectBrowser.createMember.prompt": "Navn på nytt member (member.ext)", - "objectBrowser.createSourceFile.errorMessage": "Feil ved opprettelse av source fil! {0}", - "objectBrowser.createSourceFile.errorMessage2": "Source filnavn må være 10 tegn eller mindre.", - "objectBrowser.createSourceFile.infoMessage": "Oppretter source fil {0}.", - "objectBrowser.createSourceFile.prompt": "Navn på ny source fil", - "objectBrowser.delete.confirm": "Er du sikker på å du vil slette {0}?", - "objectBrowser.delete.multiple.confirm": "Er du sikker på å du vil slette de {0} valgte elementene?", - "objectBrowser.delete.progress": "Sletter", - "objectBrowser.deleteMember.errorMessage": "Feil ved sletting av member! {0}", - "objectBrowser.deleteObject.errorMessage": "Feil ved sletting av objekt! {0}", - "objectBrowser.doSearchInSourceFile.errorMessage": "Feil ved søk i members: {0}", - "objectBrowser.doSearchInSourceFile.noMembers": "Det er ingen members å søke i.", - "objectBrowser.doSearchInSourceFile.notFound": "Søk etter \"{0}\" i {1} ga ingen resultat.", - "objectBrowser.doSearchInSourceFile.progressMessage": "Henter member liste for {0}.", - "objectBrowser.doSearchInSourceFile.searchMessage1": "\"{0}\" i {1}.", - "objectBrowser.doSearchInSourceFile.searchMessage2": "Dette kan ta litt tid da det er {0} members. Søker fortsatt etter \"{1}\" i {2}.", - "objectBrowser.doSearchInSourceFile.searchMessage3": "Hva er egentligt så spesielt med \"{0}\"?", - "objectBrowser.doSearchInSourceFile.searchMessage4": "Søker fortsatt etter \"{0}\" i {1}...", - "objectBrowser.doSearchInSourceFile.searchMessage5": "Hva med å hente en kopp kaffe mens du venter?", - "objectBrowser.doSearchInSourceFile.searchMessage6": "Uha, dette tar virkelig lang tid. La oss håpe du får ønsket resultat.", - "objectBrowser.doSearchInSourceFile.searchMessage7": "Der er 10 slags mennesker - de som forstår binært og dem, som ikke gjør det!", - "objectBrowser.doSearchInSourceFile.searchMessage8": "Hvordan i allverden ender man opp med {0} members?", - "objectBrowser.doSearchInSourceFile.searchMessage9": "\"{0}\" i {1}.", - "objectBrowser.doSearchInSourceFile.title": "Søker", - "objectBrowser.downloadMemberContent.cancel": "Nedlasting av members avbrutt.", - "objectBrowser.downloadMemberContent.download.cpytostmf": "kopiering til streamfiles", - "objectBrowser.downloadMemberContent.download.progress": "Laster ned {0} members", - "objectBrowser.downloadMemberContent.download.streamfiles": "henter streamfiles", - "objectBrowser.downloadMemberContent.errorMessage": "Feil med nedlasting av member(s)! {0}", - "objectBrowser.downloadMemberContent.infoMessage": "Nedlasting av members er ferdig.", - "objectBrowser.moveObject.errorMessage": "Objekt navn må være 10 tegn eller mindre.", - "objectBrowser.moveObject.errorMessage2": "Feil ved flytting av objekt {0}! {1}", - "objectBrowser.moveObject.infoMessage": "Flyttet objekt {0} {1} til {2}.", - "objectBrowser.moveObject.infoMessage2": "Flyttet objekt {0} {1} til {2}. Forny object browser.", - "objectBrowser.moveObject.progress": "Flytter objekt {0} {1} til {2}...", - "objectBrowser.moveObject.prompt": "Flytt objekt", - "objectBrowser.renameMember.errorMessage": "Feil ved omdøping av member! {0}", - "objectBrowser.renameMember.invalid.input": "Nytt member navn må være forskjellig fra det nåværende navnet", - "objectBrowser.renameMember.prompt": "Omdøp member {0}", - "objectBrowser.renameObject.errorMessage": "Objektnavn må være 10 tegn eller mindre.", - "objectBrowser.renameObject.errorMessage2": "Feil ved omdøping av objekt {0}! {1}", - "objectBrowser.renameObject.infoMessage": "Omdøpt objekt {0} {1} til {2}.", - "objectBrowser.renameObject.progress": "Omdøper objekt {0} {1} til {2}...", - "objectBrowser.renameObject.prompt": "Omdøp objekt", - "objectBrowser.searchSourceFile.aspText": "(i ASP {0})", - "objectBrowser.searchSourceFile.errorMessage": "Kan ikke søke med *ALL.", - "objectBrowser.searchSourceFile.invalidForm": "Vennligst tast inn verdi på formatet LIB/SPF/member.ext", - "objectBrowser.searchSourceFile.placeholder": "Tast inn søketekst eller velg en av de forrige søkene.", - "objectBrowser.searchSourceFile.placeholder2": "Tast inn søketekst.", - "objectBrowser.searchSourceFile.previousSearches": "Tidligere søk", - "objectBrowser.searchSourceFile.prompt": "Tast inn LIB/SPF/member.ext for å søke (member.ext er valgfritt og kan inneholde wildcards)", - "objectBrowser.searchSourceFile.title": "Søk i source fil", - "objectBrowser.searchSourceFile.title2": "Søk i {0} {1}", - "objectBrowser.updateMemberText.errorMessage": "Feil ved endring av member beskrivelse! {0}", - "objectBrowser.updateMemberText.prompt": "Oppdater beskrivelse av member {0}, *BLANK for ingen beskrivelse", - "objectBrowser.uploadAndReplaceMemberAsFile.errorMessage": "Feil ved utsendelse av fil! {0}", - "objectBrowser.uploadAndReplaceMemberAsFile.infoMessage": "Fil ble sendt til member.", - "offline": "Offline", - "online": "Online", - "open":"Open", - "open.service.configuration": "Åpne konfigurasjon", - "overview": "Oversikt", - "overwrite": "Erstatt", - "overwrite_all": "Erstatt alle", - "owner": "Eier", - "password": "Passord", - "privateKey": "Privat nøkkel", - "ProfilesView.deleteConnectionProfile.warningMessage": "Er du sikker på å du vil slette profilen \"{0}\"?", - "ProfilesView.loadCommandProfile.errorMessage": "Feil ved å hente bibliotekslisten fra kommando: {0}", - "ProfilesView.loadCommandProfile.infoMessage": "Endret til profil \"{0}\".", - "ProfilesView.loadCommandProfile.warningMessage": "Feil ved å hente bibliotekslisten fra kommando. Feature er ikke installert.", - "ProfilesView.loadConnectionProfile.infoMessage": "Endret til profil \"{0}\".", - "ProfilesView.saveConnectionProfile.infoMessage": "Lagret nåværende innstillinger til profilen \"{0}\".", - "ProfilesView.saveConnectionProfile.prompt": "Navn på profil", - "ProfilesView.setToDefault.detail": "Dette vil nullstille bibliotekslisten, nåværende mappe og Bruker Variabler.", - "ProfilesView.setToDefault.infoMessage": "Nullstil til standard", - "remote.certificate.not.found": "Vertens sertifikat er ikke funnet", - "remote.certificate.not.found.detail": "{0} er ikke funnet under {1}", - "restart": "Omstart", - "Retry": "Prøv igen", - "sandbox.alreadyConnected": "Denne Visual Studio Code instansen er allerede forbundet til en server.", - "sandbox.connected.modal.detail": "Du bruker dette systemet på egen risiko. Ikke del sensitiv eller privat informasjon.", - "sandbox.connected.modal.title": "Takk for å at du prøver Code for IBM i Sandbox!", - "sandbox.failedToConnect.text": "Feil ved forbindelse til {0} som {1}", - "sandbox.failedToConnect.title": "Feil ved forbindelse", - "sandbox.input.password.prompt": "Tast inn passord for {0}@{1}", - "sandbox.input.password.title": "Passord for server", - "sandbox.input.user.prompt": "Tast inn brukernavn for {0}", - "sandbox.input.user.title": "Bruker for server", - "sandbox.noconnection.modal.detail": "Dessverre, men \"Sandkassen\" er ikke tilgjengelig akkurat nå. Prøv igjen litt senere.", - "sandbox.noconnection.modal.title": "Åh nei! \"Sandkassen\" er ikke tilgjengelig.", - "sandbox.noPassword": "Forbindelsen til {0} er avsluttet, da ikke noe passord ble agitt.", - "save": "Lagre", - "searchView.find.message":"{0} file(s) named '{1}'", - "searchView.search.message":"{0} file(s) contain(s) '{1}'", - "service.certificate.exists": "Remote service sertifikat eksisterer", - "shortcut": "snarvei", - "size": "Størrelse", - "skip": "Hopp over", - "skip_all": "Hopp over alle", - "start": "Start", - "START_TIME": "Starttid", - "start.debug.server.task": "Starter debug server...", - "start.debug.service.failed": "Feil ved start av debug service: {0}", - "start.debug.service.succeeded": "Debug service har startet.", - "start.debug.service.task": "Starter debug service...", - "status": "Status", - "stop": "Stopp", - "stop.debug.server.task": "Stopper debug server...", - "stop.debug.service.failed": "Feil ved stopp av debug service: {0}", - "stop.debug.service.succeeded": "Debug service har stoppet.", - "stop.debug.service.task": "Stopper debug service...", - "stored": "Lagret", - "strdbgsvr.failed": "Feil ved start av debug server: {0}", - "strdbgsvr.succeeded": "Debug server har startet.", - "streamfile": "fil", - "SUBSYSTEM": "Subsystem", - "text": "Tekst", - "type": "Type", - "USER_DIRECTORY": "Bruker mappe", - "username": "Brukernavn", - "Yes": "Ja", - "debug.service.config.incomplete": "Incomplete configuration", - "debug.service.config.incomplete.detail": "Certificate needs to be regenerated" - } \ No newline at end of file diff --git a/src/locale/ids/pl.json b/src/locale/ids/pl.json deleted file mode 100644 index fa79eb6c5..000000000 --- a/src/locale/ids/pl.json +++ /dev/null @@ -1,429 +0,0 @@ -{ - "actions.BASENAME": "Nazwa pliku, łącznie z rozszerzeniem", - "actions.BRANCH": "Bieżąca gałąź Git", - "actions.BRANCHLIB": "Biblioteka gałęzi, bazująca na bieżącej gałęzi", - "actions.BUILDLIB": "Tak samo jak &CURLIB", - "actions.CURLIB": "Bieżąca biblioteka, którą można zmienić na liście bBibliotek", - "actions.duplicate.select": "Wybierz akcję do zduplikowania", - "actions.EXT": "Typ pliku", - "actions.EXTL": "Typ pliku małymi literami", - "actions.FILEDIR": "Katalog pliku w systemie zdalnym", - "actions.FULLPATH": "Pełna ścieżka pliku w systemie zdalnym", - "actions.HOST": "Nazwa hosta lub adres IP bieżącego połączenia", - "actions.LIBLC": "Lista bibliotek oddzielona przecinkami", - "actions.LIBLS": "Lista bibliotek oddzielona spacjami", - "actions.LIBRARY": "Nazwa biblioteki, w której znajduje się obiekt (&LIBRARYL małymi literami)", - "actions.mainMenu.createOrMaintain": "Utwórz lub zarządzaj Akcjami. Akcje są pogrupowane według typu pliku/obiektu, którego dotyczą.", - "actions.mainMenu.newAction": "Nowa Akcja", - "actions.mainMenu.workWithActions": "Praca z Akcjami", - "actions.member.EXT": "Rozszerzenie podzbioru źródłowego (&EXTL małymi literami)", - "actions.NAME": "Nazwa obiektu (&NAMEL małymi literami)", - "actions.NAMEL": "Nazwa obiektu z małymi literami", - "actions.object.EXT": "Rozszerzenie/atrybut obiektu (&EXTL małymi literami)", - "actions.object.TYPE": "Typ obiektu (&TYPEL małymi literami)", - "actions.OPENLIB": "Nazwa biblioteki, w której znajduje się podzbiór źródłowy (&OPENLIBL małymi literami)", - "actions.OPENMBR": "Nazwa podzbioru źródłowego (&OPENMBRL małymi literami)", - "actions.OPENSPF": "Nazwa pliku źródłowego, w którym znajduje się podzbiór źródłowy (&OPENSPFL małymi literami)", - "actions.PARENT": "Nazwa katalogu nadrzędnego lub pliku źródłowego", - "actions.RELATIVEPATH": "Ścieżka względna pliku strumieniowego z katalogu roboczego lub obszaru roboczego", - "actions.streamfile.EXT": "Rozszerzenie pliku (&EXTL małymi literami)", - "actions.streamfile.NAME": "Nazwa pliku (&NAMEL małymi literami)", - "actions.USERNAME": "Nazwa użytkownika do połączenia", - "actions.workAction.command": "Komenda(y) do uruchomienia", - "actions.workAction.command.description": "Poniżej znajdują się dostępne zmienne w zależności od typu, który wybrałeś poniżej. W każdym wierszu możesz określić różne polecenia. Każde uruchomienie polecenia jest bezstanowe i uruchamiane w ramach własnego zadania.", - "actions.workAction.create.title": "Utwórz akcję", - "actions.workAction.delete.confirm": "Czy na pewno chcesz usunąć akcję \"{0}\"?", - "actions.workAction.duplicate.title": "Duplikuj akcję \"{0}\"", - "actions.workAction.edit.title": "Edytuj akcję \"{0}\"", - "actions.workAction.environment": "Środowisko", - "actions.workAction.environment.description": "Środowisko, w którym komenda ma zostać wykonane.", - "actions.workAction.environment.ile": "ILE", - "actions.workAction.environment.ile.description": "Działa jako komenda ILE", - "actions.workAction.environment.pase": "PASE", - "actions.workAction.environment.pase.description": "Uruchamia komendę w środowisku PASE", - "actions.workAction.environment.qsh": "QShell", - "actions.workAction.environment.qsh.description": "Uruchamia komendę poprzez QShell", - "actions.workAction.extensions": "Rozszerzenia", - "actions.workAction.extensions.description": "Rozdzielana przecinkami lista rozszerzeń dla tej akcji. Może to być typ podzbioru, rozszerzenie pliku strumieniowego, typ obiektu lub atrybut obiektu", - "actions.workAction.name": "Nazwa akcji", - "actions.workAction.refresh": "Odśwież", - "actions.workAction.refresh.browser": "Przeglądarka", - "actions.workAction.refresh.browser.description": "Cała przeglądarka zostanie odświeżona", - "actions.workAction.refresh.description": "Poziom przeglądarki do odświeżenia po wykonaniu akcji", - "actions.workAction.refresh.filter": "Filtruj", - "actions.workAction.refresh.filter.description": "Filtr nadrzędny zostanie odświeżony", - "actions.workAction.refresh.no": "Nie", - "actions.workAction.refresh.no.description": "Nie odświeżaj", - "actions.workAction.refresh.parent": "Nadrzędny", - "actions.workAction.refresh.parent.description": "Kontener nadrzędny zostanie odświeżony", - "actions.workAction.runOnProtected": "Uruchom w trybie chronionym/tylko do odczytu", - "actions.workAction.runOnProtected.description": "Umożliwia wykonanie tej akcji na elementach chronionych lub tylko do odczytu", - "actions.workAction.types": "Typ", - "actions.workAction.types.description": "Typy plików, obsługiwane przez tę akcję.", - "actions.workAction.types.file": "Plik lokalny (obszar roboczy)", - "actions.workAction.types.file.description": "Akcje dla plików lokalnych w obszarze roboczym VS Code.", - "actions.workAction.types.member": "Podzbiór", - "actions.workAction.types.member.description": "Podzbiory źródłowe w systemie plików QSYS", - "actions.workAction.types.object": "Obiekt", - "actions.workAction.types.object.description": "Obiekty w systemie plików QSYS", - "actions.workAction.types.streamfile": "Plik strumieniowy", - "actions.workAction.types.streamfile.description": "Pliki strumieniowe w IFS", - "actions.WORKDIR": "Bieżący katalog roboczy, który można zmieniać w przeglądarce IFS", - "active.job": "Aktywne zadanie", - "ask.overwrite": "{0} już istnieje.\nCzy chcesz go wymienić?", - "attribute": "Atrybut", - "AUTHORIZATION_NAME": "Bieżący użytkownik", - "cancel": "Anuluj", - "Cancel": "Anuluj", - "CCSID": "CCSID", - "certificates.match": "Certyfikat lokalny zgodny ze zdalnym", - "changed": "Zmieniony", - "clearedList": "Wyczyszczona lista.", - "clearList": "$(trash) Wyczyść listę", - "compare.active.file": "Compare with Active File", - "compare.no.file": "No file is open or selected", - "compare.prompt": "Enter the path to compare selected with", - "compare.title": "Compare with", - "connectionBrowser.connectTo.error": "Użyj przeglądarki serwerów, aby wybrać system, z którym chcesz się połączyć.", - "connectionBrowser.connectTo.lastConnection": "Ostatnie połączenie", - "connectionBrowser.connectTo.lastUsed": "Ostatnio użyte: {0}", - "connectionBrowser.connectTo.title": "Ostatnie połączenia z systemem IBM i", - "connectionBrowser.copyConnection.already.exists": "Połączenie \"{0}\" już istnieje", - "connectionBrowser.copyConnection.placeholder": "Nowa nazwa połączenia", - "connectionBrowser.copyConnection.prompt": "Skopiuj połączenie \"{0}\"", - "connectionBrowser.copyConnection.select.command.profiles": "Profile komend", - "connectionBrowser.copyConnection.select.connection.profiles": "Profile połączeń", - "connectionBrowser.copyConnection.select.custom.variables": "Zmienne niestandardowe", - "connectionBrowser.copyConnection.select.home.directory": "Katalog domowy", - "connectionBrowser.copyConnection.select.ifs.shortcuts": "Skróty IFS", - "connectionBrowser.copyConnection.select.library.list": "Lista bibliotek", - "connectionBrowser.copyConnection.select.object.filters": "Filtry obiektów", - "connectionBrowser.copyConnection.select.settings": "Wybierz ustawienia do skopiowania z \"{0}\" do \"{1}\"", - "connectionBrowser.deleteConnection.multiple.warning": "Czy na pewno chcesz usunąć te połączenia ({0})?", - "connectionBrowser.deleteConnection.warning": "Czy na pewno chcesz usunąć to połączenie \"{0}\"?", - "connectionBrowser.renameConnection.alreadyExists": "Połączenie \"{0}\" już istnieje.", - "connectionBrowser.renameConnection.error": "Błąd podczas zmiany nazwy połączenia \"{0}\"! {1}", - "connectionBrowser.renameConnection.invalid.input": "Nowa nazwa połączenia musi różnić się od bieżącej nazwy", - "connectionBrowser.renameConnection.noConnectionFound": "Nie znaleziono połączenia o nazwie \"{0}\".", - "connectionBrowser.renameConnection.noConnParmsFound": "Nie znaleziono parametrów połączenia \"{0}\".", - "connectionBrowser.renameConnection.prompt": "Zmień nazwę połączenia \"{0}\"", - "connectionBrowser.ServerItem.title": "Połącz", - "connectionBrowser.ServerItem.tooltip": "(poprzednie połączenie)", - "Continue": "Kontynuuj", - "created": "Utworzony", - "created_by": "Stworzone przez", - "current": "bieżący", - "CURRENT_HEAP_SIZE": "Aktualna pamięć", - "currentLibrary": "(bieżąca biblioteka)", - "debug.server": "Serwer debugowania", - "debug.service": "Usługa debugowania", - "debug.service.certificate": "Certyfikat usługi debugowania", - "debug.service.submit.options": "Opcje inicjowania usługi debugowania", - "debug.service.submit.options.prompt": "Poprawne parametry dla SBMJOB", - "debugger.status": "Stan debugera {0}", - "delete": "Usuń", - "detail.reading.error": "Nie udało się odczytać pliku szczegółów usługi debugowania {0}: {1}", - "directory": "katalog", - "directory.unsaved.changes": "The directory has file(s) with unsaved changes.", - "discard.changes": "Twoje zmiany zostaną usunięte", - "download.certificate": "Pobierz certyfikat", - "duplicate": "Duplikuj", - "enddbgsvr.failed": "Nie udało się zatrzymać serwera debugowania: {0}", - "enddbgsvr.succeeded": "Serwer debugowania zatrzymany.", - "error": "błąd", - "errors": "błędy", - "file.path.not.parsed": "Nie można przeanalizować ścieżki pliku.", - "file.unsaved.changes": "Plik zawiera niezapisane zmiany.", - "generate.certificate": "Wygeneruj certyfikat usługi", - "helpView.getStarted": "Zaczynaj", - "helpView.downloadLogs": "Download Logs", - "helpView.downloadLogs.gatheringLogs": "Gathering logs...", - "helpView.downloadLogs.codeForIBMiLog": "Code for IBM i Log", - "helpView.downloadLogs.debugServiceEclipseInstanceLog": "Debug Service Eclipse Instance Log", - "helpView.downloadLogs.debugServiceLog": "Debug Service Log", - "helpView.downloadLogs.downloadTo": "Download To", - "helpView.downloadLogs.failed": "Failed to downloaded logs to {0}", - "helpView.downloadLogs.failedMessage": "Failed to download logs to {0}. {1}", - "helpView.downloadLogs.noConnection": "Please connect to an IBM i", - "helpView.downloadLogs.noLogs": "No logs to download", - "helpView.downloadLogs.open": "Open", - "helpView.downloadLogs.selectLogs": "Select the logs you would like to download", - "helpView.downloadLogs.success": "Successfully downloaded logs to {0}", - "helpView.officialForum": "Otwórz oficjalne Forum", - "helpView.reportIssue": "Zgłoś problem", - "helpView.reviewIssues": "Przeglądaj problemy", - "iasp": "IASP", - "ifsBrowser.addIFSShortcut.error": "{0} nie jest katalogiem.", - "ifsBrowser.addIFSShortcut.errorMessage": "Błąd podczas tworzenia skrótu IFS! {0}", - "ifsBrowser.addIFSShortcut.prompt": "Ścieżka do katalogu IFS", - "ifsBrowser.changeWorkingDirectory.message": "Katalog roboczy został zmieniony na {0}.", - "ifsBrowser.changeWorkingDirectory.prompt": "Zmiana katalogu roboczego", - "ifsBrowser.copyIFS.errorMessage": "Błąd podczas kopiowania {0}! {1}", - "ifsBrowser.copyIFS.infoMessage": "{0} został skopiowany do {1}.", - "ifsBrowser.copyIFS.prompt": "Nazwa nowej ścieżki", - "ifsBrowser.copyToStreamfile.failed": "Błąd podczas kopiowania podzbiorów do {0}: {1}", - "ifsBrowser.copyToStreamfile.infoMessage": "{0} podzbiór(y) skopiowano do pliku(ów) strumieniowych w {1}.", - "ifsBrowser.createDirectory.errorMessage": "Błąd podczas tworzenia nowego katalogu! {0}", - "ifsBrowser.createDirectory.prompt": "Ścieżka nowego folderu", - "ifsBrowser.createStreamfile.errorMessage": "Błąd podczas tworzenia nowego pliku strumieniowego! {0}", - "ifsBrowser.createStreamfile.infoMessage": "Tworzenie pliku strumieniowego {0}.", - "ifsBrowser.createStreamfile.prompt": "Nazwa nowego pliku strumieniowego", - "ifsBrowser.deleteIFS.cancelled": "Usuwanie anulowane.", - "ifsBrowser.deleteIFS.default.home.dir": "{0} był katalogiem roboczym; teraz jest {1}.", - "ifsBrowser.deleteIFS.deletionPrompt": "Po usunięciu katalogu nie będzie można go przywrócić.\nWpisz \"{0}\", aby potwierdzić usunięcie.", - "ifsBrowser.deleteIFS.deletionPrompt2": "(Naciśnij \"Escape\", aby anulować)", - "ifsBrowser.deleteIFS.dirNotAllowed": "Nie można usunąć chronionych katalogów z przeglądarki IFS!\n{0}", - "ifsBrowser.deleteIFS.errorMessage": "Błąd podczas usuwania pliku strumieniowego! {0}", - "ifsBrowser.deleteIFS.multi.warningMessage": "Czy na pewno chcesz usunąć wybrane pliki ({0})?", - "ifsBrowser.deleteIFS.progress": "Usuwanie elementów: {0}...", - "ifsBrowser.deleteIFS.warningMessage": "Czy na pewno chcesz usunąć {0}?", - "ifsBrowser.doFindStreamfiles.errorMessage": "Error finding filenames.", - "ifsBrowser.doFindStreamfiles.noResults": "No results found finding filenames with \"{0}\" in {1}.", - "ifsBrowser.doFindStreamfiles.progressMessage": "Finding filenames with \"{0}\" in {1}.", - "ifsBrowser.doFindStreamfiles.title": "Finding", - "ifsBrowser.doSearchInStreamfiles.errorMessage": "Błąd wyszukiwania w plikach strumieniowych.", - "ifsBrowser.doSearchInStreamfiles.noResults": "Nie znaleziono wyników wyszukiwania \"{0}\" w {1}.", - "ifsBrowser.doSearchInStreamfiles.progressMessage": "\"{0}\" w {1}.", - "ifsBrowser.doSearchInStreamfiles.title": "Wyszukiwanie", - "ifsBrowser.downloadStreamfile.complete": "Pobieranie zakończone", - "ifsBrowser.downloadStreamfile.downloading": "Pobieranie", - "ifsBrowser.downloadStreamfile.errorMessage": "Błąd podczas pobierania plików: {0}", - "ifsBrowser.ifs.find.noFind": "\"findutils\" must be installed on the remote system.", - "ifsBrowser.ifs.find.placeholder": "Enter find term or select one of the previous find terms.", - "ifsBrowser.ifs.find.placeholder2": "Enter find term.", - "ifsBrowser.ifs.find.previousSearches": "Previous find terms", - "ifsBrowser.ifs.find.prompt": "Enter IFS directory to find files in", - "ifsBrowser.ifs.find.title": "Find in directory", - "ifsBrowser.ifs.find.title2": "Find {0}", - "ifsBrowser.getChildren.errorMessage": "Błąd ładowania obiektów.", - "ifsBrowser.handleFileListErrors.errorMessage": "Podczas wyświetlania listowania plików wystąpił {0} {1}.", - "ifsBrowser.moveIFS.errorMessage": "Błąd podczas zmiany nazwy/przenoszenia {0}! {1}", - "ifsBrowser.moveIFS.moved": "{0} został przeniesiony do {1}.", - "ifsBrowser.moveIFS.prompt": "Nazwa nowej ścieżki", - "ifsBrowser.moveIFS.renamed": "Nazwa {0} została zmieniona na {1}.", - "ifsBrowser.removeIFSShortcut.placeHolder": "Wybierz skrót IFS do usunięcia", - "ifsBrowser.searchIFS.noGrep": "grep musi być zainstalowany w systemie zdalnym, aby możliwe było wyszukiwanie IFS.", - "ifsBrowser.searchIFS.placeholder": "Wprowadź wyszukiwaną frazę lub wybierz jedną z poprzednio wyszukiwanych.", - "ifsBrowser.searchIFS.placeholder2": "Wpisz wyszukiwaną frazę.", - "ifsBrowser.searchIFS.previousSearches": "Poprzednio wyszukiwane frazy", - "ifsBrowser.searchIFS.prompt": "Wejdź do katalogu IFS, aby przeszukać", - "ifsBrowser.searchIFS.title": "Przeszukaj katalog", - "ifsBrowser.searchIFS.title2": "Szukaj {0}", - "ifsBrowser.uploadStreamfile.ask": "Czy chcesz skopiować, czy przenieść zaznaczenie do {0}?", - "ifsBrowser.uploadStreamfile.copy": "Kopiuj", - "ifsBrowser.uploadStreamfile.copy.failed": "Nie udało się skopiować zaznaczenia do {0}: {1}", - "ifsBrowser.uploadStreamfile.errorMessage": "Błąd podczas przesyłania plików! {0}", - "ifsBrowser.uploadStreamfile.move": "Przenieś", - "ifsBrowser.uploadStreamfile.move.failed": "Nie udało się przenieść zaznaczenia do {0}: {1}", - "ifsBrowser.uploadStreamfile.noFilesSelected": "Nie wybrano plików ani folderów do przesłania.", - "ifsBrowser.uploadStreamfile.process.uploading": "Przesyłanie", - "ifsBrowser.uploadStreamfile.process.uploading.directory": "wysyłanie katalogu {0}...", - "ifsBrowser.uploadStreamfile.process.uploading.files": "wysyłanie plików ({0})...", - "ifsBrowser.uploadStreamfile.select.type.files": "Pliki`", - "ifsBrowser.uploadStreamfile.select.type.folders": "Foldery", - "ifsBrowser.uploadStreamfile.select.type.title": "Co chcesz przesłać?", - "ifsBrowser.uploadStreamfile.uploadedFiles": "Przesyłanie zakończone.", - "JAVA_HOME": "Java Home", - "java.not.found":"Java version {0} is not installed.", - "job": "Zadanie", - "JOB_NAME_SHORT": "Nazwa zadania`", - "JOB_NUMBER": "Numer zadania", - "JOB_STATUS": "Status zadania", - "JOB_USER": "Użytkownik zadania", - "jvm.info": "Informacje o JVM", - "length": "Długość", - "LibraryListView.addToLibraryList.addedLib": "Biblioteka {0} została dodana do listy bibliotek.", - "LibraryListView.addToLibraryList.alreadyInList": "Biblioteka {0} była już na liście bibliotek.", - "LibraryListView.addToLibraryList.invalidLib": "Biblioteka {0} nie istnieje.", - "LibraryListView.addToLibraryList.prompt": "Biblioteka do dodania", - "LibraryListView.addToLibraryList.removedLibs": "Następujące biblioteki zostały usunięte ze zaktualizowanej listy bibliotek, ponieważ są nieprawidłowe: {0}", - "LibraryListView.addToLibraryList.tooLong": "Nazwa biblioteka jest za długa.", - "LibraryListView.changeCurrentLibrary.alreadyCurrent": "{0} jest już biblioteką bieżącą.", - "LibraryListView.changeCurrentLibrary.changedCurrent": "Zmieniono bibliotekę bieżącą na {0}.", - "LibraryListView.changeCurrentLibrary.currentlyActive": "Obecnie aktywny", - "LibraryListView.changeCurrentLibrary.placeholder": "Filtr lub nowa biblioteka, do ustawienia jako biblioteka bieżąca", - "LibraryListView.changeCurrentLibrary.recentlyUsed": "Ostatnio używany", - "LibraryListView.changeCurrentLibrary.title": "Zmień bibliotekę bieżącą", - "LibraryListView.changeUserLibraryList.prompt": "Zmiana listy bibliotek (można użyć \"*reset\")", - "LibraryListView.changeUserLibraryList.removedLibs": "Następujące biblioteki zostały usunięte ze zaktualizowanej listy bibliotek, ponieważ są nieprawidłowe: {0}", - "LibraryListView.cleanupLibraryList.removedLibs": "Następujące biblioteki zostały usunięte ze zaktualizowanej listy bibliotek, ponieważ są nieprawidłowe: {0}", - "LibraryListView.cleanupLibraryList.validated": "Lista bibliotek została sprawdzona bez żadnych błędów.", - "LibraryListView.removeFromLibraryList.removedLib": "Biblioteka {0} została usunięta z listy bibliotek.", - "LibraryListView.setCurrentLibrary.failed": "Nie udało się ustawić {0} jako biblioteki bieżącej: {1}", - "lines": "Linie", - "listening.on.port": "Nasłuchiwanie na porcie", - "listening.on.ports": "Nasłuchiwanie na portach", - "loading.debugger.info": "Ładowanie informacji debugera...", - "local.certificate": "Lokalny certyfikat", - "local.certificate.not.found": "Nie znaleziono lokalnego certyfikatu", - "local.dont.match.remote": "Certyfikat lokalny nie pasuje do zdalnego", - "login.authDecision": "Podaj tylko jedno z następujących: hasło lub klucz prywatny.", - "login.authRemoved": "Usunięto metody uwierzytelniania dla \"{0}\".", - "login.host": "Host lub adres IP", - "login.password.label": "Podaj hasło tylko wtedy, gdy chcesz zaktualizować istniejące lub ustawić nowe.", - "login.password.updated": "Hasło zostało zaktualizowane i będzie używane dla \"{0}\".", - "login.port": "Port (SSH)", - "login.privateKey.label": "Podaj klucz prywatny tylko wtedy, gdy chcesz zaktualizować istniejący lub ustawić go.", - "login.privateKey.support": "Obsługiwane formaty: OpenSSH, RFC4716 i PPK.", - "login.privateKey.updated": "Klucz prywatny został zaktualizowany i będzie używany dla \"{0}\".", - "login.removeAuth": "Usuń metody uwierzytelniania", - "login.savePassword": "Zapisz hasło", - "login.title.create": "Połącz się z systemem IBM i", - "login.title.edit": "Ustawienia logowania: \"{0}\"", - "MAX_HEAP_SIZE": "Maksymalna dozwolona pamięć", - "member.has.unsaved.changes": "Podzbiór zawiera niezapisane zmiany.", - "members": "Podzbiory", - "MEMORY_POOL": "Pula pamięci", - "modified": "Zmodyfikowany", - "No": "Nie", - "not.connected": "Brak połączenia z systemem IBM i", - "not.found.in": "Nie znaleziono w {0}", - "objectBrowser.changeObjectDesc.errorMessage": "Opis obiektu może mieć maksymalnie 50 znaków.", - "objectBrowser.changeObjectDesc.errorMessage2": "Błąd podczas zmiany opisu dla {0}! {1}", - "objectBrowser.changeObjectDesc.infoMessage": "Zmieniono opis obiektu dla {0} {1}.", - "objectBrowser.changeObjectDesc.prompt": "Zmień opis obiektu dla {0}, *BLANK w przypadku braku opisu", - "objectBrowser.copyMember.errorMessage": "Nie można skopiować podzbioru na siebie!", - "objectBrowser.copyMember.errorMessage2": "Podzbiór {0} już istnieje!", - "objectBrowser.copyMember.errorMessage3": "Błąd podczas tworzenia podzbioru {0}: {1}", - "objectBrowser.copyMember.overwrite": "Czy na pewno chcesz nadpisać podzbiór {0}?", - "objectBrowser.copyMember.progressTitle": "Tworzenie podzbioru {0}...", - "objectBrowser.copyMember.prompt": "Nowa ścieżka dla kopii podzbioru źródłowego", - "objectBrowser.copyObject.errorMessage": "Nieprawidłowa ścieżka: {0}. Użyj zapisu LIB/OBJ", - "objectBrowser.copyObject.errorMessage2": "Biblioteka musi mieć maksymalnie 10 znaków.", - "objectBrowser.copyObject.errorMessage3": "Nazwa obiektu może mieć maksymalnie 10 znaków.", - "objectBrowser.copyObject.errorMessage4": "Błąd podczas kopiowania obiektu {0}! {1}", - "objectBrowser.copyObject.infoMessage": "Skopiowano obiekt {0} {1} do {2}.", - "objectBrowser.copyObject.infoMessage2": "Skopiowano obiekt {0} {1} do {2}. Odśwież przeglądarkę obiektów.", - "objectBrowser.copyObject.prompt": "Duplikuj obiekt do nowej biblioteki/obiektu", - "objectBrowser.createFilter": "Utwórz nowy filtr", - "objectBrowser.createLibrary.errorMessage": "Nie można utworzyć biblioteki \"{0}\": {1}", - "objectBrowser.createLibrary.errorMessage2": "Nazwa biblioteki jest za długa.", - "objectBrowser.createLibrary.infoMessage": "Czy chcesz dodać nową bibliotekę do listy bibliotek?", - "objectBrowser.createLibrary.prompt": "Nazwa nowej biblioteki", - "objectBrowser.createMember.errorMessage": "Błąd podczas tworzenia podzbioru {0}: {1}", - "objectBrowser.createMember.progressTitle": "Tworzenie podzbioru {0}...", - "objectBrowser.createMember.prompt": "Nazwa nowego podzbioru źródłowego (podzbiór.typ)", - "objectBrowser.createSourceFile.errorMessage": "Błąd podczas tworzenia zbioru źródłowego! {0}", - "objectBrowser.createSourceFile.errorMessage2": "Nazwa zbioru źródłowego może mieć maksymalnie 10 znaków.", - "objectBrowser.createSourceFile.infoMessage": "Tworzenie zbioru źródłowego {0}.", - "objectBrowser.createSourceFile.prompt": "Nazwa nowego zbioru źródłowego", - "objectBrowser.delete.confirm": "Czy na pewno chcesz usunąć {0}?", - "objectBrowser.delete.multiple.confirm": "Czy na pewno chcesz usunąć te elementy {0}?", - "objectBrowser.delete.progress": "Usuwanie", - "objectBrowser.deleteMember.errorMessage": "Błąd podczas usuwania podzbioru! {0}", - "objectBrowser.deleteObject.errorMessage": "Błąd podczas usuwania obiektu! {0}", - "objectBrowser.doSearchInSourceFile.errorMessage": "Błąd podczas wyszukiwania podzbiorów źródłowych: {0}", - "objectBrowser.doSearchInSourceFile.noMembers": "Brak podzbiorów do przeszukania.", - "objectBrowser.doSearchInSourceFile.notFound": "Nie znaleziono wyników wyszukiwania \"{0}\" w {1}.", - "objectBrowser.doSearchInSourceFile.progressMessage": "Pobieram listę podzbiorów dla {0}.", - "objectBrowser.doSearchInSourceFile.searchMessage1": "\"{0}\" w {1}.", - "objectBrowser.doSearchInSourceFile.searchMessage2": "To zajmuje trochę czasu, ponieważ jest {0} podzbiorów. Nadal wyszukuję \"{1}\" w {2}.", - "objectBrowser.doSearchInSourceFile.searchMessage3": "Co w ogóle jest takiego specjalnego w \"{0}\"?", - "objectBrowser.doSearchInSourceFile.searchMessage4": "Nadal wyszukuję \"{0}\" w {1}...", - "objectBrowser.doSearchInSourceFile.searchMessage5": "Kiedy będziesz czekać na wyniki, może zrobisz sobie herbatę?", - "objectBrowser.doSearchInSourceFile.searchMessage6": "Wow. To naprawdę zajmuje trochę czasu. Miejmy nadzieję, że uzyskasz pożądany rezultat.", - "objectBrowser.doSearchInSourceFile.searchMessage7": "Dlaczego sześć boi się siedmiu?", - "objectBrowser.doSearchInSourceFile.searchMessage8": "Jak to mogło znaleźć {0} podzbiorów?", - "objectBrowser.doSearchInSourceFile.searchMessage9": "\"{0}\" w {1}.", - "objectBrowser.doSearchInSourceFile.title": "Wyszukiwanie", - "objectBrowser.downloadMemberContent.cancel": "Pobieranie podzbiorów zostało anulowane.", - "objectBrowser.downloadMemberContent.download.cpytostmf": "kopiowanie do plików strumieniowych", - "objectBrowser.downloadMemberContent.download.progress": "Pobieram {0} podzbiorów", - "objectBrowser.downloadMemberContent.download.streamfiles": "pobieranie plików strumieniowych", - "objectBrowser.downloadMemberContent.errorMessage": "Błąd podczas pobierania podzbiorów! {0}", - "objectBrowser.downloadMemberContent.infoMessage": "Pobieranie podzbiorów zostało zakończone.", - "objectBrowser.moveObject.errorMessage": "Nazwa obiektu może mieć maksymalnie 10 znaków.", - "objectBrowser.moveObject.errorMessage2": "Błąd podczas przenoszenia obiektu {0}! {1}", - "objectBrowser.moveObject.infoMessage": "Przeniesiono obiekt {0} {1} do {2}.", - "objectBrowser.moveObject.infoMessage2": "Przeniesiono obiekt {0} {1} do {2}. Odśwież przeglądarkę obiektów.", - "objectBrowser.moveObject.progress": "Przenoszenie obiektu {0} {1} do {2}...", - "objectBrowser.moveObject.prompt": "Przenieś obiekt", - "objectBrowser.renameMember.errorMessage": "Błąd podczas zmiany nazwy podzbioru! {0}", - "objectBrowser.renameMember.invalid.input": "Nowa nazwa podzbioru musi różnić się od bieżącej", - "objectBrowser.renameMember.prompt": "Zmień nazwę {0}", - "objectBrowser.renameObject.errorMessage": "Nazwa obiektu może mieć maksymalnie 10 znaków.", - "objectBrowser.renameObject.errorMessage2": "Błąd podczas zmiany nazwy obiektu {0}! {1}", - "objectBrowser.renameObject.infoMessage": "Zmieniono nazwę obiektu z {0} {1} na {2}.", - "objectBrowser.renameObject.progress": "Zmiana nazwy obiektu {0} {1} na {2}...", - "objectBrowser.renameObject.prompt": "Zmień nazwę obiektu", - "objectBrowser.searchSourceFile.aspText": "(w ASP {0})", - "objectBrowser.searchSourceFile.errorMessage": "Nie można przeszukiwać list przy użyciu *ALL.", - "objectBrowser.searchSourceFile.invalidForm": "Proszę wprowadzić wartość w postaci LIB/SPF/podzbiór.typ", - "objectBrowser.searchSourceFile.placeholder": "Wprowadź wyszukiwaną frazę lub wybierz jedną z poprzednio wyszukiwanych fraz.", - "objectBrowser.searchSourceFile.placeholder2": "Wpisz frazę do wyszukania.", - "objectBrowser.searchSourceFile.previousSearches": "Poprzednie wyszukiwane frazy", - "objectBrowser.searchSourceFile.prompt": "Wprowadź LIB/SPF/podzbiór.typ, aby wyszukać (podzbiór.typ jest opcjonalny i może zawierać symbole wieloznaczne)", - "objectBrowser.searchSourceFile.title": "Wyszukaj plik źródłowy", - "objectBrowser.searchSourceFile.title2": "Szukaj {0} {1}", - "objectBrowser.updateMemberText.errorMessage": "Błąd podczas zmiany opisu podzbioru! {0}", - "objectBrowser.updateMemberText.prompt": "Zmień opis podzbioru dla {0}, *BLANK w przypadku braku opisu", - "objectBrowser.uploadAndReplaceMemberAsFile.errorMessage": "Błąd podczas przesyłania treści do podzbioru! {0}", - "objectBrowser.uploadAndReplaceMemberAsFile.infoMessage": "Podzbiór został wysłany.", - "offline": "Nieaktywny", - "online": "Online", - "open":"Open", - "open.service.configuration": "Otwórz konfigurację", - "overview": "Przeglądaj", - "overwrite": "Nadpisz", - "overwrite_all": "Nadpisz wszystko", - "owner": "Właściciel", - "password": "Hasło", - "privateKey": "Klucz prywatny", - "ProfilesView.deleteConnectionProfile.warningMessage": "Czy na pewno chcesz usunąć profil \"{0}\"?", - "ProfilesView.loadCommandProfile.errorMessage": "Nie udało się pobrać listy bibliotek dla komendy: {0}", - "ProfilesView.loadCommandProfile.infoMessage": "Przełączono na profil \"{0}\".", - "ProfilesView.loadCommandProfile.warningMessage": "Nie udało się pobrać listy bibliotek dla komendy. Funkcja nie została zainstalowana.", - "ProfilesView.loadConnectionProfile.infoMessage": "Przełączono na profil \"{0}\".", - "ProfilesView.saveConnectionProfile.infoMessage": "Zapisano bieżące ustawienia w profilu \"{0}\".", - "ProfilesView.saveConnectionProfile.prompt": "Nazwa profilu", - "ProfilesView.setToDefault.detail": "Spowoduje to zresetowanie listy bibliotek użytkownika, katalogu roboczego i zmiennych niestandardowych do wartości domyślnych.", - "ProfilesView.setToDefault.infoMessage": "Przywróć ustawienia domyślne", - "remote.certificate.not.found": "Nie znaleziono zdalnego certyfikatu", - "remote.certificate.not.found.detail": "Nie znaleziono {0} w obszarze {1}", - "restart": "Uruchom ponownie", - "Retry": "Ponów", - "sandbox.alreadyConnected": "Ta instancja Visual Studio Code jest już połączone z serwerem.", - "sandbox.connected.modal.detail": "Używasz tego systemu na własne ryzyko. Nie udostępniaj żadnych wrażliwych ani prywatnych informacji.", - "sandbox.connected.modal.title": "Dziękujemy za wypróbowanie Code for IBM i Sandbox!", - "sandbox.failedToConnect.text": "Nie udało się połączyć z {0} jako {1}", - "sandbox.failedToConnect.title": "Nie udało się połączyć", - "sandbox.input.password.prompt": "Wprowadź hasło do {0}@{1}", - "sandbox.input.password.title": "Hasło do serwera", - "sandbox.input.user.prompt": "Wprowadź nazwę użytkownika dla {0}", - "sandbox.input.user.title": "Użytkownik serwera", - "sandbox.noconnection.modal.detail": "Przepraszamy, ale sandbox jest teraz offline. Spróbuj ponownie innym razem.", - "sandbox.noconnection.modal.title": "O nie! Sandbox nie działa.", - "sandbox.noPassword": "Połączenie z {0} zostało zakończone, ponieważ nie podano hasła.", - "save": "Zapisz", - "searchView.find.message":"{0} file(s) named '{1}'", - "searchView.search.message":"{0} file(s) contain(s) '{1}'", - "service.certificate.exists": "Istnieje certyfikat usługi zdalnej", - "shortcut": "skrót", - "size": "Rozmiar", - "skip": "Pomiń", - "skip_all": "Pomiń wszystko", - "start": "Uruchom", - "START_TIME": "Czas uruchomienia", - "start.debug.server.task": "Uruchamiam serwer debugowania...", - "start.debug.service.failed": "Nie udało się uruchomić usługi debugowania: {0}", - "start.debug.service.succeeded": "Usługa debugowania została uruchomiona.", - "start.debug.service.task": "Uruchamiam usługę debugowania...", - "status": "Status", - "stop": "Stop", - "stop.debug.server.task": "Zatrzymywanie serwera debugowania...", - "stop.debug.service.failed": "Nie udało się zatrzymać usługi debugowania: {0}", - "stop.debug.service.succeeded": "Usługa debugowania została zatrzymana.", - "stop.debug.service.task": "Zatrzymywanie usługi debugowania...", - "stored": "przechowywane", - "strdbgsvr.failed": "Nie udało się uruchomić serwera debugowania: {0}", - "strdbgsvr.succeeded": "Uruchomiono serwer debugowania.", - "streamfile": "plik strumieniowy", - "SUBSYSTEM": "Podsystem", - "text": "Tekst", - "type": "Typ", - "USER_DIRECTORY": "Katalog użytkownika", - "username": "Nazwa użytkownika", - "Yes": "Tak", - "debug.service.config.incomplete": "Incomplete configuration", - "debug.service.config.incomplete.detail": "Certificate needs to be regenerated" -} \ No newline at end of file diff --git a/src/locale/index.ts b/src/locale/index.ts deleted file mode 100644 index 15da9d5c5..000000000 --- a/src/locale/index.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { env } from "vscode"; -import { GlobalConfiguration } from "../api/Configuration"; -import da from "./ids/da.json"; -import en from "./ids/en.json"; -import no from "./ids/no.json"; -import fr from "./ids/fr.json"; -import de from "./ids/de.json"; -import pl from "./ids/pl.json"; - -export type Locale = {[id: string]: string}; - -const locales: {[locale: string]: Locale} = { - en, - da, - de, - no, - pl, - fr -} - -let currentLocale = String(env.language); -updateLocale(); - -export function updateLocale() { - const localeSetting = GlobalConfiguration.get(`locale`) as string; - const vscLocale = env.language; - - currentLocale = (localeSetting === `inherit` ? vscLocale : localeSetting); -} - -export function t(id: string, ...values: any[]) { - // Check for the id in their local locale first, then default to en, then just show the id. - let text = locales[currentLocale] && locales[currentLocale][id] ? locales[currentLocale][id] : (locales.en[id] || `!${id}!`); - - if (values.length > 0) { - values.forEach((value, i) => { - text = text.replaceAll(`{${i}}`, typeof value === 'string' ? value : String(value)); - }); - } - - return text; -} \ No newline at end of file diff --git a/src/sandbox.ts b/src/sandbox.ts index b7e5dd380..43804efd3 100644 --- a/src/sandbox.ts +++ b/src/sandbox.ts @@ -1,10 +1,9 @@ import { env } from "process"; import querystring from "querystring"; -import { commands, ExtensionContext, Uri, window } from "vscode"; -import { ConnectionConfiguration, ConnectionManager, GlobalConfiguration } from "./api/Configuration"; +import { commands, ExtensionContext, l10n, Uri, window } from "vscode"; +import { ConnectionConfiguration, ConnectionManager } from "./api/Configuration"; import { Tools } from "./api/Tools"; import { instance } from "./instantiate"; -import { t } from "./locale"; import { ConnectionData } from "./typings"; export async function registerUriHandler(context: ExtensionContext) { @@ -26,10 +25,13 @@ export async function registerUriHandler(context: ExtensionContext) { let pass: string | string[] | undefined = queryData.pass; if (server) { - if (!user) { + if(user && Array.isArray(user)){ + user = user[0]; + } + else if (!user) { user = await window.showInputBox({ - title: t(`sandbox.input.user.title`), - prompt: t(`sandbox.input.user.prompt`, server) + title: l10n.t(`User for server`), + prompt: l10n.t(`Enter username for {0}`, server) }); } @@ -38,8 +40,8 @@ export async function registerUriHandler(context: ExtensionContext) { } else { pass = await window.showInputBox({ password: true, - title: t(`sandbox.input.password.title`), - prompt: t(`sandbox.input.password.prompt`, String(user), server) + title: l10n.t(`Password for server`), + prompt: l10n.t(`Enter password for {0}@{1}`, String(user), server) }); } @@ -71,20 +73,20 @@ export async function registerUriHandler(context: ExtensionContext) { } } else { - window.showInformationMessage(t(`sandbox.failedToConnect.title`), { + window.showInformationMessage(l10n.t(`Failed to connect`), { modal: true, - detail: t(`sandbox.failedToConnect`, server, user) + detail: l10n.t("Failed to connect to {0} as {1}", server, user) }); } } else { - window.showErrorMessage(t(`sandbox.noPassword`, server)); + window.showErrorMessage(l10n.t(`Connection to {0} ended as no password was provided.`, server)); } } } else { - window.showInformationMessage(t(`sandbox.failedToConnect.title`), { + window.showInformationMessage(l10n.t(`Failed to connect`), { modal: true, - detail: t(`sandbox.alreadyConnected`) + detail: l10n.t(`This Visual Studio Code instance is already connected to a server.`) }); } @@ -147,9 +149,9 @@ export async function handleStartup() { if (env.VSCODE_IBMI_SANDBOX) { console.log(`Sandbox mode enabled.`); - window.showInformationMessage(t(`sandbox.connected.modal.title`), { + window.showInformationMessage(l10n.t(`Thanks for trying the Code for IBM i Sandbox!`), { modal: true, - detail: t(`sandbox.connected.modal.detail`) + detail: l10n.t(`You are using this system at your own risk. Do not share any sensitive or private information.`) }); } @@ -159,9 +161,9 @@ export async function handleStartup() { await initialSetup(connectionData.username); } else { - window.showInformationMessage(t(`sandbox.noconnection.modal.title`), { + window.showInformationMessage(l10n.t(`Oh no! The sandbox is down.`), { modal: true, - detail: t(`sandbox.noconnection.modal.detail`) + detail: l10n.t(`Sorry, but the sandbox is offline right now. Try again another time.`) }); } } diff --git a/src/views/ConnectionBrowser.ts b/src/views/ConnectionBrowser.ts index 41d3ea0c8..090cc0503 100644 --- a/src/views/ConnectionBrowser.ts +++ b/src/views/ConnectionBrowser.ts @@ -4,7 +4,6 @@ import { ConnectionData, Server } from '../typings'; import { ConnectionConfiguration, ConnectionManager, GlobalConfiguration } from '../api/Configuration'; import { GlobalStorage } from '../api/Storage'; import { instance } from '../instantiate'; -import { t } from "../locale"; import { Login } from '../webviews/login'; type CopyOperationItem = { @@ -44,9 +43,9 @@ export function initializeConnectionBrowser(context: vscode.ExtensionContext) { if (!name) { const lastConnections = GlobalStorage.get().getLastConnections() || []; if (lastConnections && lastConnections.length) { - name = (await vscode.window.showQuickPick([{ kind: vscode.QuickPickItemKind.Separator, label: t(`connectionBrowser.connectTo.lastConnection`) }, - ...lastConnections.map(lc => ({ label: lc.name, description: t(`connectionBrowser.connectTo.lastUsed`, new Date(lc.timestamp).toLocaleString()) }))], - { title: t(`connectionBrowser.connectTo.title`) } + name = (await vscode.window.showQuickPick([{ kind: vscode.QuickPickItemKind.Separator, label: vscode.l10n.t(`Last connection`) }, + ...lastConnections.map(lc => ({ label: lc.name, description: vscode.l10n.t(`Last used: {0}`, new Date(lc.timestamp).toLocaleString()) }))], + { title: vscode.l10n.t(`Last IBM i connections`) } ))?.label; } } @@ -59,7 +58,7 @@ export function initializeConnectionBrowser(context: vscode.ExtensionContext) { await Login.LoginToPrevious(name.name, context, reloadServerSettings); break; default: - vscode.window.showErrorMessage(t(`connectionBrowser.connectTo.error`)); + vscode.window.showErrorMessage(vscode.l10n.t(`Use the Server Browser to select which system to connect to.`)); break; } @@ -82,13 +81,13 @@ export function initializeConnectionBrowser(context: vscode.ExtensionContext) { if (!connectionBrowser.attemptingConnection && server) { const existingConnections = ConnectionManager.getAll(); const newName = await vscode.window.showInputBox({ - prompt: t(`connectionBrowser.renameConnection.prompt`, server.name), + prompt: vscode.l10n.t(`Rename connection "{0}"`, server.name), value: server.name, validateInput: newName => { if (newName === server.name) { - return t(`connectionBrowser.renameConnection.invalid.input`); + return vscode.l10n.t(`New connection name must be different from its current name`); } else if (existingConnections.findIndex(item => item.name === newName) !== -1) { - return t(`connectionBrowser.renameConnection.alreadyExists`, newName); + return vscode.l10n.t(`Connection "{0}" already exists.`, newName); } } }); @@ -97,14 +96,14 @@ export function initializeConnectionBrowser(context: vscode.ExtensionContext) { try { // First rename the connection details let { index, data } = ConnectionManager.getByName(server.name)! - if (index === -1) throw (t(`connectionBrowser.renameConnection.noConnectionFound`, server.name)); + if (index === -1) throw (vscode.l10n.t(`No connection named "{0}" was found`, server.name)); data.name = newName; await ConnectionManager.updateByIndex(index, data); // Then rename the connection settings const connectionSettings = GlobalConfiguration.get(`connectionSettings`) || []; index = connectionSettings.findIndex(connection => connection.name === server.name); - if (index === -1) throw (t(`connectionBrowser.renameConnection.noConnParmsFound`, server.name)); + if (index === -1) throw (vscode.l10n.t(`No parameters for connection "{0}" was found`, server.name)); connectionSettings[index].name = newName; // Then get the cached connection settings @@ -127,7 +126,7 @@ export function initializeConnectionBrowser(context: vscode.ExtensionContext) { connectionBrowser.refresh(); } catch (e: any) { vscode.window.showErrorMessage( - t(`connectionBrowser.renameConnection.error`, server.name, e.message || String(e))); + vscode.l10n.t(`Error renaming connection "{0}"! {1}`, server.name, e.message || String(e))); } } } @@ -151,9 +150,9 @@ export function initializeConnectionBrowser(context: vscode.ExtensionContext) { } if (!connectionBrowser.attemptingConnection && toBeDeleted.length) { - const message = toBeDeleted.length === 1 ? t(`connectionBrowser.deleteConnection.warning`, toBeDeleted[0].name) : t(`connectionBrowser.deleteConnection.multiple.warning`, toBeDeleted.length); + const message = toBeDeleted.length === 1 ? vscode.l10n.t(`Are you sure you want to delete the connection "{0}"?`, toBeDeleted[0].name) : vscode.l10n.t(`Are you sure you want to delete the connection "{0}"?`, toBeDeleted[0].name); const detail = toBeDeleted.length === 1 ? undefined : toBeDeleted.map(server => `- ${server.name}`).join("\n"); - if (await vscode.window.showWarningMessage(message, { modal: true, detail }, t(`Yes`))) { + if (await vscode.window.showWarningMessage(message, { modal: true, detail }, vscode.l10n.t(`Yes`))) { for (const server of toBeDeleted) { // First remove the connection details await ConnectionManager.deleteByName(server.name); @@ -185,27 +184,27 @@ export function initializeConnectionBrowser(context: vscode.ExtensionContext) { let copyOperations; do { newConnectionName = await vscode.window.showInputBox({ - prompt: t("connectionBrowser.copyConnection.prompt", server.name), - placeHolder: t('connectionBrowser.copyConnection.placeholder'), + prompt: vscode.l10n.t(`Copy connection "{0}"`, server.name), + placeHolder: vscode.l10n.t(`New connection name`), value: newConnectionName, validateInput: value => ConnectionManager.getByName(value) ? - t('connectionBrowser.copyConnection.already.exists', value) : + vscode.l10n.t(`Connection "{0}" already exists`, value) : undefined }); if (newConnectionName) { copyOperations = (await vscode.window.showQuickPick([ - { label: t('connectionBrowser.copyConnection.select.home.directory'), picked: true, copy: (from, to) => to.homeDirectory = from.homeDirectory }, - { label: t('connectionBrowser.copyConnection.select.library.list'), picked: true, copy: (from, to) => { to.libraryList = from.libraryList; to.currentLibrary = from.currentLibrary; } }, - { label: t('connectionBrowser.copyConnection.select.object.filters'), picked: true, copy: (from, to) => to.objectFilters = from.objectFilters }, - { label: t('connectionBrowser.copyConnection.select.ifs.shortcuts'), picked: true, copy: (from, to) => to.ifsShortcuts = from.ifsShortcuts }, - { label: t('connectionBrowser.copyConnection.select.custom.variables'), picked: true, copy: (from, to) => to.customVariables = from.customVariables }, - { label: t('connectionBrowser.copyConnection.select.command.profiles'), picked: true, copy: (from, to) => to.commandProfiles = from.commandProfiles }, - { label: t('connectionBrowser.copyConnection.select.connection.profiles'), picked: true, copy: (from, to) => to.connectionProfiles = from.connectionProfiles } + { label: vscode.l10n.t(`Home directory`), picked: true, copy: (from, to) => to.homeDirectory = from.homeDirectory }, + { label: vscode.l10n.t(`Library list`), picked: true, copy: (from, to) => { to.libraryList = from.libraryList; to.currentLibrary = from.currentLibrary; } }, + { label: vscode.l10n.t(`Object filters`), picked: true, copy: (from, to) => to.objectFilters = from.objectFilters }, + { label: vscode.l10n.t(`IFS shortcuts`), picked: true, copy: (from, to) => to.ifsShortcuts = from.ifsShortcuts }, + { label: vscode.l10n.t(`Custom variables`), picked: true, copy: (from, to) => to.customVariables = from.customVariables }, + { label: vscode.l10n.t(`Command profiles`), picked: true, copy: (from, to) => to.commandProfiles = from.commandProfiles }, + { label: vscode.l10n.t(`Connection profiles`), picked: true, copy: (from, to) => to.connectionProfiles = from.connectionProfiles } ], { canPickMany: true, - title: t('connectionBrowser.copyConnection.select.settings', server.name, newConnectionName) + title: vscode.l10n.t(`Select the settings to copy from "{0}" to "{1}"`, server.name, newConnectionName) }))?.map(picked => picked.copy); } } while (newConnectionName && !copyOperations); @@ -274,12 +273,12 @@ class ServerItem extends vscode.TreeItem implements Server { this.contextValue = `server`; this.description = `${connection.username}@${connection.host}`; - this.tooltip = lastConnected ? t(`connectionBrowser.ServerItem.tooltip`) : ""; + this.tooltip = lastConnected ? vscode.l10n.t(` (previous connection)`) : ""; this.iconPath = new vscode.ThemeIcon(readOnly ? `lock` : `remote`, lastConnected ? new vscode.ThemeColor("notificationsWarningIcon.foreground") : undefined); this.command = { command: `code-for-ibmi.connectTo`, - title: t(`connectionBrowser.ServerItem.title`), + title: vscode.l10n.t(`Connect`), arguments: [this] }; } diff --git a/src/views/LibraryListView.ts b/src/views/LibraryListView.ts index 34dfccc7b..69fa679aa 100644 --- a/src/views/LibraryListView.ts +++ b/src/views/LibraryListView.ts @@ -1,7 +1,6 @@ -import vscode, { commands } from "vscode"; +import vscode, { commands, l10n } from "vscode"; import { ConnectionConfiguration, GlobalConfiguration } from "../api/Configuration"; import { instance } from "../instantiate"; -import { t } from "../locale"; import { IBMiObject, WithLibrary } from "../typings"; export class LibraryListProvider implements vscode.TreeDataProvider { @@ -27,17 +26,17 @@ export class LibraryListProvider implements vscode.TreeDataProvider ({ label: lib }))).concat(clearListArray); - quickPick.placeholder = t(`LibraryListView.changeCurrentLibrary.placeholder`); - quickPick.title = t(`LibraryListView.changeCurrentLibrary.title`); + quickPick.placeholder = l10n.t(`Filter or new library to set as current library`); + quickPick.title = l10n.t(`Change current library`); quickPick.onDidChangeValue(() => { if (quickPick.value === ``) { @@ -55,7 +54,7 @@ export class LibraryListProvider implements vscode.TreeDataProvider ({ label: lib })); - vscode.window.showInformationMessage(t(`clearedList`)); + vscode.window.showInformationMessage(l10n.t(`Cleared list.`)); quickPick.show(); } else { if (newLibrary !== currentLibrary) { @@ -65,7 +64,7 @@ export class LibraryListProvider implements vscode.TreeDataProvider connection.upperCaseName(lib)).join(`, `) }); @@ -103,7 +102,7 @@ export class LibraryListProvider implements vscode.TreeDataProvider 0) { newLibraryList = newLibraryList.filter(lib => !badLibs.includes(lib)); - vscode.window.showWarningMessage(t(`LibraryListView.changeUserLibraryList.removedLibs`, badLibs.join(`, `))); + vscode.window.showWarningMessage(l10n.t(`The following libraries were removed from the updated library list as they are invalid: {0}`, badLibs.join(', '))); } } @@ -114,7 +113,7 @@ export class LibraryListProvider implements vscode.TreeDataProvider { - vscode.commands.executeCommand(`code-for-ibmi.addToLibraryList`, { library: await vscode.window.showInputBox({ prompt: t(`LibraryListView.addToLibraryList.prompt`) }) }); + vscode.commands.executeCommand(`code-for-ibmi.addToLibraryList`, { library: await vscode.window.showInputBox({ prompt: l10n.t(`Library to add`) }) }); }), vscode.commands.registerCommand(`code-for-ibmi.addToLibraryList`, async (newLibrary: WithLibrary) => { @@ -125,14 +124,14 @@ export class LibraryListProvider implements vscode.TreeDataProvider 10) { - vscode.window.showErrorMessage(t(`LibraryListView.addToLibraryList.tooLong`)); + vscode.window.showErrorMessage(l10n.t(`Library is too long.`)); return; } let libraryList = [...config.libraryList]; if (libraryList.includes(addingLib)) { - vscode.window.showWarningMessage(t(`LibraryListView.addToLibraryList.alreadyInList`, addingLib)); + vscode.window.showWarningMessage(l10n.t(`Library {0} was already in the library list.`, addingLib)); return; } @@ -140,17 +139,17 @@ export class LibraryListProvider implements vscode.TreeDataProvider 0) { libraryList = libraryList.filter(lib => !badLibs.includes(lib)); - vscode.window.showWarningMessage(t(`LibraryListView.addToLibraryList.invalidLib`, badLibs.join(`, `))); + vscode.window.showWarningMessage(l10n.t(`Library {0} does not exist.`, badLibs.join(', '))); } else { libraryList.push(addingLib); - vscode.window.showInformationMessage(t(`LibraryListView.addToLibraryList.addedLib`, addingLib)); + vscode.window.showInformationMessage(l10n.t(`Library {0} was added to the library list.`, addingLib)); } badLibs = await content.validateLibraryList(libraryList); if (badLibs.length > 0) { libraryList = libraryList.filter(lib => !badLibs.includes(lib)); - vscode.window.showWarningMessage(t(`LibraryListView.addToLibraryList.removedLibs`, badLibs.join(`, `))); + vscode.window.showWarningMessage(l10n.t(`The following libraries were removed from the updated library list as they are invalid: {0}`, badLibs.join(', '))); } config.libraryList = libraryList; @@ -173,7 +172,7 @@ export class LibraryListProvider implements vscode.TreeDataProvider 0) { libraryList = libraryList.filter(lib => !badLibs.includes(lib)); - vscode.window.showWarningMessage(t(`LibraryListView.cleanupLibraryList.removedLibs`, badLibs.join(`, `))); + vscode.window.showWarningMessage(l10n.t(`The following libraries were removed from the updated library list as they are invalid: {0}`, badLibs.join(', '))); config.libraryList = libraryList; await this.updateConfig(config); } else { - vscode.window.showInformationMessage(t(`LibraryListView.cleanupLibraryList.validated`)); + vscode.window.showInformationMessage(l10n.t(`Library list were validated without any errors.`)); } } }), @@ -298,7 +297,7 @@ class LibraryListNode extends vscode.TreeItem implements WithLibrary { this.contextValue = context; this.description = - ((context === `currentLibrary` ? `${t(`currentLibrary`)}` : ``) + ((context === `currentLibrary` ? `${l10n.t(`(current library)`)}` : ``) + (object.text !== `` && showDescInLibList ? ` ${object.text}` : ``) + (object.attribute !== `` ? ` (*${object.attribute})` : ``)).trim(); this.tooltip = instance.getContent()?.objectToToolTip([object.library, object.name].join(`/`), object); @@ -314,7 +313,7 @@ async function changeCurrentLibrary(library: string) { if (commandResult.code === 0) { const currentLibrary = connection.upperCaseName(config.currentLibrary); config.currentLibrary = library; - vscode.window.showInformationMessage(t(`LibraryListView.changeCurrentLibrary.changedCurrent`, library)); + vscode.window.showInformationMessage(l10n.t(`Changed current library to {0}.`, library)); storage.getPreviousCurLibs(); const previousCurLibs = storage.getPreviousCurLibs().filter(lib => lib !== library); previousCurLibs.splice(0, 0, currentLibrary); @@ -322,7 +321,7 @@ async function changeCurrentLibrary(library: string) { await ConnectionConfiguration.update(config); return true; } else { - vscode.window.showErrorMessage(t(`LibraryListView.setCurrentLibrary.failed`, library, commandResult.stderr)); + vscode.window.showErrorMessage(l10n.t(`Failed to set {0} as current library: {1}`, library, commandResult.stderr)); return false; } } diff --git a/src/views/ProfilesView.ts b/src/views/ProfilesView.ts index c77005c93..ef4445d1c 100644 --- a/src/views/ProfilesView.ts +++ b/src/views/ProfilesView.ts @@ -1,9 +1,8 @@ -import vscode, { window } from 'vscode'; +import vscode, { l10n, window } from 'vscode'; import { ConnectionConfiguration } from '../api/Configuration'; import { GetNewLibl } from '../components/getNewLibl'; import { instance } from '../instantiate'; -import { t } from "../locale"; import { Profile } from '../typings'; import { CommandProfile } from '../webviews/commandProfile'; @@ -31,7 +30,7 @@ export class ProfilesView { const savedProfileName = profileNode?.profile || await vscode.window.showInputBox({ value: currentProfile, - prompt: t(`ProfilesView.saveConnectionProfile.prompt`) + prompt: l10n.t(`Name of profile`) }); if (savedProfileName) { @@ -49,7 +48,7 @@ export class ProfilesView { ]); this.refresh(); - vscode.window.showInformationMessage(t(`ProfilesView.saveConnectionProfile.infoMessage`, savedProfileName)); + vscode.window.showInformationMessage(l10n.t(`Saved current settings to profile "{0}".`, savedProfileName)); } } }), @@ -60,8 +59,8 @@ export class ProfilesView { const currentProfiles = config.connectionProfiles; const chosenProfile = await getOrPickAvailableProfile(currentProfiles, profileNode); if (chosenProfile) { - vscode.window.showWarningMessage(t(`ProfilesView.deleteConnectionProfile.warningMessage`, chosenProfile.name), t(`Yes`), t(`No`)).then(async result => { - if (result === t(`Yes`)) { + vscode.window.showWarningMessage(l10n.t(`Are you sure you want to delete the "{0}" profile?`, chosenProfile.name), l10n.t(`Are you sure you want to delete the "{0}" profile?`, chosenProfile.name), l10n.t(`Are you sure you want to delete the "{0}" profile?`, chosenProfile.name)).then(async result => { + if (result === l10n.t(`Yes`)) { currentProfiles.splice(currentProfiles.findIndex(profile => profile === chosenProfile), 1); config.connectionProfiles = currentProfiles; await ConnectionConfiguration.update(config) @@ -89,7 +88,7 @@ export class ProfilesView { storage.setLastProfile(chosenProfile.name) ]); - vscode.window.showInformationMessage(t(`ProfilesView.loadConnectionProfile.infoMessage`, chosenProfile.name)); + vscode.window.showInformationMessage(l10n.t(`Switched to profile "{0}".`, chosenProfile.name)); this.refresh(); } } @@ -134,14 +133,14 @@ export class ProfilesView { vscode.commands.executeCommand(`code-for-ibmi.refreshLibraryListView`), ]); - vscode.window.showInformationMessage(t(`ProfilesView.loadCommandProfile.infoMessage`, storedProfile.name)); + vscode.window.showInformationMessage(l10n.t(`Switched to profile "{0}".`, storedProfile.name)); this.refresh(); } else { - window.showWarningMessage(t(`ProfilesView.loadCommandProfile.warningMessage`)); + window.showWarningMessage(l10n.t(`Failed to get library list from command. Feature not installed.`)); } } catch (e: any) { - window.showErrorMessage(t(`ProfilesView.loadCommandProfile.errorMessage`, e.message)); + window.showErrorMessage(l10n.t(`Failed to get library list from command: {0}`, e.message)); } } } @@ -153,11 +152,11 @@ export class ProfilesView { const storage = instance.getStorage(); if (config && storage) { - window.showInformationMessage(t(`ProfilesView.setToDefault.infoMessage`), { - detail: t(`ProfilesView.setToDefault.detail`), + window.showInformationMessage(l10n.t(`Reset to default`), { + detail: l10n.t(`This will reset the User Library List, working directory and Custom Variables back to the defaults.`), modal: true - }, t(`Continue`)).then(async result => { - if (result === t(`Continue`)) { + }, l10n.t(`Continue`)).then(async result => { + if (result === l10n.t(`Continue`)) { const defaultName = `Default`; assignProfile({ diff --git a/src/views/debugView.ts b/src/views/debugView.ts index 0a984ff05..42b7c2d8f 100644 --- a/src/views/debugView.ts +++ b/src/views/debugView.ts @@ -1,10 +1,9 @@ import vscode from "vscode"; import { Tools } from "../api/Tools"; -import { checkClientCertificate, debugKeyFileExists, remoteCertificatesExists } from "../api/debug/certificates"; +import { checkClientCertificate, debugKeyFileExists, remoteCertificatesExists, SERVICE_CERTIFICATE } from "../api/debug/certificates"; import { DebugConfiguration, getDebugServiceDetails } from "../api/debug/config"; import { DebugJob, getDebugServerJob, getDebugServiceJob, isDebugEngineRunning, readActiveJob, readJVMInfo, startServer, startService, stopServer, stopService } from "../api/debug/server"; import { instance } from "../instantiate"; -import { t } from "../locale"; import { BrowserItem } from "../typings"; const title = "IBM i debugger"; @@ -31,7 +30,7 @@ export function initializeDebugBrowser(context: vscode.ExtensionContext) { const updateDebugBrowser = async () => { if (instance.getConnection()) { debugTreeViewer.title = `${title} ${(await getDebugServiceDetails()).version}` - debugTreeViewer.description = await isDebugEngineRunning() ? t("online") : t("offline"); + debugTreeViewer.description = await isDebugEngineRunning() ? vscode.l10n.t(`Online`) : vscode.l10n.t(`Online`); } else { debugTreeViewer.title = title; @@ -93,7 +92,7 @@ class DebugBrowser implements vscode.TreeDataProvider { return Promise.all([ getDebugServerJob().then(debugJob => new DebugJobItem("server", - t("debug.server"), + vscode.l10n.t(`Debug Server`), { startFunction: startServer, stopFunction: stopServer, @@ -102,7 +101,7 @@ class DebugBrowser implements vscode.TreeDataProvider { ), getDebugServiceJob().then(debugJob => new DebugJobItem("service", - t("debug.service"), { + vscode.l10n.t(`Debug Service`), { startFunction: () => startService(connection), stopFunction: () => stopService(connection), debugJob, @@ -121,10 +120,10 @@ class DebugBrowser implements vscode.TreeDataProvider { async resolveTreeItem(item: vscode.TreeItem, element: BrowserItem, token: vscode.CancellationToken) { const connection = instance.getConnection(); if (connection && element.tooltip === undefined && element instanceof DebugJobItem && element.parameters.debugJob) { - element.tooltip = new vscode.MarkdownString(`${t(`listening.on.port${element.parameters.debugJob.ports.length === 1 ? '' : 's'}`)} ${element.parameters.debugJob.ports.join(", ")}\n\n`); + element.tooltip = new vscode.MarkdownString(`${vscode.l10n.t("Listening on port(s)")} ${element.parameters.debugJob.ports.join(", ")}\n\n`); const activeJob = await readActiveJob(connection, element.parameters.debugJob); if (activeJob) { - const jobToMarkDown = (job: Tools.DB2Row | string) => typeof job === "string" ? job : Object.entries(job).filter(([key, value]) => value !== null).map(([key, value]) => `- ${t(key)}: ${value}`).join("\n"); + const jobToMarkDown = (job: Tools.DB2Row | string) => typeof job === "string" ? job : Object.entries(job).filter(([key, value]) => value !== null).map(([key, value]) => `- ${vscode.l10n.t(key)}: ${value}`).join("\n"); element.tooltip.appendMarkdown(jobToMarkDown(activeJob)); if (element.type === "service") { element.tooltip.appendMarkdown("\n\n"); @@ -165,16 +164,16 @@ class DebugJobItem extends DebugItem { cantRun = true; problem = { context: "noremote", - label: t('debug.service.config.incomplete'), - detail: t('debug.service.config.incomplete.detail', "debug_service.pfx", parameters.certificates.remoteCertificatePath) + label: vscode.l10n.t(`Incomplete configuration`), + detail: vscode.l10n.t(`Certificate needs to be regenerated`, SERVICE_CERTIFICATE, parameters.certificates.remoteCertificatePath!) } } else if (!parameters.certificates.remoteCertificate) { cantRun = true; problem = { context: "noremote", - label: t('remote.certificate.not.found'), - detail: t('remote.certificate.not.found.detail', "debug_service.pfx", parameters.certificates.remoteCertificatePath) + label: vscode.l10n.t(`Remote certificate not found`), + detail: vscode.l10n.t(`{0} not found under {1}`, SERVICE_CERTIFICATE, parameters.certificates.remoteCertificatePath!) } } else if (parameters.certificates.localCertificateIssue) { @@ -197,7 +196,7 @@ class DebugJobItem extends DebugItem { this.description = this.parameters.debugJob!.name; } else { - this.description = t("offline"); + this.description = vscode.l10n.t(`Offline`); this.tooltip = ""; } } @@ -209,11 +208,13 @@ class DebugJobItem extends DebugItem { } async start() { - return vscode.window.withProgress({ title: t(`start.debug.${this.type}.task`), location: vscode.ProgressLocation.Window }, this.parameters.startFunction); + const title = this.type === "server" ? vscode.l10n.t("Starting debug server...") : vscode.l10n.t("Starting debug service..."); + return vscode.window.withProgress({ title, location: vscode.ProgressLocation.Window }, this.parameters.startFunction); } async stop() { - return vscode.window.withProgress({ title: t(`stop.debug.${this.type}.task`), location: vscode.ProgressLocation.Window }, this.parameters.stopFunction); + const title = this.type === "server" ? vscode.l10n.t("Stopping debug server...") : vscode.l10n.t("Stopping debug service..."); + return vscode.window.withProgress({ title, location: vscode.ProgressLocation.Window }, this.parameters.stopFunction); } } diff --git a/src/views/helpView.ts b/src/views/helpView.ts index 6786b4421..858444b90 100644 --- a/src/views/helpView.ts +++ b/src/views/helpView.ts @@ -5,7 +5,6 @@ import vscode from 'vscode'; import { DebugConfiguration } from '../api/debug/config'; import IBMi from '../api/IBMi'; import { instance } from '../instantiate'; -import { t } from "../locale"; export class HelpView implements vscode.TreeDataProvider { private _onDidChangeTreeData = new vscode.EventEmitter(); @@ -29,9 +28,9 @@ export class HelpView implements vscode.TreeDataProvider { public async getChildren(): Promise { const children = [ - new HelpOpenUrlItem(`book`, t(`helpView.getStarted`), `https://codefori.github.io/docs/#/`), - new HelpOpenUrlItem(`output`, t(`helpView.officialForum`), `https://github.com/codefori/vscode-ibmi/discussions`), - new HelpOpenUrlItem(`eye`, t(`helpView.reviewIssues`), `https://github.com/codefori/vscode-ibmi/issues/`), + new HelpOpenUrlItem(`book`, vscode.l10n.t(`Get started`), `https://codefori.github.io/docs/#/`), + new HelpOpenUrlItem(`output`, vscode.l10n.t(`Open official Forum`), `https://github.com/codefori/vscode-ibmi/discussions`), + new HelpOpenUrlItem(`eye`, vscode.l10n.t(`Review Issues`), `https://github.com/codefori/vscode-ibmi/issues/`), new HelpIssueItem() ]; @@ -68,7 +67,7 @@ class HelpOpenUrlItem extends HelpItem { class HelpIssueItem extends HelpItem { constructor() { - super(`bug`, t(`helpView.reportIssue`)); + super(`bug`, vscode.l10n.t(`Report an Issue`)); this.command = { command: "code-for-ibmi.openNewIssue", @@ -79,7 +78,7 @@ class HelpIssueItem extends HelpItem { class HelpLogItem extends HelpItem { constructor() { - super(`archive`, t(`helpView.downloadLogs`)); + super(`archive`, vscode.l10n.t(`Download Logs`)); this.command = { command: "code-for-ibmi.downloadLogs", @@ -132,12 +131,12 @@ async function downloadLogs() { if (connection && config && content) { await vscode.window.withProgress({ location: vscode.ProgressLocation.Notification, - title: t(`helpView.downloadLogs.gatheringLogs`), + title: vscode.l10n.t(`Gathering logs...`), }, async () => { const codeForIBMiLog = connection.outputChannelContent; if (codeForIBMiLog !== undefined) { logs.push({ - label: t(`helpView.downloadLogs.codeForIBMiLog`), + label: vscode.l10n.t(`Code for IBM i Log`), detail: `${connection?.currentUser}@${connection?.currentHost}`, picked: true, fileName: 'CodeForIBMi.txt', @@ -151,7 +150,7 @@ async function downloadLogs() { const debugServiceLog = (await content.downloadStreamfileRaw(debugServiceLogPath)); if (debugServiceLog) { logs.push({ - label: t(`helpView.downloadLogs.debugServiceLog`), + label: vscode.l10n.t(`Debug Service Log`), detail: debugServiceLogPath, picked: true, fileName: 'DebugService.txt', @@ -165,7 +164,7 @@ async function downloadLogs() { const debugServiceEclipseInstanceLog = (await content.downloadStreamfileRaw(debugServiceEclipseInstancePath)); if (debugServiceEclipseInstanceLog) { logs.push({ - label: t(`helpView.downloadLogs.debugServiceEclipseInstanceLog`), + label: vscode.l10n.t(`Debug Service Eclipse Instance Log`), detail: debugServiceEclipseInstancePath, picked: true, fileName: 'DebugServiceEclipseInstance.txt', @@ -177,14 +176,14 @@ async function downloadLogs() { if (logs.length > 0) { const selectedLogs = await vscode.window.showQuickPick(logs, { - title: t(`helpView.downloadLogs.selectLogs`), + title: vscode.l10n.t(`Select the logs you would like to download`), canPickMany: true, matchOnDetail: true }); if (selectedLogs && selectedLogs.length > 0) { const downloadTo = await vscode.window.showOpenDialog({ - title: t(`helpView.downloadLogs.downloadTo`), + title: vscode.l10n.t(`Download To`), canSelectFolders: true, canSelectFiles: false, canSelectMany: false, @@ -210,23 +209,23 @@ async function downloadLogs() { const result = await zip.writeZipPromise(downloadLocation, { overwrite: false }); if (result) { - const result = await vscode.window.showInformationMessage(t(`helpView.downloadLogs.success`, zipFile), t(`helpView.downloadLogs.open`)); - if (result && result === t(`helpView.downloadLogs.open`)) { + const result = await vscode.window.showInformationMessage(vscode.l10n.t(`Successfully downloaded logs to {0}`, zipFile), vscode.l10n.t(`Successfully downloaded logs to {0}`, zipFile)); + if (result && result === vscode.l10n.t(`Open`)) { vscode.commands.executeCommand('revealFileInOS', vscode.Uri.file(downloadLocation)) } } else { - await vscode.window.showErrorMessage(t(`helpView.downloadLogs.failed`, zipFile)); + await vscode.window.showErrorMessage(vscode.l10n.t(`Failed to downloaded logs to {0}`, zipFile)); } - } catch (error) { - await vscode.window.showErrorMessage(t(`helpView.downloadLogs.failedMessage`, zipFile, error)); + } catch (error: any) { + await vscode.window.showErrorMessage(vscode.l10n.t(`Failed to download logs to {0}. {1}`, zipFile, error)); } } } } else { - await vscode.window.showErrorMessage(t(`helpView.downloadLogs.noLogs`)); + await vscode.window.showErrorMessage(vscode.l10n.t(`No logs to download`)); } } else { - await vscode.window.showErrorMessage(t(`helpView.downloadLogs.noConnection`)); + await vscode.window.showErrorMessage(vscode.l10n.t(`Please connect to an IBM i`)); } } diff --git a/src/views/ifsBrowser.ts b/src/views/ifsBrowser.ts index 4f44d4c27..013ca73bd 100644 --- a/src/views/ifsBrowser.ts +++ b/src/views/ifsBrowser.ts @@ -1,6 +1,6 @@ import os from "os"; import path, { dirname, extname } from "path"; -import vscode, { FileType, window } from "vscode"; +import vscode, { FileType, l10n, window } from "vscode"; import { existsSync, mkdirSync, rmdirSync } from "fs"; import { ConnectionConfiguration, GlobalConfiguration } from "../api/Configuration"; @@ -9,7 +9,6 @@ import { Search } from "../api/Search"; import { GlobalStorage } from "../api/Storage"; import { Tools } from "../api/Tools"; import { instance } from "../instantiate"; -import { t } from "../locale"; import { BrowserItem, BrowserItemParameters, FocusOptions, IFSFile, IFS_BROWSER_MIMETYPE, OBJECT_BROWSER_MIMETYPE, SearchHit, SearchResults, WithPath } from "../typings"; const URI_LIST_MIMETYPE = "text/uri-list"; @@ -190,7 +189,7 @@ class IFSShortcutItem extends IFSDirectoryItem { class ErrorItem extends BrowserItem { constructor(error: Error) { - super(t("ifsBrowser.getChildren.errorMessage")) + super(l10n.t(`Error loading objects.`)) this.description = error.message; } } @@ -235,9 +234,9 @@ class IFSBrowserDragAndDrop implements vscode.TreeDragAndDropController const dndBehavior = getDragDropBehavior(); let action: DragNDropAction | undefined; if (dndBehavior === "ask") { - const copy = t('ifsBrowser.uploadStreamfile.copy'); - const move = t('ifsBrowser.uploadStreamfile.move'); - const answer = await vscode.window.showInformationMessage(t('ifsBrowser.uploadStreamfile.ask', toDirectory.path), { modal: true }, copy, move); + const copy = l10n.t(`Copy`); + const move = l10n.t(`Move`); + const answer = await vscode.window.showInformationMessage(l10n.t(`Do you want to copy or move the selection to {0}?`, toDirectory.path), { modal: true }, copy, move); if (answer) { action = answer === copy ? "copy" : "move"; } @@ -265,7 +264,9 @@ class IFSBrowserDragAndDrop implements vscode.TreeDragAndDropController if (result.code === 0) { toDirectory.refresh(); } else { - vscode.window.showErrorMessage(t(`ifsBrowser.uploadStreamfile.${action}.failed`, toDirectory.path, result.stderr)); + const error = action === "copy" ? l10n.t("Failed to copy selection to {0}: {1}", toDirectory.path, result.stderr) : + l10n.t("Failed to move selection to {0}: {1}", toDirectory.path, result.stderr); + vscode.window.showErrorMessage(error); } } } @@ -284,11 +285,11 @@ class IFSBrowserDragAndDrop implements vscode.TreeDragAndDropController noLibList: true }); if (result.code !== 0) { - throw (t(`ifsBrowser.copyToStreamfile.failed`, toDirectory.path, result!.stderr)); + throw (l10n.t(`Error copying member(s) to {0}: {1}`, toDirectory.path, result!.stderr)); } }; - vscode.window.showInformationMessage(t(`ifsBrowser.copyToStreamfile.infoMessage`, memberUris.length, toDirectory.path)); + vscode.window.showInformationMessage(l10n.t(`{0} member(s) copied to streamfile(s) in {1}.`, memberUris.length, toDirectory.path)); toDirectory.refresh(); } catch (e: any) { vscode.window.showErrorMessage(e || e.text); @@ -325,7 +326,7 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { const homeDirectory = config.homeDirectory; const newDirectory = node?.path || await vscode.window.showInputBox({ - prompt: t(`ifsBrowser.changeWorkingDirectory.prompt`), + prompt: l10n.t(`Changing working directory`), value: homeDirectory }); @@ -333,7 +334,7 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (newDirectory && newDirectory !== homeDirectory) { config.homeDirectory = newDirectory; await ConnectionConfiguration.update(config); - vscode.window.showInformationMessage(t(`ifsBrowser.changeWorkingDirectory.message`, newDirectory)); + vscode.window.showInformationMessage(l10n.t(`Working directory changed to {0}.`, newDirectory)); } } catch (e) { console.log(e); @@ -346,7 +347,7 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { const content = instance.getContent(); if (config && content) { const newDirectory = (await vscode.window.showInputBox({ - prompt: t(`ifsBrowser.addIFSShortcut.prompt`), + prompt: l10n.t(`Path to IFS directory`), value: node ? node.path : undefined }))?.trim(); @@ -354,7 +355,7 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (newDirectory) { const shortcuts = config.ifsShortcuts; if (await content.isDirectory(newDirectory) !== true) { - throw (t(`ifsBrowser.addIFSShortcut.error`, newDirectory)); + throw (l10n.t(`{0} is not a directory.`, newDirectory)); } else if (!shortcuts.includes(newDirectory)) { shortcuts.push(newDirectory); config.ifsShortcuts = shortcuts; @@ -367,8 +368,8 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { } } } - } catch (e) { - vscode.window.showErrorMessage(t(`ifsBrowser.addIFSShortcut.errorMessage`, e)); + } catch (e: any) { + vscode.window.showErrorMessage(l10n.t(`Error creating IFS shortcut! {0}`, e)); } } }), @@ -378,7 +379,7 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (config) { const shortcuts = config.ifsShortcuts; const removeDir = (node.path || (await vscode.window.showQuickPick(shortcuts, { - placeHolder: t(`ifsBrowser.removeIFSShortcut.placeHolder`), + placeHolder: l10n.t(`Select IFS shortcut to remove`), })))?.trim(); try { @@ -427,7 +428,7 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { const value = `${node?.path || config.homeDirectory}/`; const selectStart = value.length + 1; const fullName = await vscode.window.showInputBox({ - prompt: t(`ifsBrowser.createDirectory.prompt`), + prompt: l10n.t(`Path of new folder`), value: value, valueSelection: [selectStart, selectStart] }); @@ -440,8 +441,8 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { ifsBrowser.refresh(node); } - } catch (e) { - vscode.window.showErrorMessage(t(`ifsBrowser.createDirectory.errorMessage`, e)); + } catch (e: any) { + vscode.window.showErrorMessage(l10n.t(`Error creating new directory! {0}`, e)); } } } @@ -454,14 +455,14 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { const value = `${node?.path || config.homeDirectory}/`; const selectStart = value.length + 1; const fullName = await vscode.window.showInputBox({ - prompt: t(`ifsBrowser.createStreamfile.prompt`), + prompt: l10n.t(`Name of new streamfile`), value: value, valueSelection: [selectStart, selectStart] }); if (fullName) { try { - vscode.window.showInformationMessage(t(`ifsBrowser.createStreamfile.infoMessage`, fullName)); + vscode.window.showInformationMessage(l10n.t(`Creating streamfile {0}.`, fullName)); await content.createStreamFile(fullName); vscode.commands.executeCommand(`code-for-ibmi.openEditable`, fullName); if (GlobalConfiguration.get(`autoRefresh`)) { @@ -470,8 +471,8 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { else { throw new Error("") } - } catch (e) { - vscode.window.showErrorMessage(t(`ifsBrowser.createStreamfile.errorMessage`, e)); + } catch (e: any) { + vscode.window.showErrorMessage(l10n.t(`Error creating new streamfile! {0}`, e)); } } } @@ -505,19 +506,19 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (filesToUpload.length || directoriesToUpload.length) { await vscode.window.withProgress({ location: vscode.ProgressLocation.Notification, - title: t('ifsBrowser.uploadStreamfile.process.uploading'), + title: l10n.t(`Upload`), cancellable: false }, async (progress) => { try { if (filesToUpload.length) { - progress.report({ message: t('ifsBrowser.uploadStreamfile.process.uploading.files', filesToUpload.length) }); + progress.report({ message: l10n.t(`sending {0} file(s)...`, filesToUpload.length) }); await connection.uploadFiles(filesToUpload, { concurrency: 5 }); } if (directoriesToUpload.length) { for (const directory of directoriesToUpload) { const name = path.basename(directory.fsPath); - progress.report({ message: t('ifsBrowser.uploadStreamfile.process.uploading.directory', name) }) + progress.report({ message: l10n.t(`sending {0} directory...`, name) }) await connection.uploadDirectory(directory, path.posix.join(root, name), { concurrency: 5 }) } } @@ -525,14 +526,14 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (GlobalConfiguration.get(`autoRefresh`)) { ifsBrowser.refresh(node); } - vscode.window.showInformationMessage(t(`ifsBrowser.uploadStreamfile.uploadedFiles`)); - } catch (err) { - vscode.window.showErrorMessage(t(`ifsBrowser.uploadStreamfile.errorMessage`, err)); + vscode.window.showInformationMessage(l10n.t(`Upload completed.`)); + } catch (err: any) { + vscode.window.showErrorMessage(l10n.t(`Error uploading files! {0}`, err)); } }); } else { - vscode.window.showInformationMessage(t(`ifsBrowser.uploadStreamfile.noFilesSelected`)); + vscode.window.showInformationMessage(l10n.t(`No files or folders selected for upload.`)); } } }), @@ -551,20 +552,21 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (items && items.length) { if (!items.find(n => isProtected(n.path))) { let deletionConfirmed = false; - const message = items.length === 1 ? t(`ifsBrowser.deleteIFS.warningMessage`, items[0].path) : t(`ifsBrowser.deleteIFS.multi.warningMessage`, items.length); + const message = items.length === 1 ? l10n.t(`Are you sure you want to delete {0}?`, items[0].path) : l10n.t(`Are you sure you want to delete {0}?`, items[0].path); const detail = items.length === 1 ? undefined : items.map(i => `- ${i.path}`).join("\n"); - if (await vscode.window.showWarningMessage(message, { modal: true, detail }, t(`Yes`))) { + if (await vscode.window.showWarningMessage(message, { modal: true, detail }, l10n.t(`Yes`))) { const toBeDeleted: string[] = []; for (const item of items) { if ((GlobalConfiguration.get(`safeDeleteMode`)) && item.file.type === `directory`) { //Check if path is directory const dirName = path.basename(item.path) //Get the name of the directory to be deleted - const deletionPrompt = t(`ifsBrowser.deleteIFS.deletionPrompt`, dirName); + const deletionPrompt = l10n.t(`Once you delete the directory, it cannot be restored. +Please type "{0}" to confirm deletion.`, dirName); const input = await vscode.window.showInputBox({ placeHolder: dirName, prompt: deletionPrompt, validateInput: text => { - return (text === dirName) ? null : deletionPrompt + t(`ifsBrowser.deleteIFS.deletionPrompt2`); + return (text === dirName) ? null : deletionPrompt + l10n.t(` (Press "Escape" to cancel)`); } }); deletionConfirmed = (input === dirName); @@ -581,7 +583,7 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { } try { - const removeResult = await vscode.window.withProgress({ title: t('ifsBrowser.deleteIFS.progress', toBeDeleted.length), location: vscode.ProgressLocation.Notification }, async () => { + const removeResult = await vscode.window.withProgress({ title: l10n.t(`Deleting {0} element(s)...`, toBeDeleted.length), location: vscode.ProgressLocation.Notification }, async () => { return await connection.sendCommand({ command: `rm -rf ${toBeDeleted.map(path => Tools.escapePath(path)).join(" ")}` }); }); @@ -593,16 +595,17 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { .filter(Tools.distinct) .forEach(async parent => parent?.refresh?.()); } - } catch (e) { - vscode.window.showErrorMessage(t(`ifsBrowser.deleteIFS.errorMessage`, e)); + } catch (e: any) { + vscode.window.showErrorMessage(l10n.t(`Error deleting streamfile! {0}`, e)); } } else { - vscode.window.showInformationMessage(t(`ifsBrowser.deleteIFS.cancelled`)); + vscode.window.showInformationMessage(l10n.t(`Deletion canceled.`)); } } else { - vscode.window.showErrorMessage(t(`ifsBrowser.deleteIFS.dirNotAllowed`, items.filter(n => isProtected(n.path)).map(n => n.path).join(`\n`))); + vscode.window.showErrorMessage(l10n.t(`Unable to delete protected directories from the IFS Browser! +{0}`, items.filter(n => isProtected(n.path)).map(n => n.path).join(`\n`))); } } } @@ -610,23 +613,24 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { vscode.commands.registerCommand(`code-for-ibmi.moveIFS`, async (node: IFSItem) => { const oldFileTabs: vscode.Tab[] = []; + const typeLabel = node.file.type === "streamfile" ? l10n.t("streamfile") : l10n.t("directory"); if (node.file.type === "streamfile") { // Ensure that the file has a defined uri if (!node.resourceUri) { - vscode.window.showErrorMessage(t("ifsBrowser.moveIFS.errorMessage", t(String(node.contextValue)), t("file.path.not.parsed"))); + vscode.window.showErrorMessage(l10n.t(`Error renaming/moving {0}! {1}`, typeLabel, l10n.t("The file path could not be parsed."))); return; } // Check if the streamfile is currently open in an editor tab oldFileTabs.push(...Tools.findUriTabs(node.resourceUri)); if (oldFileTabs.find(tab => tab.isDirty)) { - vscode.window.showErrorMessage(t("ifsBrowser.moveIFS.errorMessage", t(String(node.contextValue)), t("file.unsaved.changes"))); + vscode.window.showErrorMessage(l10n.t(`Error renaming/moving {0}! {1}`, typeLabel, l10n.t("The file has unsaved changes."))); return; } } else { // Check if there are streamfiles in the directory which are currently open in an editor tab oldFileTabs.push(...Tools.findUriTabs(node.file.path)); if (oldFileTabs.find(tab => tab.isDirty)) { - vscode.window.showErrorMessage(t("ifsBrowser.moveIFS.errorMessage", t(String(node.contextValue)), t("directory.unsaved.changes"))); + vscode.window.showErrorMessage(l10n.t(`Error renaming/moving {0}! {1}`, typeLabel, l10n.t("The directory has file(s) with unsaved changes."))); return; } } @@ -635,7 +639,7 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (config && connection) { const homeDirectory = config.homeDirectory; const target = await vscode.window.showInputBox({ - prompt: t(`ifsBrowser.moveIFS.prompt`), + prompt: l10n.t(`Name of new path`), value: node.path, valueSelection: [path.posix.dirname(node.path).length + 1, node.path.length] }); @@ -651,10 +655,15 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (GlobalConfiguration.get(`autoRefresh`)) { ifsBrowser.refresh(); } - vscode.window.showInformationMessage(t(path.posix.dirname(node.path) === path.posix.dirname(targetPath) ? `ifsBrowser.moveIFS.renamed` : `ifsBrowser.moveIFS.moved`, - Tools.escapePath(node.path), - Tools.escapePath(targetPath) - )); + let label; + if (path.posix.dirname(node.path) === path.posix.dirname(targetPath)) { + label = l10n.t("{0} was renamed to {1}.", Tools.escapePath(node.path), Tools.escapePath(targetPath)); + } + else { + label = l10n.t("{0} was moved to {1}.", Tools.escapePath(node.path), Tools.escapePath(targetPath)); + } + + vscode.window.showInformationMessage(label); // If the file was open in any editor tabs prior to the renaming/movement, // refresh those tabs to reflect the new file path/name. // (Directly modifying the label or uri of an open tab is apparently not @@ -667,8 +676,8 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { }) }) - } catch (e) { - vscode.window.showErrorMessage(t(`ifsBrowser.moveIFS.errorMessage`, t(String(node.contextValue)), e)); + } catch (e: any) { + vscode.window.showErrorMessage(l10n.t(`Error renaming/moving {0}! {1}`, typeLabel, e)); } } } @@ -680,7 +689,7 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (config && connection) { const homeDirectory = config.homeDirectory; const target = await vscode.window.showInputBox({ - prompt: t(`ifsBrowser.copyIFS.prompt`), + prompt: l10n.t(`Name of new path`), value: node.path.endsWith(`/`) ? node.path.substring(0, node.path.length - 1) : node.path, valueSelection: [path.posix.dirname(node.path).length + 1, node.path.length] }); @@ -692,10 +701,11 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (GlobalConfiguration.get(`autoRefresh`)) { ifsBrowser.refresh(); } - vscode.window.showInformationMessage(t(`ifsBrowser.copyIFS.infoMessage`, Tools.escapePath(node.path), Tools.escapePath(targetPath))); + vscode.window.showInformationMessage(l10n.t(`{0} was copied to {1}.`, Tools.escapePath(node.path), Tools.escapePath(targetPath))); - } catch (e) { - vscode.window.showErrorMessage(t(`ifsBrowser.copyIFS.errorMessage`, t(String(node.contextValue)), e)); + } catch (e: any) { + const typeLabel = node.file.type === "streamfile" ? l10n.t("streamfile") : l10n.t("directory"); + vscode.window.showErrorMessage(l10n.t(`Error copying {0}! {1}`, typeLabel, e)); } } } @@ -708,23 +718,23 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (connection?.remoteFeatures.grep && config) { const searchPath = node?.path || await vscode.window.showInputBox({ value: config.homeDirectory, - prompt: t(`ifsBrowser.searchIFS.prompt`), - title: t(`ifsBrowser.searchIFS.title`) + prompt: l10n.t(`Enter IFS directory to search`), + title: l10n.t(`Search directory`) }); if (searchPath) { const list = GlobalStorage.get().getPreviousSearchTerms(); const items: vscode.QuickPickItem[] = list.map(term => ({ label: term })); const listHeader = [ - { label: t(`ifsBrowser.searchIFS.previousSearches`), kind: vscode.QuickPickItemKind.Separator } + { label: l10n.t(`Previous search terms`), kind: vscode.QuickPickItemKind.Separator } ]; - const clearList = t(`clearList`); + const clearList = l10n.t(`$(trash) Clear list`); const clearListArray: vscode.QuickPickItem[] = [{ label: ``, kind: vscode.QuickPickItemKind.Separator }, { label: clearList }]; const quickPick = vscode.window.createQuickPick(); quickPick.items = items.length ? [...items, ...clearListArray] : []; - quickPick.placeholder = items.length ? t(`ifsBrowser.searchIFS.placeholder`) : t(`ifsBrowser.searchIFS.placeholder2`); - quickPick.title = t(`ifsBrowser.searchIFS.title2`, searchPath); + quickPick.placeholder = items.length ? l10n.t(`Enter search term or select one of the previous search terms.`) : l10n.t(`Enter search term or select one of the previous search terms.`); + quickPick.title = l10n.t(`Search {0}`, searchPath); quickPick.onDidChangeValue(() => { if (!quickPick.value) { @@ -742,8 +752,8 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (searchTerm === clearList) { GlobalStorage.get().clearPreviousSearchTerms(); quickPick.items = []; - quickPick.placeholder = t(`ifsBrowser.searchIFS.placeholder2`); - vscode.window.showInformationMessage(t(`clearedList`)); + quickPick.placeholder = l10n.t(`Enter search term.`); + vscode.window.showInformationMessage(l10n.t(`Cleared list.`)); quickPick.show(); } else { quickPick.hide(); @@ -757,7 +767,7 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { quickPick.show(); } } else { - vscode.window.showErrorMessage(t(`ifsBrowser.searchIFS.noGrep`)); + vscode.window.showErrorMessage(l10n.t(`grep must be installed on the remote system for the IFS search.`)); } }), @@ -768,23 +778,23 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (connection?.remoteFeatures.find && config) { const findPath = node?.path || await vscode.window.showInputBox({ value: config.homeDirectory, - prompt: t(`ifsBrowser.ifs.find.prompt`), - title: t(`ifsBrowser.ifs.find.title`) + prompt: l10n.t(`Enter IFS directory to find files in`), + title: l10n.t(`Find in directory`) }); if (findPath) { const list = GlobalStorage.get().getPreviousFindTerms(); const items: vscode.QuickPickItem[] = list.map(term => ({ label: term })); const listHeader = [ - { label: t(`ifsBrowser.ifs.find.previousFinds`), kind: vscode.QuickPickItemKind.Separator } + { label: l10n.t("Previous find terms"), kind: vscode.QuickPickItemKind.Separator } ]; - const clearList = t(`clearList`); + const clearList = l10n.t(`$(trash) Clear list`); const clearListArray: vscode.QuickPickItem[] = [{ label: ``, kind: vscode.QuickPickItemKind.Separator }, { label: clearList }]; const quickPick = vscode.window.createQuickPick(); quickPick.items = items.length ? [...items, ...clearListArray] : []; - quickPick.placeholder = items.length ? t(`ifsBrowser.ifs.find.placeholder`) : t(`ifsBrowser.ifs.find.placeholder2`); - quickPick.title = t(`ifsBrowser.ifs.find.title2`, findPath); + quickPick.placeholder = items.length ? l10n.t(`Enter find term or select one of the previous find terms.`) : l10n.t(`Enter find term or select one of the previous find terms.`); + quickPick.title = l10n.t(`Find {0}`, findPath); quickPick.onDidChangeValue(() => { if (!quickPick.value) { @@ -802,8 +812,8 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (findTerm === clearList) { GlobalStorage.get().clearPreviousFindTerms(); quickPick.items = []; - quickPick.placeholder = t(`ifsBrowser.ifs.find.placeholder2`); - vscode.window.showInformationMessage(t(`clearedList`)); + quickPick.placeholder = l10n.t(`Enter find term.`); + vscode.window.showInformationMessage(l10n.t(`Cleared list.`)); quickPick.show(); } else { quickPick.hide(); @@ -817,7 +827,7 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { quickPick.show(); } } else { - vscode.window.showErrorMessage(t(`ifsBrowser.ifs.find.noFind`)); + vscode.window.showErrorMessage(l10n.t(`"findutils" must be installed on the remote system.`)); } }), @@ -847,7 +857,7 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { const downloadLocation = downloadLocationURI.path; await ibmi.setLastDownloadLocation(saveIntoDirectory ? downloadLocation : dirname(downloadLocation)); const increment = 100 / items.length; - window.withProgress({ title: t('ifsBrowser.downloadStreamfile.downloading'), location: vscode.ProgressLocation.Notification }, async (task) => { + window.withProgress({ title: l10n.t(`Downloading`), location: vscode.ProgressLocation.Notification }, async (task) => { try { for (const item of items) { const targetPath = item.path; @@ -857,7 +867,7 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { if (item.file.type === "directory") { let proceed = !existsSync(target); if (!proceed) { - if (await vscode.window.showWarningMessage(t('ifsBrowser.downloadStreamfile.overwrite', target), { modal: true }, t("Yes"))) { + if (await vscode.window.showWarningMessage(l10n.t("{0} already exists.\nDo you want to replace it?", target), { modal: true }, l10n.t(`Yes`))) { rmdirSync(target, { recursive: true }); proceed = true; } @@ -869,7 +879,9 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { } } else { - if (!existsSync(target) || await vscode.window.showWarningMessage(t('ask.overwrite', target), { modal: true }, t("Yes"))) { + if (!existsSync(target) || await vscode.window.showWarningMessage(l10n.t(`{0} already exists. +Do you want to replace it?`, target), { modal: true }, l10n.t(`{0} already exists. +Do you want to replace it?`, target))) { await ibmi.downloadFile(target, targetPath); } } @@ -878,11 +890,11 @@ export function initializeIFSBrowser(context: vscode.ExtensionContext) { await ibmi.downloadFile(downloadLocation!, targetPath); } } - vscode.window.showInformationMessage(t(`ifsBrowser.downloadStreamfile.complete`), t("open")) + vscode.window.showInformationMessage(l10n.t(`Download complete`), l10n.t(`Download complete`)) .then(open => open ? vscode.commands.executeCommand('revealFileInOS', saveIntoDirectory ? vscode.Uri.joinPath(downloadLocationURI, path.basename(items[0].path)) : downloadLocationURI) : undefined); } - catch (e) { - vscode.window.showErrorMessage(t(`ifsBrowser.downloadStreamfile.errorMessage`, e)); + catch (e: any) { + vscode.window.showErrorMessage(l10n.t(`Error downloading file(s): {0}`, e)); } }); } @@ -911,7 +923,7 @@ vscode.commands.registerCommand(`code-for-ibmi.ifs.toggleShowHiddenFiles`, async function handleFileListErrors(errors: string[]) { errors.forEach(error => vscode.window.showErrorMessage(error)); - vscode.window.showErrorMessage(t(`ifsBrowser.handleFileListErrors.errorMessage`, errors.length, errors.length > 1 ? t(`errors`) : t(`error`))); + vscode.window.showErrorMessage(l10n.t(`{0} {1} occurred while listing files.`, errors.length, errors.length > 1 ? l10n.t(`errors`) : l10n.t(`error`))); } function storeIFSList(path: string, list: string[]) { @@ -927,21 +939,21 @@ async function doSearchInStreamfiles(searchTerm: string, searchPath: string) { try { await vscode.window.withProgress({ location: vscode.ProgressLocation.Notification, - title: t(`ifsBrowser.doSearchInStreamfiles.title`), + title: l10n.t(`Searching`), }, async progress => { progress.report({ - message: t(`ifsBrowser.doSearchInStreamfiles.progressMessage`, searchTerm, searchPath) + message: l10n.t(`"{0}" in {1}.`, searchTerm, searchPath) }); const results = await Search.searchIFS(instance, searchPath, searchTerm); if (results?.hits.length) { openIFSSearchResults(searchPath, results); } else { - vscode.window.showInformationMessage(t(`ifsBrowser.doSearchInStreamfiles.noResults`, searchTerm, searchPath)); + vscode.window.showInformationMessage(l10n.t(`No results found searching for "{0}" in {1}.`, searchTerm, searchPath)); } }); } catch (e) { - vscode.window.showErrorMessage(t(`ifsBrowser.doSearchInStreamfiles.errorMessage`)); + vscode.window.showErrorMessage(l10n.t(`Error searching streamfiles.`)); } } @@ -949,21 +961,21 @@ async function doFindStreamfiles(findTerm: string, findPath: string) { try { await vscode.window.withProgress({ location: vscode.ProgressLocation.Notification, - title: t(`ifsBrowser.doFindStreamfiles.title`), + title: l10n.t(`Finding`), }, async progress => { progress.report({ - message: t(`ifsBrowser.doFindStreamfiles.progressMessage`, findTerm, findPath) + message: l10n.t(`Finding filenames with "{0}" in {1}.`, findTerm, findPath) }); const results = (await Search.findIFS(instance, findPath, findTerm)); if (results?.hits.length) { openIFSSearchResults(findPath, results); } else { - vscode.window.showInformationMessage(t(`ifsBrowser.doFindStreamfiles.noResults`, findTerm, findPath)); + vscode.window.showInformationMessage(l10n.t(`No results found finding filenames with "{0}" in {1}.`, findTerm, findPath)); } }); } catch (e) { - vscode.window.showErrorMessage(t(`ifsBrowser.doFindStreamfiles.errorMessage`)); + vscode.window.showErrorMessage(l10n.t(`Error finding filenames.`)); } } @@ -975,12 +987,12 @@ function openIFSSearchResults(searchPath: string, searchResults: SearchResults) } async function showOpenDialog() { - const openType = (await vscode.window.showQuickPick([t("ifsBrowser.uploadStreamfile.select.type.folders"), t("ifsBrowser.uploadStreamfile.select.type.files")], { title: t("ifsBrowser.uploadStreamfile.select.type.title") })); + const openType = (await vscode.window.showQuickPick([l10n.t(`Folders`), l10n.t(`Folders`)], { title: l10n.t(`Folders`) })); if (openType) { return vscode.window.showOpenDialog({ defaultUri: vscode.Uri.file(os.homedir()), canSelectMany: true, - ...openType === t("ifsBrowser.uploadStreamfile.select.type.folders") ? { + ...openType === l10n.t(`Folders`) ? { canSelectFolders: true, canSelectFiles: false } : { diff --git a/src/views/objectBrowser.ts b/src/views/objectBrowser.ts index 4a641c6d7..949a623a7 100644 --- a/src/views/objectBrowser.ts +++ b/src/views/objectBrowser.ts @@ -11,7 +11,6 @@ import { GlobalStorage } from '../api/Storage'; import { Tools } from "../api/Tools"; import { getMemberUri } from "../filesystems/qsys/QSysFs"; import { instance } from "../instantiate"; -import { t } from "../locale"; import { BrowserItem, BrowserItemParameters, CommandResult, FilteredItem, FocusOptions, IBMiMember, IBMiObject, MemberItem, OBJECT_BROWSER_MIMETYPE, ObjectItem, WithLibrary } from "../typings"; import { editFilter } from "../webviews/filters"; @@ -156,7 +155,7 @@ class ObjectBrowser implements vscode.TreeDataProvider { class CreateFilterItem extends BrowserItem { constructor() { - super(`${t('objectBrowser.createFilter')}...`, { icon: "add" }); + super(`${vscode.l10n.t(`Create new filter`)}...`, { icon: "add" }); this.command = { command: `code-for-ibmi.maintainFilter`, title: `Create new filter` @@ -414,7 +413,7 @@ class ObjectBrowserMemberItem extends ObjectBrowserItem implements MemberItem { }); if (removeResult.code !== 0) { - vscode.window.showErrorMessage(t(`objectBrowser.deleteMember.errorMessage`, removeResult.stderr)); + vscode.window.showErrorMessage(vscode.l10n.t(`Error deleting member! {0}`, removeResult.stderr)); } return removeResult.code === 0; @@ -551,7 +550,7 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { const connection = getConnection(); const toPath = (value: string) => connection.upperCaseName(`${node.path}/${value}`); fullName = await vscode.window.showInputBox({ - prompt: t(`objectBrowser.createMember.prompt`), + prompt: vscode.l10n.t(`Name of new source member (member.ext)`), value: fullName, validateInput: (value) => { try { @@ -565,7 +564,7 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { if (fullName) { const fullPath = toPath(fullName); const member = connection.parserMemberPath(fullPath); - const error = await vscode.window.withProgress({ location: vscode.ProgressLocation.Notification, title: t(`objectBrowser.createMember.progressTitle`, fullPath) }, async (progress) => { + const error = await vscode.window.withProgress({ location: vscode.ProgressLocation.Notification, title: vscode.l10n.t(`Creating member {0}...`, fullPath) }, async (progress) => { const addResult = await connection.runCommand({ command: `ADDPFM FILE(${member.library}/${member.file}) MBR(${member.name}) SRCTYPE(${member.extension.length > 0 ? member.extension : `*NONE`})`, noLibList: true @@ -584,7 +583,7 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { }); if (error) { - if (await vscode.window.showErrorMessage(t(`objectBrowser.createMember.errorMessage`, fullPath, error), t(`Retry`))) { + if (await vscode.window.showErrorMessage(vscode.l10n.t(`Error creating member {0}: {1}`, fullPath, error), vscode.l10n.t(`Error creating member {0}: {1}`, fullPath, error))) { vscode.commands.executeCommand(`code-for-ibmi.createMember`, node, fullName); } } @@ -595,13 +594,13 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { const connection = getConnection(); const oldMember = node.member; fullPath = await vscode.window.showInputBox({ - prompt: t(`objectBrowser.copyMember.prompt`), + prompt: vscode.l10n.t(`New path for copy of source member`), value: node.path || fullPath, validateInput: (value) => { try { const memberPath = connection.parserMemberPath(value, true); if (memberPath.library === oldMember.library && memberPath.file === oldMember.file && memberPath.name === oldMember.name) { - return t(`objectBrowser.copyMember.errorMessage`); + return vscode.l10n.t(`Cannot copy member to itself!`); } } catch (e: any) { return e.toString(); @@ -611,7 +610,7 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { if (fullPath) { const memberPath = connection.parserMemberPath(fullPath); - const error = await vscode.window.withProgress({ location: vscode.ProgressLocation.Notification, title: t(`objectBrowser.copyMember.progressTitle`, fullPath.toUpperCase()) }, async (progress) => { + const error = await vscode.window.withProgress({ location: vscode.ProgressLocation.Notification, title: vscode.l10n.t(`Creating member {0}...`, fullPath.toUpperCase()) }, async (progress) => { try { const checkResult = await connection.runCommand({ command: `CHKOBJ OBJ(${memberPath.library}/${memberPath.file}) OBJTYPE(*FILE) MBR(${memberPath.name})`, @@ -621,14 +620,14 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { const newMemberExists = checkResult.code === 0; if (newMemberExists) { - const result = await vscode.window.showInformationMessage(t(`objectBrowser.copyMember.overwrite`, memberPath.name), { modal: true }, t(`Yes`), t(`No`)) - if (result === t(`Yes`)) { + const result = await vscode.window.showInformationMessage(vscode.l10n.t(`Are you sure you want overwrite member {0}?`, memberPath.name), { modal: true }, vscode.l10n.t(`Are you sure you want overwrite member {0}?`, memberPath.name), vscode.l10n.t(`Are you sure you want overwrite member {0}?`, memberPath.name)) + if (result === vscode.l10n.t(`Yes`)) { await connection.runCommand({ command: `RMVM FILE(${memberPath.library}/${memberPath.file}) MBR(${memberPath.name})`, noLibList: true }) } else { - throw t(`objectBrowser.copyMember.errorMessage2`, memberPath.name) + throw vscode.l10n.t(`Member {0} already exists!`, memberPath.name) } } @@ -664,13 +663,13 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { else { objectBrowser.autoRefresh(); } - } catch (e) { + } catch (e: any) { return e; } }); if (error) { - if (await vscode.window.showErrorMessage(t(`objectBrowser.copyMember.errorMessage3`, fullPath, error), t(`Retry`))) { + if (await vscode.window.showErrorMessage(vscode.l10n.t(`Error creating member {0}: {1}`, fullPath, error), vscode.l10n.t(`Error creating member {0}: {1}`, fullPath, error))) { vscode.commands.executeCommand(`code-for-ibmi.copyMember`, node, fullPath); } } @@ -682,7 +681,7 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { const oldText = node.member.text; const newText = await vscode.window.showInputBox({ value: oldText, - prompt: t(`objectBrowser.updateMemberText.prompt`, basename) + prompt: vscode.l10n.t(`Change member description for {0}, *BLANK for no description`, basename) }); if (newText && newText !== oldText) { @@ -698,7 +697,7 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { node.description = newText.toUpperCase() !== `*BLANK` ? newText : ``; objectBrowser.refresh(node); } else { - vscode.window.showErrorMessage(t(`objectBrowser.updateMemberText.errorMessage`, changeResult.stderr)); + vscode.window.showErrorMessage(vscode.l10n.t(`Error changing member description! {0}`, changeResult.stderr)); } } @@ -720,15 +719,15 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { // If the member is currently open in an editor tab, and // the member has unsaved changes, then prevent the renaming operation. if (oldMemberTabs.find(tab => tab.isDirty)) { - vscode.window.showErrorMessage(t("objectBrowser.renameMember.errorMessage", t("member.has.unsaved.changes"))); + vscode.window.showErrorMessage(vscode.l10n.t(`Error renaming member! {0}`, vscode.l10n.t("The member has unsaved changes."))); return; } do { newBasename = await vscode.window.showInputBox({ value: newBasename, - prompt: t(`objectBrowser.renameMember.prompt`, oldMember.basename), - validateInput: value => connection.upperCaseName(value) === oldMember.basename ? t("objectBrowser.renameMember.invalid.input") : undefined + prompt: vscode.l10n.t(`Rename {0}`, oldMember.basename), + validateInput: value => connection.upperCaseName(value) === oldMember.basename ? vscode.l10n.t(`New member name must be different from it's current name`) : undefined }); if (newBasename) { @@ -752,7 +751,7 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { if (commandResult.code !== 0) { newNameOK = false; - vscode.window.showErrorMessage(t(`objectBrowser.renameMember.errorMessage`, commandResult.stderr)); + vscode.window.showErrorMessage(vscode.l10n.t(`Error renaming member! {0}`, commandResult.stderr)); } } if (oldMember.extension !== newMember.extension) { @@ -763,7 +762,7 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { if (commandResult.code !== 0) { newNameOK = false; - vscode.window.showErrorMessage(t(`objectBrowser.renameMember.errorMessage`, commandResult.stderr)); + vscode.window.showErrorMessage(vscode.l10n.t(`Error renaming member! {0}`, commandResult.stderr)); } } @@ -798,9 +797,9 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { try { contentApi.uploadMemberContent(asp, library, file, name, data); - vscode.window.showInformationMessage(t(`objectBrowser.uploadAndReplaceMemberAsFile.infoMessage`)); - } catch (e) { - vscode.window.showErrorMessage(t(`objectBrowser.uploadAndReplaceMemberAsFile.errorMessage`, e)); + vscode.window.showInformationMessage(vscode.l10n.t(`Member was uploaded.`)); + } catch (e: any) { + vscode.window.showErrorMessage(vscode.l10n.t(`Error uploading content to member! {0}`, e)); } } @@ -857,9 +856,9 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { if (saveIntoDirectory) { let overwriteAll = false; let skipAll = false; - const overwriteLabel = t('overwrite'); - const overwriteAllLabel = t('overwrite_all'); - const skipAllLabel = t('skip_all'); + const overwriteLabel = vscode.l10n.t(`Overwrite`); + const overwriteAllLabel = vscode.l10n.t(`Overwrite all`); + const skipAllLabel = vscode.l10n.t(`Skip all`); for (const item of toBeDownloaded) { const target = path.join(Tools.fixWindowsPath(downloadLocation), item.name); if (existsSync(target)) { @@ -867,7 +866,9 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { item.copy = false; } else if (!overwriteAll) { - const answer = await vscode.window.showWarningMessage(t('ask.overwrite', item.name), { modal: true }, t('skip'), skipAllLabel, overwriteLabel, overwriteAllLabel); + const answer = await vscode.window.showWarningMessage(vscode.l10n.t(`{0} already exists. +Do you want to replace it?`, item.name), { modal: true }, vscode.l10n.t(`{0} already exists. +Do you want to replace it?`, item.name), skipAllLabel, overwriteLabel, overwriteAllLabel); if (answer) { overwriteAll ||= (answer === overwriteAllLabel); skipAll ||= (answer === skipAllLabel); @@ -875,7 +876,7 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { } else { //Abort! - vscode.window.showInformationMessage(t('objectBrowser.downloadMemberContent.cancel')); + vscode.window.showInformationMessage(vscode.l10n.t(`Members download cancelled.`)); return; } } @@ -884,23 +885,23 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { } //Download members - vscode.window.withProgress({ title: t('objectBrowser.downloadMemberContent.download.progress', toBeDownloaded.filter(m => m.copy).length), location: vscode.ProgressLocation.Notification }, async (task) => { + vscode.window.withProgress({ title: vscode.l10n.t(`Downloading {0} members`, toBeDownloaded.filter(m => m.copy).length), location: vscode.ProgressLocation.Notification }, async (task) => { try { await connection.withTempDirectory(async directory => { - task.report({ message: t('objectBrowser.downloadMemberContent.download.cpytostmf'), increment: 33 }) + task.report({ message: vscode.l10n.t(`copying to streamfiles`), increment: 33 }) const copyToStreamFiles = toBeDownloaded .filter(member => member.copy) .map(member => `@CPYTOSTMF FROMMBR('${member.path}') TOSTMF('${directory}/${member.name.toLocaleLowerCase()}') STMFOPT(*REPLACE) STMFCCSID(1208) DBFCCSID(${config.sourceFileCCSID}) ENDLINFMT(*LF);`) .join("\n"); await contentApi.runSQL(copyToStreamFiles); - task.report({ message: t('objectBrowser.downloadMemberContent.download.streamfiles'), increment: 33 }) + task.report({ message: vscode.l10n.t(`getting streamfiles`), increment: 33 }) await connection.downloadDirectory(downloadLocation!, directory); - vscode.window.showInformationMessage(t(`objectBrowser.downloadMemberContent.infoMessage`), t("open")) + vscode.window.showInformationMessage(vscode.l10n.t(`Members download complete.`), vscode.l10n.t(`Members download complete.`)) .then(open => open ? vscode.commands.executeCommand('revealFileInOS', saveIntoDirectory ? vscode.Uri.joinPath(downloadLocationURI, toBeDownloaded[0].name) : downloadLocationURI) : undefined); }); - } catch (e) { - vscode.window.showErrorMessage(t(`objectBrowser.downloadMemberContent.errorMessage`, e)); + } catch (e: any) { + vscode.window.showErrorMessage(vscode.l10n.t(`Error downloading member(s)! {0}`, e)); } }); } @@ -915,14 +916,14 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { if (!parameters.path) { const connection = getConnection(); const input = await vscode.window.showInputBox({ - prompt: t(`objectBrowser.searchSourceFile.prompt`), - title: t(`objectBrowser.searchSourceFile.title`), + prompt: vscode.l10n.t(`Enter LIB/SPF/member.ext to search (member.ext is optional and can contain wildcards)`), + title: vscode.l10n.t(`Search source file`), validateInput: (input) => { input = input.trim(); const path = input.split(`/`); let checkPath; if (path.length > 3) { - return t(`objectBrowser.searchSourceFile.invalidForm`) + return vscode.l10n.t(`Please enter value in form LIB/SPF/member.ext`) } else if (path.length > 2) { // Check member let checkMember = path[2].replace(/[*]/g, ``).split(`.`); checkMember[0] = checkMember[0] !== `` ? checkMember[0] : `a`; @@ -953,19 +954,19 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { const pathParts = parameters.path.split(`/`); if (pathParts[1] !== `*ALL`) { - const aspText = ((config.sourceASP && config.sourceASP.length > 0) ? t(`objectBrowser.searchSourceFile.aspText`, config.sourceASP) : ``); + const aspText = ((config.sourceASP && config.sourceASP.length > 0) ? vscode.l10n.t(`(in ASP {0})`, config.sourceASP) : ``); const list = GlobalStorage.get().getPreviousSearchTerms(); const listHeader: vscode.QuickPickItem[] = [ - { label: t(`objectBrowser.searchSourceFile.previousSearches`), kind: vscode.QuickPickItemKind.Separator } + { label: vscode.l10n.t(`Previous search terms`), kind: vscode.QuickPickItemKind.Separator } ]; - const clearList = t(`clearList`); + const clearList = vscode.l10n.t(`$(trash) Clear list`); const clearListArray = [{ label: ``, kind: vscode.QuickPickItemKind.Separator }, { label: clearList }]; const quickPick = vscode.window.createQuickPick(); quickPick.items = list.length > 0 ? listHeader.concat(list.map(term => ({ label: term }))).concat(clearListArray) : []; - quickPick.placeholder = list.length > 0 ? t(`objectBrowser.searchSourceFile.placeholder`) : t(`objectBrowser.searchSourceFile.placeholder2`); - quickPick.title = t(`objectBrowser.searchSourceFile.title2`, parameters.path, aspText); + quickPick.placeholder = list.length > 0 ? vscode.l10n.t(`Enter search term or select one of the previous search terms.`) : vscode.l10n.t(`Enter search term or select one of the previous search terms.`); + quickPick.title = vscode.l10n.t(`Search {0} {1}`, parameters.path, aspText); quickPick.onDidChangeValue(() => { if (quickPick.value === ``) { @@ -982,8 +983,8 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { if (searchTerm === clearList) { GlobalStorage.get().clearPreviousSearchTerms(); quickPick.items = []; - quickPick.placeholder = t(`objectBrowser.searchSourceFile.placeholder2`); - vscode.window.showInformationMessage(t(`clearedList`)); + quickPick.placeholder = vscode.l10n.t(`Enter search term.`); + vscode.window.showInformationMessage(vscode.l10n.t(`Cleared list.`)); quickPick.show(); } else { quickPick.hide(); @@ -997,7 +998,7 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { quickPick.show(); } else { - vscode.window.showErrorMessage(t(`objectBrowser.searchSourceFile.errorMessage`)); + vscode.window.showErrorMessage(vscode.l10n.t(`Cannot search listings using *ALL.`)); } } }), @@ -1007,8 +1008,8 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { const connection = getConnection(); const newLibrary = await vscode.window.showInputBox({ - prompt: t(`objectBrowser.createLibrary.prompt`), - validateInput: (library => library.length > 10 ? t(`objectBrowser.createLibrary.errorMessage2`) : undefined) + prompt: vscode.l10n.t(`Name of new library`), + validateInput: (library => library.length > 10 ? vscode.l10n.t(`Library name too long.`) : undefined) }); if (newLibrary) { @@ -1021,7 +1022,7 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { }); if (createResult.code !== 0) { - vscode.window.showErrorMessage(t(`objectBrowser.createLibrary.errorMessage`, newLibrary, createResult.stderr)); + vscode.window.showErrorMessage(vscode.l10n.t(`Cannot create library "{0}": {1}`, newLibrary, createResult.stderr)); } filters.push({ @@ -1040,10 +1041,10 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { const autoRefresh = objectBrowser.autoRefresh(); // Add to library list ? - await vscode.window.showInformationMessage(t(`objectBrowser.createLibrary.infoMessage`), t(`Yes`), t(`No`)) + await vscode.window.showInformationMessage(vscode.l10n.t(`Would you like to add the new library to the library list?`), vscode.l10n.t(`Would you like to add the new library to the library list?`), vscode.l10n.t(`Would you like to add the new library to the library list?`)) .then(async result => { switch (result) { - case t(`Yes`): + case vscode.l10n.t(`Yes`): await vscode.commands.executeCommand(`code-for-ibmi.addToLibraryList`, { library: newLibrary }); if (autoRefresh) { vscode.commands.executeCommand(`code-for-ibmi.refreshLibraryListView`); @@ -1057,8 +1058,8 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { vscode.commands.registerCommand(`code-for-ibmi.createSourceFile`, async (node: ObjectBrowserFilterItem | ObjectBrowserObjectItem) => { if (node.library) { const fileName = await vscode.window.showInputBox({ - prompt: t(`objectBrowser.createSourceFile.prompt`), - validateInput: (fileName => fileName.length > 10 ? t('objectBrowser.createSourceFile.errorMessage2') : undefined) + prompt: vscode.l10n.t(`Name of new source file`), + validateInput: (fileName => fileName.length > 10 ? vscode.l10n.t(`Source filename must be 10 chars or less.`) : undefined) }); if (fileName) { @@ -1066,7 +1067,7 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { const library = node.library; const uriPath = `${library}/${connection.upperCaseName(fileName)}` - vscode.window.showInformationMessage(t(`objectBrowser.createSourceFile.infoMessage`, uriPath)); + vscode.window.showInformationMessage(vscode.l10n.t(`Creating source file {0}.`, uriPath)); const createResult = await connection.runCommand({ command: `CRTSRCPF FILE(${uriPath}) RCDLEN(112)`, noLibList: true @@ -1075,7 +1076,7 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { if (createResult.code === 0) { objectBrowser.refresh(node); } else { - vscode.window.showErrorMessage(t(`objectBrowser.createSourceFile.errorMessage`, createResult.stderr)); + vscode.window.showErrorMessage(vscode.l10n.t(`Error creating source file! {0}`, createResult.stderr)); } } } @@ -1086,10 +1087,10 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { let newTextOK; do { newText = await vscode.window.showInputBox({ - prompt: t(`objectBrowser.changeObjectDesc.prompt`, node.path), + prompt: vscode.l10n.t(`Change object description for {0}, *BLANK for no description`, node.path), value: newText, validateInput: newText => { - return newText.length <= 50 ? null : t(`objectBrowser.changeObjectDesc.errorMessage`); + return newText.length <= 50 ? null : vscode.l10n.t(`Object description must be 50 chars or less.`); } }) || ""; @@ -1107,9 +1108,9 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { node.object.text = newText; node.updateDescription(); objectBrowser.refresh(node); - vscode.window.showInformationMessage(t(`objectBrowser.changeObjectDesc.infoMessage`, node.path, node.object.type.toUpperCase())); + vscode.window.showInformationMessage(vscode.l10n.t(`Changed object description for {0} {1}.`, node.path, node.object.type.toUpperCase())); } else { - vscode.window.showErrorMessage(t(`objectBrowser.changeObjectDesc.errorMessage2`, node.path, changeResult.stderr)); + vscode.window.showErrorMessage(vscode.l10n.t(`Error changing description for {0}! {1}`, node.path, changeResult.stderr)); newTextOK = false; } } @@ -1121,13 +1122,13 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { let newPathOK; do { newPath = await vscode.window.showInputBox({ - prompt: t(`objectBrowser.copyObject.prompt`), + prompt: vscode.l10n.t(`Create duplicate object to new library/object`), value: newPath, validateInput: newPath => { let splitPath = newPath.split(`/`); - if (splitPath.length != 2) return t(`objectBrowser.copyObject.errorMessage`, newPath); - if (splitPath[0].length > 10) return t(`objectBrowser.copyObject.errorMessage2`); - if (splitPath[1].length > 10) return t(`objectBrowser.copyObject.errorMessage3`); + if (splitPath.length != 2) return vscode.l10n.t(`Invalid path: {0}. Use format LIB/OBJ`, newPath); + if (splitPath[0].length > 10) return vscode.l10n.t(`Library must be 10 chars or less.`); + if (splitPath[1].length > 10) return vscode.l10n.t(`Object name must be 10 chars or less.`); } }) || ""; @@ -1150,11 +1151,11 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { if (oldLibrary.toLocaleLowerCase() === newLibrary.toLocaleLowerCase()) { objectBrowser.refresh(node.parent); } - else if (!objectBrowser.autoRefresh(t(`objectBrowser.copyObject.infoMessage`, node.path, node.object.type.toUpperCase(), escapedPath))) { - vscode.window.showInformationMessage(t(`objectBrowser.copyObject.infoMessage2`, node.path, node.object.type.toUpperCase(), escapedPath)); + else if (!objectBrowser.autoRefresh(vscode.l10n.t(`Copied object {0} {1} to {2}.`, node.path, node.object.type.toUpperCase(), escapedPath))) { + vscode.window.showInformationMessage(vscode.l10n.t(`Copied object {0} {1} to {2}. Refresh object browser.`, node.path, node.object.type.toUpperCase(), escapedPath)); } } else { - vscode.window.showErrorMessage(t(`objectBrowser.copyObject.errorMessage4`, node.path, commandRes.stderr)); + vscode.window.showErrorMessage(vscode.l10n.t(`Error copying object {0}! {1}`, node.path, commandRes.stderr)); newPathOK = false; } } @@ -1166,17 +1167,17 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { let newObjectOK; do { newObject = await vscode.window.showInputBox({ - prompt: t(`objectBrowser.renameObject.prompt`), + prompt: vscode.l10n.t(`Rename object`), value: newObject, validateInput: newObject => { - return newObject.length <= 10 ? null : t(`objectBrowser.renameObject.errorMessage`); + return newObject.length <= 10 ? null : vscode.l10n.t(`Object name must be 10 chars or less.`); } }) || ""; if (newObject) { const escapedObject = newObject.replace(/'/g, `''`).replace(/`/g, `\\\``).split(`/`); const connection = getConnection(); - newObjectOK = await vscode.window.withProgress({ location: vscode.ProgressLocation.Notification, title: t("objectBrowser.renameObject.progress", node.path, node.object.type.toUpperCase(), escapedObject) } + newObjectOK = await vscode.window.withProgress({ location: vscode.ProgressLocation.Notification, title: vscode.l10n.t(`Renaming object {0} {1} to {2}...`, node.path, node.object.type.toUpperCase(), escapedObject.join('/')) } , async (progress) => { const renameResult = await connection.runCommand({ command: `RNMOBJ OBJ(${node.path}) OBJTYPE(${node.object.type}) NEWOBJ(${escapedObject})`, @@ -1184,11 +1185,11 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { }); if (renameResult.code !== 0) { - vscode.window.showErrorMessage(t(`objectBrowser.renameObject.errorMessage2`, node.path, renameResult.stderr)); + vscode.window.showErrorMessage(vscode.l10n.t(`Error renaming object {0}! {1}`, node.path, renameResult.stderr)); return false; } - vscode.window.showInformationMessage(t(`objectBrowser.renameObject.infoMessage`, node.path, node.object.type.toUpperCase(), escapedObject)); + vscode.window.showInformationMessage(vscode.l10n.t(`Renamed object {0} {1} to {2}.`, node.path, node.object.type.toUpperCase(), escapedObject.join('/'))); objectBrowser.refresh(node.parent); return true; } @@ -1202,10 +1203,10 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { let newLibraryOK; do { newLibrary = await vscode.window.showInputBox({ - prompt: t(`objectBrowser.moveObject.prompt`), + prompt: vscode.l10n.t(`Move object`), value: newLibrary, validateInput: newLibrary => { - return newLibrary.length <= 10 ? null : t(`objectBrowser.moveObject.errorMessage`); + return newLibrary.length <= 10 ? null : vscode.l10n.t(`Object name must be 10 chars or less.`); } }) || ""; @@ -1214,7 +1215,7 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { const escapedLibrary = newLibrary.replace(/'/g, `''`).replace(/`/g, `\\\``); const connection = getConnection(); - newLibraryOK = await vscode.window.withProgress({ location: vscode.ProgressLocation.Notification, title: t("objectBrowser.moveObject.progress", node.path, node.object.type.toUpperCase(), escapedLibrary) } + newLibraryOK = await vscode.window.withProgress({ location: vscode.ProgressLocation.Notification, title: vscode.l10n.t(`Moving object {0} {1} to {2}...`, node.path, node.object.type.toUpperCase(), escapedLibrary) } , async (progress) => { const moveResult = await connection.runCommand({ command: `MOVOBJ OBJ(${node.path}) OBJTYPE(${node.object.type}) TOLIB(${newLibrary})`, @@ -1222,12 +1223,12 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { }); if (moveResult.code !== 0) { - vscode.window.showErrorMessage(t(`objectBrowser.moveObject.errorMessage2`, node.path, moveResult.stderr)); + vscode.window.showErrorMessage(vscode.l10n.t(`Error moving object {0}! {1}`, node.path, moveResult.stderr)); return false; } - if (!objectBrowser.autoRefresh(t(`objectBrowser.moveObject.infoMessage`, node.path, node.object.type.toUpperCase(), escapedLibrary))) { - vscode.window.showInformationMessage(t(`objectBrowser.moveObject.infoMessage2`, node.path, node.object.type.toUpperCase(), escapedLibrary)); + if (!objectBrowser.autoRefresh(vscode.l10n.t(`Moved object {0} {1} to {2}.`, node.path, node.object.type.toUpperCase(), escapedLibrary))) { + vscode.window.showInformationMessage(vscode.l10n.t(`Moved object {0} {1} to {2}. Refresh object browser.`, node.path, node.object.type.toUpperCase(), escapedLibrary)); } return true; }); @@ -1248,13 +1249,13 @@ export function initializeObjectBrowser(context: vscode.ExtensionContext) { const toBeDeleted = candidates.filter(item => item instanceof ObjectBrowserFilterItem || !item.isProtected()); if (toBeDeleted.length) { - const message = toBeDeleted.length === 1 ? t('objectBrowser.delete.confirm', toBeDeleted[0].toString()) : t('objectBrowser.delete.multiple.confirm', toBeDeleted.length); + const message = toBeDeleted.length === 1 ? vscode.l10n.t(`Are you sure you want to delete {0}?`, toBeDeleted[0].toString()) : vscode.l10n.t(`Are you sure you want to delete {0}?`, toBeDeleted[0].toString()); const detail = toBeDeleted.length === 1 ? undefined : toBeDeleted.map(item => `- ${item.toString()}`).join("\n"); - if (await vscode.window.showWarningMessage(message, { modal: true, detail }, t(`Yes`))) { + if (await vscode.window.showWarningMessage(message, { modal: true, detail }, vscode.l10n.t(`Yes`))) { const increment = 100 / toBeDeleted.length; const toRefresh = new Set(); let refreshBrowser = false; - await vscode.window.withProgress({ title: t("objectBrowser.delete.progress"), location: vscode.ProgressLocation.Notification }, async (task) => { + await vscode.window.withProgress({ title: vscode.l10n.t(`Deleting`), location: vscode.ProgressLocation.Notification }, async (task) => { for (const item of toBeDeleted) { task.report({ message: item.toString(), increment }); await item.delete(); @@ -1304,7 +1305,7 @@ function getConfig() { return config; } else { - throw new Error(t('not.connected')); + throw new Error(vscode.l10n.t(`Not connected to an IBM i`)); } } @@ -1314,7 +1315,7 @@ function getConnection() { return connection; } else { - throw new Error(t('not.connected')); + throw new Error(vscode.l10n.t(`Not connected to an IBM i`)); } } @@ -1324,7 +1325,7 @@ function getContent() { return content; } else { - throw new Error(t('not.connected')); + throw new Error(vscode.l10n.t(`Not connected to an IBM i`)); } } @@ -1343,69 +1344,69 @@ async function doSearchInSourceFile(searchTerm: string, path: string, filter?: C try { await vscode.window.withProgress({ location: vscode.ProgressLocation.Notification, - title: t(`objectBrowser.doSearchInSourceFile.title`), + title: vscode.l10n.t(`Searching`), }, async progress => { progress.report({ - message: t(`objectBrowser.doSearchInSourceFile.progressMessage`, path) + message: vscode.l10n.t(`Fetching member list for {0}.`, path) }); - progress.report({ message: t(`objectBrowser.doSearchInSourceFile.searchMessage1`, searchTerm, path) }); - - // NOTE: if more messages are added, lower the timeout interval - const timeoutInternal = 9000; - const searchMessages = [ - // t(`objectBrowser.doSearchInSourceFile.searchMessage2`, members.length, searchTerm, path), - t(`objectBrowser.doSearchInSourceFile.searchMessage3`, searchTerm), - t(`objectBrowser.doSearchInSourceFile.searchMessage4`, searchTerm, path), - t(`objectBrowser.doSearchInSourceFile.searchMessage5`), - t(`objectBrowser.doSearchInSourceFile.searchMessage6`), - t(`objectBrowser.doSearchInSourceFile.searchMessage7`), - // t(`objectBrowser.doSearchInSourceFile.searchMessage8`, members.length), - t(`objectBrowser.doSearchInSourceFile.searchMessage9`, searchTerm, path), - ]; - - let currentMessage = 0; - const messageTimeout = setInterval(() => { - if (currentMessage < searchMessages.length) { - progress.report({ - message: searchMessages[currentMessage] - }); - currentMessage++; - } else { - clearInterval(messageTimeout); - } - }, timeoutInternal); - - let memberFilter: string = '*'; - if (filter?.member && filter?.filterType !== "regex" && singleGenericName(filter.member)) { - memberFilter = filter?.member; + progress.report({ message: vscode.l10n.t(`"{0}" in {1}.`, searchTerm, path) }); + + // NOTE: if more messages are added, lower the timeout interval + const timeoutInternal = 9000; + const searchMessages = [ + // vscode.l10n.t(`This is taking a while because there are {0} members. Searching "{1}" in {2} still.`, members.length, searchTerm, path), + vscode.l10n.t(`What's so special about "{0}" anyway?`, searchTerm), + vscode.l10n.t(`Still searching "{0}" in {1}...`, searchTerm, path), + vscode.l10n.t(`While you wait, why not make some tea?`), + vscode.l10n.t(`Wow. This really is taking a while. Let's hope you get the result you want.`), + vscode.l10n.t(`Why was six afraid of seven?`), + // vscode.l10n.t(`How does one end up with {0} members?`, members.length), + vscode.l10n.t(`"{0}" in {1}.`, searchTerm, path), + ]; + + let currentMessage = 0; + const messageTimeout = setInterval(() => { + if (currentMessage < searchMessages.length) { + progress.report({ + message: searchMessages[currentMessage] + }); + currentMessage++; + } else { + clearInterval(messageTimeout); } + }, timeoutInternal); - const results = await Search.searchMembers(instance, library, sourceFile, searchTerm, memberFilter, filter?.protected); - clearInterval(messageTimeout) - if (results.hits.length) { - const objectNamesLower = GlobalConfiguration.get(`ObjectBrowser.showNamesInLowercase`); + let memberFilter: string = '*'; + if (filter?.member && filter?.filterType !== "regex" && singleGenericName(filter.member)) { + memberFilter = filter?.member; + } - // Format result to be lowercase if the setting is enabled - results.hits.forEach(result => { - if (objectNamesLower === true) { - result.path = result.path.toLowerCase(); - } - }); + const results = await Search.searchMembers(instance, library, sourceFile, searchTerm, memberFilter, filter?.protected); + clearInterval(messageTimeout) + if (results.hits.length) { + const objectNamesLower = GlobalConfiguration.get(`ObjectBrowser.showNamesInLowercase`); - results.hits = results.hits.sort((a, b) => { - return a.path.localeCompare(b.path); - }); + // Format result to be lowercase if the setting is enabled + results.hits.forEach(result => { + if (objectNamesLower === true) { + result.path = result.path.toLowerCase(); + } + }); - vscode.commands.executeCommand(`code-for-ibmi.setSearchResults`, results); - } else { - vscode.window.showInformationMessage(t(`objectBrowser.doSearchInSourceFile.notFound`, searchTerm, path)); - } + results.hits = results.hits.sort((a, b) => { + return a.path.localeCompare(b.path); + }); + + vscode.commands.executeCommand(`code-for-ibmi.setSearchResults`, results); + } else { + vscode.window.showInformationMessage(vscode.l10n.t(`No results found searching for "{0}" in {1}.`, searchTerm, path)); + } }); - } catch (e) { - vscode.window.showErrorMessage(t(`objectBrowser.doSearchInSourceFile.errorMessage`, e)); + } catch (e: any) { + vscode.window.showErrorMessage(vscode.l10n.t(`Error searching source members: {0}`, e)); } } @@ -1424,7 +1425,7 @@ async function deleteObject(object: IBMiObject) { }); if (deleteResult.code !== 0) { - vscode.window.showErrorMessage(t(`objectBrowser.deleteObject.errorMessage`, deleteResult.stderr)); + vscode.window.showErrorMessage(vscode.l10n.t(`Error deleting object! {0}`, deleteResult.stderr)); } return deleteResult.code === 0; diff --git a/src/views/searchView.ts b/src/views/searchView.ts index c96279b8d..420c257f9 100644 --- a/src/views/searchView.ts +++ b/src/views/searchView.ts @@ -1,7 +1,6 @@ import path from 'path'; import vscode from "vscode"; import { DefaultOpenMode } from "../api/Configuration"; -import { t } from '../locale'; import { SearchHit, SearchHitLine, SearchResults, WithPath } from "../typings"; export function initializeSearchView(context: vscode.ExtensionContext) { @@ -20,10 +19,10 @@ export function initializeSearchView(context: vscode.ExtensionContext) { vscode.commands.registerCommand(`code-for-ibmi.collapseSearchView`, async () => searchView.collapse()), vscode.commands.registerCommand(`code-for-ibmi.setSearchResults`, async (searchResults: SearchResults) => { if (searchResults.hits.some(hit => hit.lines.length)) { - searchViewViewer.message = t("searchView.search.message", searchResults.hits.length, searchResults.term); + searchViewViewer.message = vscode.l10n.t(`{0} file(s) contain(s) '{1}'`, searchResults.hits.length, searchResults.term); } else { - searchViewViewer.message = t("searchView.find.message", searchResults.hits.length, searchResults.term); + searchViewViewer.message = vscode.l10n.t(`{0} file(s) named '{1}'`, searchResults.hits.length, searchResults.term); } searchView.setResults(searchResults); }) diff --git a/src/webviews/actions/index.ts b/src/webviews/actions/index.ts index 5536ca7cd..9ac786c5e 100644 --- a/src/webviews/actions/index.ts +++ b/src/webviews/actions/index.ts @@ -5,7 +5,6 @@ import { CustomUI, Tab } from "../../api/CustomUI"; import { GlobalConfiguration } from "../../api/Configuration"; import { Tools } from "../../api/Tools"; import { instance } from "../../instantiate"; -import { t } from "../../locale"; import { Action, ActionEnvironment, ActionRefresh, ActionType } from "../../typings"; import { getVariablesInfo } from "./varinfo"; @@ -45,7 +44,7 @@ export namespace ActionsUI { open: `folder-opened`, }; const ui = new CustomUI() - .addTree(`actions`, t("actions.mainMenu.workWithActions"), + .addTree(`actions`, vscode.l10n.t(`Work with Actions`), Array.from(new Set(allActions.map(action => action.type))) .map(type => ({ icons, @@ -59,13 +58,13 @@ export namespace ActionsUI { value: String(action.index), })) })), - t(`actions.mainMenu.createOrMaintain`)) + vscode.l10n.t(`Create or maintain Actions. Actions are grouped by the type of file/object they target.`)) .addButtons( - { id: `newAction`, label: t('actions.mainMenu.newAction') }, - { id: `duplicateAction`, label: t('duplicate') } + { id: `newAction`, label: vscode.l10n.t(`New Action`) }, + { id: `duplicateAction`, label: vscode.l10n.t(`Duplicate`) } ); - const page = await ui.loadPage(t("actions.mainMenu.workWithActions")); + const page = await ui.loadPage(vscode.l10n.t(`Work with Actions`)); if (page && page.data) { page.panel.dispose(); @@ -96,7 +95,7 @@ export namespace ActionsUI { action })).sort((a, b) => a.label.localeCompare(b.label)), { - placeHolder: t('actions.duplicate.select') + placeHolder: vscode.l10n.t(`Select an action to duplicate`) } ))?.action; @@ -122,10 +121,10 @@ export namespace ActionsUI { if (id >= 0) { //Fetch existing action currentAction = allActions[id]; - uiTitle = t('actions.workAction.edit.title', currentAction.name); + uiTitle = vscode.l10n.t(`Edit action "{0}"`, currentAction.name); } else if (actionDefault) { currentAction = actionDefault; - uiTitle = t('actions.workAction.duplicate.title', currentAction.name); + uiTitle = vscode.l10n.t(`Duplicate action "{0}"`, currentAction.name); } else { //Otherwise.. prefill with defaults currentAction = { @@ -139,7 +138,7 @@ export namespace ActionsUI { command: ``, refresh: `no` } - uiTitle = t('actions.workAction.create.title'); + uiTitle = vscode.l10n.t(`Create action`); } if (!currentAction.environment) { @@ -150,12 +149,12 @@ export namespace ActionsUI { const custom = config.customVariables.map(variable => `
  • &${variable.name}: ${variable.value}
  • `).join(``); const ui = new CustomUI() - .addInput(`name`, t('actions.workAction.name'), undefined, { default: currentAction.name }) + .addInput(`name`, vscode.l10n.t(`Action name`), undefined, { default: currentAction.name }) .addHorizontalRule() .addInput( `command`, - t("actions.workAction.command"), - t('actions.workAction.command.description'), + vscode.l10n.t(`Command(s) to run`), + vscode.l10n.t(`Below are available variables based on the Type you have select below. You can specify different commands on each line. Each command run is stateless and run in their own job.`), { rows: 5, default: currentAction.command } ) .addTabs( @@ -166,85 +165,85 @@ export namespace ActionsUI { } as Tab)), getDefaultTabIndex(currentAction.type) ) .addHorizontalRule() - .addInput(`extensions`, t('actions.workAction.extensions'), t('actions.workAction.extensions.description'), { default: currentAction.extensions?.join(`, `) }) - .addSelect(`type`, t('actions.workAction.types'), [ + .addInput(`extensions`, vscode.l10n.t(`Extensions`), vscode.l10n.t(`Extensions`), { default: currentAction.extensions?.join(`, `) }) + .addSelect(`type`, vscode.l10n.t(`Type`), [ { selected: currentAction.type === `member`, value: `member`, - description: t('actions.workAction.types.member'), - text: t('actions.workAction.types.member.description'), + description: vscode.l10n.t(`Member`), + text: vscode.l10n.t(`Source members in the QSYS file system`), }, { selected: currentAction.type === `streamfile`, value: `streamfile`, - description: t('actions.workAction.types.streamfile'), - text: t('actions.workAction.types.streamfile.description') + description: vscode.l10n.t(`Streamfile`), + text: vscode.l10n.t(`Streamfiles in the IFS`) }, { selected: currentAction.type === `object`, value: `object`, - description: t('actions.workAction.types.object'), - text: t('actions.workAction.types.object.description') + description: vscode.l10n.t(`Object`), + text: vscode.l10n.t(`Objects in the QSYS file system`) }, { selected: currentAction.type === `file`, value: `file`, - description: t('actions.workAction.types.file'), - text: t('actions.workAction.types.file.description') - }], t('actions.workAction.types.description') + description: vscode.l10n.t(`Local File (Workspace)`), + text: vscode.l10n.t(`Actions for local files in the VS Code Workspace.`) + }], vscode.l10n.t(`The types of files this action can support.`) ) - .addSelect(`environment`, t('actions.workAction.environment'), [ + .addSelect(`environment`, vscode.l10n.t(`Environment`), [ { selected: currentAction.environment === `ile`, value: `ile`, - description: t('actions.workAction.environment.ile'), - text: t('actions.workAction.environment.ile.description') + description: vscode.l10n.t(`ILE`), + text: vscode.l10n.t(`Runs as an ILE command`) }, { selected: currentAction.environment === `qsh`, value: `qsh`, - description: t('actions.workAction.environment.qsh'), - text: t('actions.workAction.environment.qsh.description') + description: vscode.l10n.t(`QShell`), + text: vscode.l10n.t(`Runs the command through QShell`) }, { selected: currentAction.environment === `pase`, value: `pase`, - description: t('actions.workAction.environment.pase'), - text: t('actions.workAction.environment.pase.description') - }], t('actions.workAction.environment.description') + description: vscode.l10n.t(`PASE`), + text: vscode.l10n.t(`Runs the command in the PASE environment`) + }], vscode.l10n.t(`Environment for command to be executed in.`) ) - .addSelect(`refresh`, t('actions.workAction.refresh'), [ + .addSelect(`refresh`, vscode.l10n.t(`Refresh`), [ { selected: currentAction.refresh === `no`, value: `no`, - description: t('actions.workAction.refresh.no'), - text: t('actions.workAction.refresh.no.description') + description: vscode.l10n.t(`No`), + text: vscode.l10n.t(`No refresh`) }, { selected: currentAction.refresh === `parent`, value: `parent`, - description: t('actions.workAction.refresh.parent'), - text: t('actions.workAction.refresh.parent.description') + description: vscode.l10n.t(`Parent`), + text: vscode.l10n.t(`The parent container is refreshed`) }, { selected: currentAction.refresh === `filter`, value: `filter`, - description: t('actions.workAction.refresh.filter'), - text: t('actions.workAction.refresh.filter.description') + description: vscode.l10n.t(`Filter`), + text: vscode.l10n.t(`The parent filter is refreshed`) }, { selected: currentAction.refresh === `browser`, value: `browser`, - description: t('actions.workAction.refresh.browser'), - text: t('actions.workAction.refresh.browser.description') - }], t('actions.workAction.refresh.description') + description: vscode.l10n.t(`Browser`), + text: vscode.l10n.t(`The entire browser is refreshed`) + }], vscode.l10n.t(`The browser level to refresh after the action is done`) ) - .addCheckbox("runOnProtected", t("actions.workAction.runOnProtected"), t("actions.workAction.runOnProtected.description"), currentAction.runOnProtected) + .addCheckbox("runOnProtected", vscode.l10n.t(`Run on protected/read only`), vscode.l10n.t(`Run on protected/read only`), currentAction.runOnProtected) .addHorizontalRule() .addButtons( - { id: `saveAction`, label: t(`save`) }, - id >= 0 ? { id: `deleteAction`, label: t(`delete`) } : undefined, - { id: `cancelAction`, label: t(`cancel`) } + { id: `saveAction`, label: vscode.l10n.t(`Save`) }, + id >= 0 ? { id: `deleteAction`, label: vscode.l10n.t(`Delete`) } : undefined, + { id: `cancelAction`, label: vscode.l10n.t(`Cancel`) } ); while (stayOnPanel) { @@ -253,8 +252,8 @@ export namespace ActionsUI { const data = page.data; switch (data.buttons) { case `deleteAction`: - const yes = t(`Yes`); - const result = await vscode.window.showInformationMessage(t('actions.workAction.delete.confirm', currentAction.name), { modal: true }, yes, t(`No`)) + const yes = vscode.l10n.t(`Yes`); + const result = await vscode.window.showInformationMessage(vscode.l10n.t(`Are you sure you want to delete the action "{0}"?`, currentAction.name), { modal: true }, yes, vscode.l10n.t(`Are you sure you want to delete the action "{0}"?`, currentAction.name)) if (result === yes) { allActions.splice(id, 1); await saveActions(allActions); diff --git a/src/webviews/actions/varinfo.ts b/src/webviews/actions/varinfo.ts index 6f3379efd..644f8f4ee 100644 --- a/src/webviews/actions/varinfo.ts +++ b/src/webviews/actions/varinfo.ts @@ -1,4 +1,4 @@ -import { t } from "../../locale" +import vscode from "vscode"; // Used to list info about available variables type VariableInfo = { @@ -13,39 +13,39 @@ type VariableInfoList = { } const generic: () => VariableInfo[] = () => [ - { name: `&CURLIB`, text: t(`actions.CURLIB`) }, - { name: `&USERNAME`, text: t("actions.USERNAME")}, - { name: `&WORKDIR`, text: t("actions.WORKDIR")}, - { name: `&HOST`, text: t("actions.HOST")}, - { name: `&BUILDLIB`, text: t("actions.BUILDLIB")}, - { name: `&LIBLC`, text: t("actions.LIBLC")}, - { name: `&LIBLS`, text: t("actions.LIBLS") } + { name: `&CURLIB`, text: vscode.l10n.t(`Current library, changeable in Library List`) }, + { name: `&USERNAME`, text: vscode.l10n.t(`Username for connection`)}, + { name: `&WORKDIR`, text: vscode.l10n.t(`Current working directory, changeable in IFS Browser`)}, + { name: `&HOST`, text: vscode.l10n.t(`Hostname or IP address from the current connection`)}, + { name: `&BUILDLIB`, text: vscode.l10n.t(`The same as &CURLIB`)}, + { name: `&LIBLC`, text: vscode.l10n.t(`Library list delimited by comma`)}, + { name: `&LIBLS`, text: vscode.l10n.t(`Library list delimited by space`) } ]; export function getVariablesInfo(): VariableInfoList { return { member : [ - { name: `&OPENLIB`, text: t("actions.OPENLIB")}, - { name: `&OPENSPF`, text: t("actions.OPENSPF")}, - { name: `&OPENMBR`, text: t("actions.OPENMBR")}, - { name: `&EXT`, text: t("actions.member.EXT")}, + { name: `&OPENLIB`, text: vscode.l10n.t(`Library name where the source member lives (&OPENLIBL for lowercase)`)}, + { name: `&OPENSPF`, text: vscode.l10n.t(`Source file name where the source member lives (&OPENSPFL for lowercase)`)}, + { name: `&OPENMBR`, text: vscode.l10n.t(`Name of the source member (&OPENMBRL for lowercase)`)}, + { name: `&EXT`, text: vscode.l10n.t(`Extension of the source member (&EXTL for lowercase)`)}, ...generic() ], streamFile: [ - { name: `&FULLPATH`, text: t("actions.FULLPATH")}, - { name: `&FILEDIR`, text: t("actions.FILEDIR")}, - { name: `&RELATIVEPATH`, text: t("actions.RELATIVEPATH")}, - { name: `&PARENT`, text: t("actions.PARENT")}, - { name: `&BASENAME`, text: t("actions.BASENAME")}, - { name: `&NAME`, text: t("actions.streamfile.NAME")}, - { name: `&EXT`, text: t("actions.streamfile.EXT")}, + { name: `&FULLPATH`, text: vscode.l10n.t(`Full path of the file on the remote system`)}, + { name: `&FILEDIR`, text: vscode.l10n.t(`Directory of the file on the remote system`)}, + { name: `&RELATIVEPATH`, text: vscode.l10n.t(`Relative path of the streamfile from the working directory or workspace`)}, + { name: `&PARENT`, text: vscode.l10n.t(`Name of the parent directory or source file`)}, + { name: `&BASENAME`, text: vscode.l10n.t(`Name of the file, including the extension`)}, + { name: `&NAME`, text: vscode.l10n.t(`Name of the file (&NAMEL for lowercase)`)}, + { name: `&EXT`, text: vscode.l10n.t(`Extension of the file (&EXTL for lowercase)`)}, ...generic() ], object: [ - { name: `&LIBRARY`, text: t("actions.LIBRARY")}, - { name: `&NAME`, text: t("actions.NAME")}, - { name: `&TYPE`, text: t("actions.object.TYPE")}, - { name: `&EXT`, text: t("actions.object.EXT")}, + { name: `&LIBRARY`, text: vscode.l10n.t(`Library name where the object lives (&LIBRARYL for lowercase)`)}, + { name: `&NAME`, text: vscode.l10n.t(`Name of the object (&NAMEL for lowercase)`)}, + { name: `&TYPE`, text: vscode.l10n.t(`Type of the object (&TYPEL for lowercase)`)}, + { name: `&EXT`, text: vscode.l10n.t(`Extension/attribute of the object (&EXTL for lowercase)`)}, ...generic() ] } diff --git a/src/webviews/login/index.ts b/src/webviews/login/index.ts index 77ece26d2..617b75abb 100644 --- a/src/webviews/login/index.ts +++ b/src/webviews/login/index.ts @@ -1,9 +1,8 @@ -import vscode, { ThemeIcon } from "vscode"; +import vscode, { l10n, ThemeIcon } from "vscode"; import { ConnectionConfiguration, ConnectionManager } from "../../api/Configuration"; import { CustomUI, Section } from "../../api/CustomUI"; import IBMi from "../../api/IBMi"; import { disconnect, instance } from "../../instantiate"; -import { t } from "../../locale"; import { ConnectionData } from '../../typings'; type NewLoginSettings = ConnectionData & { @@ -27,13 +26,13 @@ export class Login { const connectionTab = new Section() .addInput(`name`, `Connection Name`, undefined, { minlength: 1 }) - .addInput(`host`, t(`login.host`), undefined, { minlength: 1 }) - .addInput(`port`, t(`login.port`), ``, { default: `22`, minlength: 1, maxlength: 5, regexTest: `^\\d+$` }) - .addInput(`username`, t(`username`), undefined, { minlength: 1, maxlength: 10 }) - .addParagraph(t(`login.authDecision`)) - .addPassword(`password`, t(`password`)) - .addCheckbox(`savePassword`, t(`login.savePassword`)) - .addFile(`privateKeyPath`, t(`privateKey`), t(`login.privateKey.support`)); + .addInput(`host`, l10n.t(`Host or IP Address`), undefined, { minlength: 1 }) + .addInput(`port`, l10n.t(`Port (SSH)`), ``, { default: `22`, minlength: 1, maxlength: 5, regexTest: `^\\d+$` }) + .addInput(`username`, l10n.t(`Username`), undefined, { minlength: 1, maxlength: 10 }) + .addParagraph(l10n.t(`Only provide either the password or a private key - not both.`)) + .addPassword(`password`, l10n.t(`Password`)) + .addCheckbox(`savePassword`, l10n.t(`Save Password`)) + .addFile(`privateKeyPath`, l10n.t(`Private Key`), l10n.t(`Private Key`)); const tempTab = new Section() .addInput(`tempLibrary`, `Temporary library`, `Temporary library. Cannot be QTEMP.`, { default: `ILEDITOR`, minlength: 1, maxlength: 10 }) diff --git a/src/webviews/settings/index.ts b/src/webviews/settings/index.ts index d96af9d8f..6a68c7667 100644 --- a/src/webviews/settings/index.ts +++ b/src/webviews/settings/index.ts @@ -9,7 +9,6 @@ import { isSEPSupported } from "../../api/debug/server"; import { IBMiComponent } from "../../components/component"; import { extensionComponentRegistry } from "../../components/manager"; import { instance } from "../../instantiate"; -import { t } from "../../locale"; import { ConnectionData, Server } from '../../typings'; const EDITING_CONTEXT = `code-for-ibmi:editingConnection`; @@ -355,19 +354,19 @@ export class SettingsUI { let { data: stored, index } = connection; const ui = new CustomUI() - .addInput(`host`, t(`login.host`), undefined, { default: stored.host, minlength: 1 }) - .addInput(`port`, t(`login.port`), undefined, { default: String(stored.port), minlength: 1, maxlength: 5, regexTest: `^\\d+$` }) - .addInput(`username`, t(`username`), undefined, { default: stored.username, minlength: 1 }) - .addParagraph(t(`login.authDecision`)) - .addPassword(`password`, `${t(`password`)}${storedPassword ? ` (${t(`stored`)})` : ``}`, t(`login.password.label`)) - .addFile(`privateKeyPath`, `${t(`privateKey`)}${stored.privateKeyPath ? ` (${t(`current`)}: ${stored.privateKeyPath})` : ``}`, t(`login.privateKey.label`) + ' ' + t(`login.privateKey.support`)) + .addInput(`host`, vscode.l10n.t(`Host or IP Address`), undefined, { default: stored.host, minlength: 1 }) + .addInput(`port`, vscode.l10n.t(`Port (SSH)`), undefined, { default: String(stored.port), minlength: 1, maxlength: 5, regexTest: `^\\d+$` }) + .addInput(`username`, vscode.l10n.t(`Username`), undefined, { default: stored.username, minlength: 1 }) + .addParagraph(vscode.l10n.t(`Only provide either the password or a private key - not both.`)) + .addPassword(`password`, `${vscode.l10n.t(`Password`)}${storedPassword ? ` (${vscode.l10n.t(`stored`)})` : ``}`, vscode.l10n.t("Only provide a password if you want to update an existing one or set a new one.")) + .addFile(`privateKeyPath`, `${vscode.l10n.t(`Private Key`)}${stored.privateKeyPath ? ` (${vscode.l10n.t(`Private Key`)}: ${stored.privateKeyPath})` : ``}`, vscode.l10n.t("Only provide a private key if you want to update from the existing one or set one.") + '
    ' + vscode.l10n.t("OpenSSH, RFC4716 and PPK formats are supported.")) .addButtons( - { id: `submitButton`, label: t(`save`), requiresValidation: true }, - { id: `removeAuth`, label: t(`login.removeAuth`) } + { id: `submitButton`, label: vscode.l10n.t(`Save`), requiresValidation: true }, + { id: `removeAuth`, label: vscode.l10n.t(`Remove auth methods`) } ); await Tools.withContext(EDITING_CONTEXT, async () => { - const page = await ui.loadPage(t(`login.title.edit`, name)); + const page = await ui.loadPage(vscode.l10n.t(`Login Settings: "{0}"`, name)); if (page && page.data) { page.panel.dispose(); @@ -378,7 +377,7 @@ export class SettingsUI { case `removeAuth`: await ConnectionManager.deleteStoredPassword(context, name); data.privateKeyPath = undefined; - vscode.window.showInformationMessage(t(`login.authRemoved`, name)); + vscode.window.showInformationMessage(vscode.l10n.t(`Authentication methods removed for "{0}".`, name)); break; default: @@ -388,14 +387,14 @@ export class SettingsUI { // New password was entered, so store the password // and remove the private key path from the data await ConnectionManager.setStoredPassword(context, name, data.password); - vscode.window.showInformationMessage(t(`login.password.updated`, name)); + vscode.window.showInformationMessage(vscode.l10n.t(`Password updated and will be used for "{0}".`, name)); } } else if (data.privateKeyPath?.trim()) { // If no password was entered, but a keypath exists // then remove the password from the data and // use the keypath instead await ConnectionManager.deleteStoredPassword(context, name); - vscode.window.showInformationMessage(t(`login.privateKey.updated`, name)); + vscode.window.showInformationMessage(vscode.l10n.t(`Private key updated and will be used for "{0}".`, name)); } else { delete data.privateKeyPath; diff --git a/tools/locales.ts b/tools/locales.ts new file mode 100644 index 000000000..5d5e88cde --- /dev/null +++ b/tools/locales.ts @@ -0,0 +1,81 @@ +import fs from 'fs'; +import { basename } from 'path'; + +async function translate() { + const ids = fs.readdirSync('src/locale/ids').map(id => `src/locale/ids/${id}`); + const main = ids.find(id => id.endsWith('en.json')); + const others = ids.filter(id => !id.endsWith('en.json')); + if (main) { + console.log('Generating main bundle'); + const toBundle = (path: string) => JSON.parse(fs.readFileSync(path).toString("utf8")) as Record + const mainBundle = toBundle(main); + const keys = Object.keys(mainBundle); + const l10nBundle = Object.values(mainBundle).sort((v1, v2) => v1.localeCompare(v2)).reduce((p, c) => { p[c] = c; return p }, {} as Record); + fs.writeFileSync('dist/l10n/bundle.l10n.json', JSON.stringify(l10nBundle, null, 2)); + + others.forEach(bundle => { + const id = basename(bundle, ".json"); + console.log(`Generating ${id} bundle`); + const content = toBundle(bundle); + const l10n = Object.entries(content) + .sort(([k1], [k2]) => mainBundle[k1].localeCompare(mainBundle[k2])) + .reduce((p, [key, value]) => { p[mainBundle[key]] = value; return p }, {} as Record); + fs.writeFileSync(`dist/l10n/bundle.l10n.${id}.json`, JSON.stringify(l10n, null, 2), { encoding: "utf8" }); + }); + console.log(`Done generating bundles\n`); + + console.log(`Gathering files`); + const files: string[] = []; + const listFiles = (path: string) => { + for (const file of fs.readdirSync(path)) { + const fullPath = `${path}/${file}`; + if (fs.statSync(fullPath).isDirectory()) { + listFiles(fullPath); + } + else if (!fullPath.startsWith('src/tools')) { + files.push(fullPath); + } + } + } + listFiles('src'); + + console.log(`Found ${files.length} files\n`); + + for (const file of files) { + let changed = false; + let importVscode = false; + let prefix = "vscode."; + const lines = fs.readFileSync(file).toString('utf8').split('\n') + .filter(line => !/import .* from .*locale/.test(line)) + .map((line, i) => { + if (!importVscode && /from ['"`]vscode['"`]/.test(line)) { + importVscode = true; + if(/\{(.*)\}/.test(line)){ + prefix = ''; + return line.replace(/\{ (.*) \}/, "{ l10n, $1 }") + } + } + const res = /[^\w\.]t\(([^)]+)\)/.exec(line); + if (res && res[1]) { + changed = true; + const parts = res[1].replaceAll(/['"`]/g, '').split(','); + const oldKey = parts.splice(0, 1)[0]; + const key = mainBundle[oldKey]; + if (!key) { + console.log(`KEY ${oldKey} NOT FOUND ${file} line ${i + 1}`) + } + return line.replaceAll(/([^\w\.])t\(([^)]+)\)/g, `$1${prefix}l10n.t(\`${key}\`${parts.length ? ',' + parts.join(', ') : ''})`); + } + else { + return line; + } + }); + + if (changed) { + fs.writeFileSync(file, `${importVscode ? '' : `import vscode from "vscode";\n`}${lines.join("\n")}`, { encoding: "utf8" }); + } + } + } +} + +translate(); \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index c97531be9..dca502afa 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -18,34 +18,6 @@ if (isProduction) { exclude = path.resolve(__dirname, `src`, `testing`) } -console.log(`Checking for missing keys in locales...`); -const baseLocale = require(`./src/locale/ids/en.json`); -const locales = { - da: require(`./src/locale/ids/da.json`), - de: require(`./src/locale/ids/de.json`), - fr: require(`./src/locale/ids/fr.json`), - no: require(`./src/locale/ids/no.json`), - pl: require(`./src/locale/ids/pl.json`), -}; - -let localeIsBad = false; - -for (const locale in locales) { - for (const key in baseLocale) { - if (!locales[locale][key]) { - localeIsBad = true; - console.error(`\tmissing key '${key}' in locale ${locale}`); - } - } -} - -if (localeIsBad && isProduction) { - console.error(`\n\nMissing keys in locales. Aborting build.`); - process.exit(1); -} - -console.log(); - /**@type {webpack.Configuration}*/ const config = { target: `node`, // vscode extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/