diff --git a/Binner/Binner.Web/ClientApp/public/locales/de/translation.json b/Binner/Binner.Web/ClientApp/public/locales/de/translation.json
index 05d81f5b..30304e22 100644
--- a/Binner/Binner.Web/ClientApp/public/locales/de/translation.json
+++ b/Binner/Binner.Web/ClientApp/public/locales/de/translation.json
@@ -1,730 +1,940 @@
{
+ "_comment":"German translation by IngoK. Version 1.0 4/6/2023 for Binner Version 2.5.9",
"page": {
"home": {
- "title": "Dashboard",
- "description": "Binner is an inventory management app for makers, hobbyists and professionals.",
- "addInventory": "Add Inventory",
- "searchInventory": "Search Inventory",
- "bom": "BOM",
- "datasheets": "Datasheets",
- "viewLowStock": "View Low Stock",
- "partTypes": "Part Types",
- "importExport": "Import/Export",
- "printLabels": "Print Labels",
- "tools": "Tools",
- "settings": "Settings",
- "yourOverview": "Your Overview",
- "lowStock": "Low Stock",
- "parts": "Parts",
- "uniqueParts": "Unique Parts",
- "value": "Value",
- "projects": "BOM Projects"
+ "title": "Hauptseite",
+ "description": "Binner ist eine Bestandsverwaltungs-App für Maker, Hobbyisten und Profis.",
+ "addInventory": "Bestand hinzufügen",
+ "searchInventory": "Bestand suchen",
+ "bom": "Stücklisten",
+ "datasheets": "Datenblätter",
+ "viewLowStock": "Zeige niedrigen Lagerbestand",
+ "partTypes": "Bauteil Typen",
+ "importExport": "Importiern/Exportieren",
+ "printLabels": "Etiketten drucken",
+ "tools": "Werkzeuge",
+ "settings": "Einstellungen",
+ "yourOverview": "Übersicht",
+ "lowStock": "Lagerbestand niedrig!",
+ "parts": "Bauteile",
+ "uniqueParts": "Spezialteile",
+ "value": "Lagerwert",
+ "projects": "Stücklistenprojekte",
+ "admin": "Admin"
},
"search": {
- "title":"Inventory",
- "search":"Seach"
+ "title":"Lagerbestand",
+ "search":"Suche",
+ "searchNotFound": "Keine Ergebnisse im Bestand gefunden. Wollen Sie Bestand <1>hinzufügen1> ?"
},
"inventory": {
- "addtitle": "Add Inventory",
- "edittitle": "Edit Inventory",
- "datasheets": "Datasheets",
- "pinout": "Pinout",
- "circuits": "Circuits",
- "productImages": "Product Images",
- "referenceDesigns": "Reference Designs",
- "bulkScan": "Bulk Scan",
- "startScanning": "Start scanning parts...",
- "recentlyAdded": "Recently Added",
- "partMetadata": "Part Metadata",
- "privatePartInfo": "Private Part Information",
- "privatePartInfoMessage": "These values can be set manually and will not be synchronized automatically via apis.",
- "suppliers": "Suppliers",
- "addKeyword": "Add Keyword",
- "chooseAlternatePart": "Choose alternate part ({{count}})",
- "suggestedPart": "Suggested part number",
+ "addtitle": "Bestand hinzufügen",
+ "edittitle": "Bestand editieren",
+ "datasheets": "Datenblätter",
+ "pinout": "Pinbelegung",
+ "circuits": "Schaltungen",
+ "productImages": "Produktbilder",
+ "referenceDesigns": "Referenz Designs",
+ "bulkScan": "Massenscan",
+ "startScanning": "Beginnen Sie mit dem Scannen von Bauteilen...",
+ "recentlyAdded": "kürzlich hinzugefügt",
+ "partMetadata": "Bauteile Metadaten",
+ "privatePartInfo": "Eigene Bauteile Informationen",
+ "privatePartInfoMessage": "Diese Angaben können manuell eingetragen werden und werden nicht automatisch über APIs synchronisiert.",
+ "suppliers": "Lieferanten",
+ "addKeyword": "Schlüsselwörter hinzufügen",
+ "chooseAlternatePart": "Wählen Sie eine Bauteile- Alternative ({{count}})",
+ "suggestedPart": "Empfohlenen Bauteile Nummer",
+ "partExists": "Dieses <1>Bauteil1> <3>existiert bereits3> in Ihrem Bestand.",
"placeholder": {
- "location": "Home lab",
+ "location": "Regal, Fachnummer, Box",
"keywords": "op amp",
- "binNumber": "IC Components 2",
- "binNumber2": "14"
+ "binNumber": "Behälternummer",
+ "binNumber2": "Behälternummer 2"
},
"message": {
- "uploadWait": "Files can't be uploaded until the part is saved."
+ "uploadWait": "Dateien können erst hochgeladen werden, wenn das Bauteil gespeichert ist."
},
"popup": {
- "bulkAddParts": "Bulk add parts using a barcode scanner",
- "quantity": "Use the mousewheel and CTRL/ALT to change step size",
- "lowStock": "Alert when the quantity gets below this value",
- "location": "A custom value for identifying the parts location",
- "binNumber": "A custom value for identifying the parts location",
- "rememberLastSelection": "Enable this toggle to remember the last selected values of: <1>Part Type, Mounting Type, Quantity, Low Stock, Project, Location, Bin Number, Bin Number 21>",
- "clear": "Clear the form to default values",
- "alternateParts": "Choose a different part to extract metadata information from. By default, Binner will give you the most relevant part and with the highest quantity available.",
- "mustAddPart": "You must save the part before adding custom suppliers to it.",
- "addSupplier": "Add a manual supplier entry",
- "deleteLocalFile": "Delete this local file"
+ "bulkAddParts": "Bauteile in großen Mengen mithilfe eines Barcode-Scanners hinzufügen.",
+ "quantity": "Verwenden Sie das Mausrad und die Tasten >>Strg<< oder >>Alt<<, um die Schrittgröße zu ändern.",
+ "lowStock": "Benachrichtigung, wenn die Stückzahl unter diesen Wert fällt.",
+ "location": "Benutzerdefinierte Beschreibung des Lagerortes.",
+ "binNumber": "Benutzedefinierte Nummer des Lagerortes",
+ "rememberLastSelection": "Aktivieren, um die zuletzt ausgewählten Werte zu speichern: <1>Bauteiletyp, Montagetyp, Stückzahl, niedriger Lagerbestand, Projekt, Lagerort, Behälternummer, Behälternummer 21>",
+ "clear": "Formblatt zurücksetzen",
+ "alternateParts": "Wählen Sie ein alternatives Bauteil aus, um Metadateninformationen abzurufen. Standardmäßig gibt Ihnen Binner das relevanteste Teil mit der höchsten verfügbaren Menge.",
+ "mustAddPart": "Sie müssen das Bautteil erst speichern, bevor Sie Lieferanten hinzufügen können.",
+ "addSupplier": "Lieferant manuell hinzufügen",
+ "deleteLocalFile": "Lokale Datei löschen",
+ "technicalSpecs": "Zeige technische Daten",
+ "compliance": "Zeige Information über die Konformität",
+ "cadModels": "Zeige für das Bauteil verfügbare CAD Modelle",
+ "symbolName": "Ordnen Sie diesem Bauteil ein KiCad-Symbol zu.",
+ "footprintName": "Ordnen Sie diesem Bauteil einen KiCad footprint namen zu.",
+ "extensionValue": "Ordnen Sie diesem Bauteil einen eigenen Wert zu."
}
},
"lowInventory": {
- "title": "Low Inventory",
- "description": "Use this page to reorder parts you are low on.<1/>You can define a custom <3>Low Stock3> value per part in your inventory."
+ "title": "Niedriger Lagerbestand",
+ "description": "Nutzen Sie diese Seite, um Bauteile nachzubestellen, von denen sich nur noch eine geringe Anzahl in Ihrem Lagerbestand befindet.<1/>Sie können für jedes Bauteil in Ihrem Lagerbestand einen individuellen Wert für <3>niedrigen Lagerbestand3> angeben."
},
"bom": {
"bc": {
- "home": "Home",
- "boms": "BOMs",
- "bom": "BOM"
+ "home": "Hauptseite",
+ "boms": "Stücklisten",
+ "bom": "Stückliste"
},
"header": {
- "title": "Bill of Materials",
- "description": "Manage your BOM by creating PCB(s) and adding your parts."
+ "title": "Stücklisten",
+ "description": "Verwalten Sie Ihre Stücklisten indem Sie Leiterplatten erstellen und Ihre Bauteile hinzufügen."
},
- "notEnoughPartsToProducePcb": "You do not have enough parts to produce this PCB.",
- "notEnoughPartsToProduceBom": "You do not have enough parts to produce your entire BOM.",
- "noPartsAssigned": "Assign parts to get a count of how many times you can produce this PCB.",
- "pcbProduceCount": "You can produce this PCB <1>{{count}}1> times with your current inventory.",
- "bomProduceCount": "You can produce your entire BOM <1>{{count}}1> times with your current inventory.",
- "lowestPcb": "<0>{{name}}0> is the lowest on inventory."
+ "notEnoughPartsToProducePcb": "Sie haben nicht genügend Bauteile um diese Leiterplatte herzustellen.",
+ "notEnoughPartsToProduceBom": "Sie haben nicht genügend Bauteile, um Ihre Stückliste zu komplettieren.",
+ "noPartsAssigned": "Weisen Sie Bauteile zu, um zu ermitteln wie oft Sie diese Leiterplatte herstellen können.",
+ "pcbProduceCount": "Sie können diese Leiterplatte <1>{{count}}1> mal mit Ihrem aktuellen Lagerbestand herstellen.",
+ "bomProduceCount": "Sie können diese Stückliste <1>{{count}}1> mal mit Ihrem aktuellen Lagerbestand herstellen.",
+ "lowestPcb": "Die <0>{{name}}0> hat den niedrigsten Lagerbestand."
},
"boms": {
"header": {
- "description": "Bill of Materials, or BOM allows you to manage inventory quantities per project. You can reduce quantities for each PCB you produce, check which parts you need to buy more of and analyze costs.
Choose or create the project to manage BOM for.
"
+ "description": "Die Stückliste ermöglicht es Ihnen, den Lagerbestand pro Projekt zu verwalten. Sie können die Mengen für jede hergestellte Leiterplatte reduzieren, und überprüfen welche Teile Sie in höherer Stückzahl kaufen müssen um die Kosten zu analysieren.
Wählen Sie das Projekt aus, für das Sie die Stückliste (BOM) verwalten möchten, oder erstellen Sie ein neues Projekt.
"
}
},
"partTypes": {
- "title": "Part Types",
- "description": "Part Types allow you to separate your parts by type. <1>Parent1> types allow for unlimited part type hierarchy.<3 />For example: OpAmps may be a sub-type of IC's, so OpAmp's parent type is IC."
+ "title": "Bauteil Typen",
+ "description": "Bauteil Typen ermöglichen es Ihnen, Ihre Teile nach Typ zu trennen. <1>Übergeordnete1> Teilearten ermöglichen eine unbegrenzte Hierarchie von Bauteil Teiletypen.<3/>Als Beispiel können Operationsverstärker Untertypen von ICs sein. Daher ist der übergeordnete Bauteil Typ von OpAmp <1>>IC<1>.",
+ "rename": "Bauteil Type umbenennen",
+ "edit": "Bauteil Type editieren",
+ "partCount": "Die Anzahl an Bauteilen in dieser Kategorie",
+ "viewParts": "Bauteile anzeigen"
},
"exportData": {
- "title": "Import/Export Data",
- "description": "Import or Export your Binner database to a human-readable format.",
- "uploadNote": "Drag a document to upload, or click to select files",
- "acceptedFileTypes": "Accepted file types: \"*.sql, *.xls, *.xlsx, *.csv\"",
- "importResult": "Import Result",
- "totalRowsImported": "Total Rows Imported",
- "totalProjectsImported": "Projects Imported",
- "totalPartTypesImported": "Part Types Imported",
- "totalPartsImported": "Parts Imported"
+ "title": "Daten Import/Export",
+ "description": "Importien Sie Ihre Binner Datenbank oder Exportieren Sie diese in ein lesbares Format.",
+ "uploadNote": "Ziehen Sie ein Dokument hier hinein, um es hochzuladen oder klicken Sie um Dateien auszuwählen.",
+ "acceptedFileTypes": "Zulässige Dateiformate: \"*.sql, *.xls, *.xlsx, *.csv\"",
+ "importResult": "Imort Ergebnis",
+ "totalRowsImported": "Insgesamt importierte Zeilen",
+ "totalProjectsImported": "Importierte Projekte",
+ "totalPartTypesImported": "Importierte Bauteil Typen",
+ "totalPartsImported": "Bauteile importiert",
+ "noFilesSelected": "Keine Dateien für den Upload ausgewählt!",
+ "importUploadFailed": "Hochladen fehlgeschlagen!",
+ "importFailed": "Datenimport fehlgeschlagen.",
+ "importSuccess": "Datenimport erfolgreich!",
+ "exportFailed": "Datenexport fehlgeschlagen!",
+ "exportSuccess": "Datenexport erfolgreich!",
+ "fileNotSupported": "Díe Datei '{{name}}' mit Dateiformat '{{type}}'ist kein akzeptiertes Dateiformat!",
+ "chooseFormat": "Dateiformat wählen"
},
"tools": {
- "title": "Tools",
- "description": "Binner includes a suite of free utilities common to daily life in electrical engineering.",
- "resistorColorCodeCalc": "Resistor Color Code Calculator",
- "ohmsLawCalc": "Ohms Law Calculator",
- "voltageDividerCalc": "Voltage Divider Calculator",
+ "title": "Werkzeuge",
+ "description": "Binner enthält eine Reihe kostenloser Dienstprogramme für Aufgaben die im täglichen Leben der Elektrotechnik häufig vorkommen.",
+ "resistorColorCodeCalc": "Rechner für Widerstandsfarbcode",
+ "ohmsLawCalc": "Rechner für Ohmsches Gesetz",
+ "voltageDividerCalc": "Rechner für Spannungsteiler",
"barcodeScanner": "Barcode Scanner"
},
"barcodeScanner": {
"title": "Barcode Scanner",
- "description": "Test your barcode scanner to see what values it outputs.",
- "detected": "Detected",
- "waitingForInput": "Waiting for input..."
+ "description": "Testen Sie Ihren Barcode-Scanner um zu sehen welche Werte er ausgibt.",
+ "detected": "Erkannt",
+ "waitingForInput": "Warte auf Eingabe..."
},
"settings": {
- "title": "Settings",
- "description": "Configure your integrations, printer configuration, as well as label part templates. <1 /> Additional help can be found on the <3>Wiki3>",
+ "title": "Einstellungen",
+ "description": "Konfigurieren Sie Ihre Integrationen, Druckereinstellungen sowie Vorlagen für die Etikettierung von Teilen. <1 /> Weitere Hilfe finden Sie auf der <3>Wiki3> Seite",
"confirm": {
- "mustAuthenticateHeader": "Must Authenticate",
- "mustAuthenticate": "External Api is requesting that you authenticate first. You will be redirected back after authenticating with the external provider."
+ "mustAuthenticateHeader": "Authentifizierung ist erforderlich.",
+ "mustAuthenticate": "Die externe API erfordert eine vorherige Authentifizierung. Nach der Authentifizierung beim Externen Anbieter werden Sie zurückgeleitet."
},
- "integrations": "Integrations",
- "integrationsDescription": "To integrate with DigiKey, Mouser, Arrow or Octopart/Nexar API's you must obtain API keys for each service you wish to use. <1 /> Adding integrations will greatly enhance your experience.",
+ "integrations": "Integrationen",
+ "integrationsDescription": "Um eine Integration mit den API-Diensten von DigiKey, Mouser, Arrow oder Octopart/Nexar durchzuführen, benötigen Sie einen API-Schlüssel für jeden Dienst den Sie verwenden möchten. Hinzufügen von Integrationen wird Ihr Erlebnis erheblich verbessern.",
"swarm": "Swarm",
- "swarmDescription": "Swarm is a free API service provided by <1>Binner's cloud service1> that contains part metadata from many aggregate sources. It is the primary source of part, media and datasheet information. Registering for your own API Keys will give you higher request limits and can be obtained at <3>https://binner.io/swarm3>",
- "swarmSupport": "Swarm Support",
+ "swarmDescription": "Swarm ist ein kostenfreier API-Dienst durch den <1>Cloud Service1> von Binner. Dieser umfasst die Integration vieler aggregierten Quellen von Metadaten für Bauteileinformationen. Es ist die Hauptquelle für Bauteile-, Medien- und Datenblattinformationen. Wenn Sie sich für Ihre eigenen API-Schlüssel registrieren, erhalten Sie höhere Abfragegrenzen. Diese Schlüssel können über die Website <3>https://binner.io/swarm3> bezogen werden.",
+ "swarmSupport": "Swarm Integration",
"digikey": "DigiKey",
- "digikeyDescription": "Digikey API Keys are free and can be obtained at <1>https://developer.digikey.com/1>",
- "digikeySupport": "DigiKey Support",
+ "digikeyDescription": "Digikey API-Schlüssel sind kostenlos und können unter folgendem Link bezogen werden <1>https://developer.digikey.com/1>",
+ "digikeySupport": "DigiKey Integration",
"mouser": "Mouser",
- "mouserDescription": "Mouser API Keys can be obtained at <1>https://www.mouser.com/api-hub/1>",
- "mouserSupport": "Mouser Support",
- "searchApiKey": "Search Api Key",
- "ordersApiKey": "Orders Api Key",
- "cartApiKey": "Cart Api Key",
+ "mouserDescription": "Mouser API-Schlüssel können unter folgendem Link bezogen werden <1>https://www.mouser.com/api-hub/1>",
+ "mouserSupport": "Mouser Integration",
+ "searchApiKey": "API-Schlüssel für Suchfunktion",
+ "ordersApiKey": "API-Schlüssel für Bestellungen",
+ "cartApiKey": "API-Schlüssel für Einkaufswagen",
"arrow": "Arrow",
- "arrowDescription": "Arrow API Keys can be obtained at <1>https://developers.arrow.com/api/index.php/site/page?view=requestAPIKey1>",
- "arrowSupport": "Arrow Support",
+ "arrowDescription": "Arrow API-Schlüssel können unter folgendem Link bezogen werden <1>https://developers.arrow.com/api/index.php/site/page?view=requestAPIKey1>",
+ "arrowSupport": "Arrow Integration",
"octopartNexar": "Octopart/Nexar",
- "octopartNexarDescription": "Octopart/Nexar API Keys can be obtained at <1>https://portal.nexar.com/sign-up1>",
- "octopartNexarSupport": "Octopart/Nexar Support",
- "printerConfiguration": "Printer Configuration",
- "printerConfigDescription": "Configure your printer name as it shows up in your environment (Windows Printers or CUPS Printer Name)",
- "printerName": "Printer Name",
- "partLabelSource": "Part Label Source",
- "partLabelName": "Part Label Name",
- "partLabelTemplate": "Part Label Template",
- "partLabelTemplateDescription": "Part labels are printed according to this template.",
- "lineX": "Line {{number}}",
- "identifierX": "Identifier {{number}}",
+ "octopartNexarDescription": "Octopart/Nexar API-Schlüssel können unter folgendem Link bezogen werden <1>https://portal.nexar.com/sign-up1>",
+ "octopartNexarSupport": "Octopart/Nexar Integration",
+ "printerConfiguration": "Drucker Konfiguration",
+ "printerConfigDescription": "Konfigurieren Sie den Namen Ihres Druckers wie er in Ihrer Umgebung angezeigt wird (Windows-Drucker oder CUPS-Druckername).",
+ "printerName": "Drucker Name",
+ "partLabelSource": "Etikettenausgabe",
+ "partLabelName": "Etiketten- Herstellernummer",
+ "partLabelTemplate": "Etikettenvorlage",
+ "partLabelTemplateDescription": "Bauteile Etiketten werden gemäß dieser Vorlage ausgedruckt.",
+ "lineX": "Zeile {{number}}",
+ "identifierX": "Kennzeichner {{number}}",
+ "barcodeConfiguration": "Barcode Konfiguration",
+ "barcodeSupport": "Barcode Integration",
+ "barcodeProfile": "Barcode Profil",
+ "isBarcodeDebug": "Debug Modus",
+ "bufferTime": "Pufferzeit (ms)",
+ "prefix2d": "2D Barcode Prefix",
+ "maxKeystrokeThresholdMs": "Maximale Tastatureingabeschwelle (ms)",
"popup": {
- "forgetCredentials": "Forget any cached credentials and force reauthentication with DigiKey",
- "swarmEnabled": "Choose if you would like to enable Binner Swarm support.",
- "swarmApiKey": "Swarm api key is optional. By registering a free or paid api key you will receive higher request limits accordingly.",
- "swarmApiUrl": "Swarm's API Url",
- "swarmTimeout": "Swarm api request timeout. Default: '00:00:05' (5 seconds)",
- "digikeyEnabled": "Choose if you would like to enable DigiKey support. You will occasionally be asked to login to your DigiKey account to allow Binner to access your information.",
- "digikeySite": "Choose the DigiKey site to use.",
- "digikeyClientId": "Your DigiKey <1>Client ID1>.<3><4/>Figure 1. DigiKey Client Id settings3>",
- "digikeyClientSecret": "Your DigiKey <1>Client Secret1>.<3><4/>Figure 1. DigiKey Client Secret settings3>",
- "digikeyApiUrl": "DigiKey's API Url. This will either be <1>api.digikey.com1> (live) or <3>sandbox-api.digikey.com3> (for testing only)",
- "digikeyOAuthPostbackUrl": "Binner's postback url must be registered with DigiKey exactly as specified here, on DigiKey this is named <1>Callback URL1>. This should almost always be localhost, and no firewall settings are required as your web browser will be making the request.<3/><4/><5>Example: 5><6>localhost:8090/Authorization/Authorize6><7/><8><9/>Figure 1. DigiKey Callback URL8>",
- "mouserEnabled": "Choose if you would like to enable Mouser support.",
- "mouserSearchApiKey": "Your api key for accessing the search api.",
- "mouserOrderApiKey": "Your api key for accessing the orders api.",
- "mouserCartApiKey": "Your api key for accessing the shopping cart api.",
- "mouserApiUrl": "Mouser's API Url. This will be api.mouser.com",
- "arrowEnabled": "Choose if you would like to enable Arrow support.",
- "arrowUsername": "Your username/login for Arrow.",
- "arrowApiKey": "Your api key for Arrow.",
- "arrowApiUrl": "Arrow's API Url. This will be api.arrow.com",
- "octopartEnabled": "Choose if you would like to enable Octopart/Nexar support.",
- "octopartClientId": "Your Client Id for Octopart/Nexar.",
- "octopartClientSecret": "Your Client Secret for Octopart/Nexar.",
- "printerPrinterName": "Your printer name as it appears in Windows, or CUPS (Unix).",
- "printerPartLabelSource": "The label paper source to use.",
- "partLabelName": "The name of the label model installed in your printer. This will be specific to your printer, and must be defined in your appsettings.json under <1>WebHostServiceConfiguration.PrinterConfiguration.LabelDefinitions1>"
+ "forgetCredentials": "Verwerfen Sie alle zwischengespeicherten Anmeldeinformationen und erzwingen Sie eine erneute Authentifizierung bei DigiKey.",
+ "swarmEnabled": "Wählen Sie, ob Sie die Swarm Integration von Binner aktivieren möchten.",
+ "swarmApiKey": "Der Binner Swarm API-Schlüssel ist optional. Durch die Registrierung eines kostenlosen oder kostenpflichtigen API-Schlüssels erhalten Sie entsprechend höhere Anfragegrenzen.",
+ "swarmApiUrl": "Swarm API-URL",
+ "swarmTimeout": "Swarm API-Anfrage-Timeout. Standardmäßig: '00:00:05' (5 Sekunden).",
+ "digikeyEnabled": "Bitte wählen Sie, ob Sie die Integration von DigiKey aktivieren möchten. Sie werden gelegentlich aufgefordert sich bei Ihrem DigiKey-Konto anzumelden, um Binner den Zugriff auf Ihre Informationen zu ermöglichen.",
+ "digikeySite": "Wählen Sie die DigiKey-Website, die Sie verwenden möchten.",
+ "digikeyClientId": "Ihre DigiKey <1>Client ID1>.<3><4/>Bild 1. DigiKey Client-ID-Einstellungen3>",
+ "digikeyClientSecret": "Ihr DigiKey <1>Client Secret1>.<3><4/>Bild 1. DigiKey Client Secret Einstellungen3>",
+ "digikeyApiUrl": "Die API-URL von DigiKey kann entweder <1>api.digikey.com1> (für den Live-Betrieb) oder <3>sandbox-api.digikey.com3> (nur für Tests) sein.",
+ "digikeyOAuthPostbackUrl": "Die Postback-URL von Binner muss bei DigiKey genau wie hier angegeben registriert werden. Bei DigiKey wird dies als <1>Callback URL1> bezeichnet. In den meisten Fällen sollte dies (localhost) sein und es sind keine Firewall-Einstellungen erforderlich da die Anfrage über Ihren Webbrowser erfolgt.<3/><4/><5>Bsp.: 5><6>localhost:8090/Authorization/Authorize6><7/><8><9/>Bild 1. DigiKey Callback URL8>",
+ "mouserEnabled": "Bitte wählen Sie, ob Sie die Integration von Mouser aktivieren möchten.",
+ "mouserSearchApiKey": "Ihr API-Schlüssel für den Zugriff auf die Such-API.",
+ "mouserOrderApiKey": "Ihr API-Schlüssel für den Zugriff auf die Bestell-API.",
+ "mouserCartApiKey": "Ihr API-Schlüssel für den Zugriff auf die Einkaufswagen-API.",
+ "mouserApiUrl": "Die API-URL von Mouser ist api.mouser.com.",
+ "arrowEnabled": "Bitte wählen Sie, ob Sie die Integration von Arrow aktivieren möchten.",
+ "arrowUsername": "Ihr Benutzername/Passwort für Arrow.",
+ "arrowApiKey": "Ihr API-Schlüssel für Arrow.",
+ "arrowApiUrl": "Die API-URL von Arrow ist api.arrow.com.",
+ "octopartEnabled": "Bitte wählen Sie, ob Sie die Integration von Octopart/Nexar aktivieren möchten.",
+ "octopartClientId": "Ihre Client Id für Octopart/Nexar.",
+ "octopartClientSecret": "Ihr Client Secret für Octopart/Nexar.",
+ "printerPrinterName": "Name Ihres Druckers, wie er in Ihrer Umgebung angezeigt wird (Windows-Drucker oder CUPS (Unix).",
+ "printerPartLabelSource": "Die Papierquelle für Etiketten",
+ "partLabelName": "Der Name des Etikettenmodells welches in Ihrem Drucker installiert ist. Dies ist spezifisch für Ihren Drucker und muss in der Datei appsettings.json definiert werden. <1>WebHostServiceConfiguration.PrinterConfiguration.LabelDefinitions1>",
+ "barcodeSupportEnabled": "Bitte wählen Sie, ob Sie die Barcodeunterstützung aktivieren wollen.",
+ "barcodeProfile": "Bitte wählen Sie das Barcode Format welches Sie für Ihren Barcodescanner verwenden möchten.",
+ "barcodePrefix": "Das Prefix welches für 2D Barcodes verwendet wird ist normalerweise '[)>'.",
+ "barcodeBufferTime": "Die Pufferzeit in Millisekunden, während der Barcodescanner Daten scannt. Einige Barcodescanner erfordern mehr oder weniger Zeit. Standardeinstellung: 80",
+ "barcodeIsDebug": "Aktivierung des Barcode Debug Modus gibt Diagnoseinformationen in der Browser Konsole aus.",
+ "maxKeystrokeThresholdMs": "Die maximale Wartezeit in Millisekunden zwischen den Tastendrücken.",
+ "prefix2d": "Das Prefix welches für 2D Barcodes verwendet wird ist normalerweise '[)>'."
}
},
"datasheet": {
- "title": "Datasheet Search"
+ "title": "Datenblattsuche",
+ "description": "Suchen Sie nach Datenblättern anhand von Bauteilebezeichnungen.",
+ "partType": "Bauteile Type",
+ "manufacturerPartNumber": "Herstellernummer",
+ "manufacturer": "Hersteller",
+ "website": "Webseite",
+ "datasheet": "Datenblatt",
+ "packageType": "Package Type",
+ "status": "Status",
+ "datasheets": "Datenblatt",
+ "actions": "Aktionen"
},
"orderImport": {
- "title": "Order Import",
- "enterOrderNumber": "Enter your order number for the supplier.",
- "webOrderNum": "Web Order #",
- "salesOrderNum": "Sales Order #",
- "orderNum": "Order Number",
- "instructions": "For <1>DigiKey1> orders, this is the <3>Sales Order #3>.<4 />For <6>Mouser6> orders, this is the <8>Web Order #8>.<10 />For <12>Arrow12> orders, this is the <14>Order Number14>.",
- "mouserNote": "<0>Note:0> Mouser only supports Web Order # so make sure when importing that you are using the Web Order # and <2>not the Sales Order #2>",
- "arrowNote": "<0>Note:0> Arrow requires that you first request access to their Order API by sending them an email. See <2>Arrow Order Api2>"
+ "title": "Bestellimport",
+ "enterOrderNumber": "Geben Sie Ihre Bestellnummer für den Lieferanten ein.",
+ "webOrderNum": "Web Order Number",
+ "salesOrderNum": "Sales Order Number",
+ "orderNum": "Bestellnummer",
+ "instructions": "Bitte beachten Sie: Für <1>DigiKey1> Bestellungen, ist dies die <3>Sales Order Number3>.<4 />Für <6>Mouser6> Bestellungen, ist dies die <8>Web Order Number8>.<10 />Für <12>Arrow12> Bestellungen, ist dies die <14>Order Number14>.",
+ "mouserNote": "<0>Bitte beachten Sie:0> Mouser unterstützt nur Web Order Number. Stellen Sie also sicher, dass Sie beim Importieren die Web Order Number und <2>nicht die Sales Order Number verwenden2>",
+ "arrowNote": "<0>Bitte beachten Sie:0> Arrow fordert, dass Sie zuerst Zugriff auf ihre Order-API beantragen, indem Sie eine E-Mail an Arrow senden. Siehe auch <2>Arrow Order Api2>",
+ "addedToInventory": "Zum Lagerbestand hinzugefügt",
+ "alreadyInInventory": "Befindet sich bereits im Lagerbestand"
},
"printLabels": {
- "title": "Print Labels",
- "description": "Print custom multi-line labels for your storage bins.<1 />Print history is kept so you can reuse templates for your labels.",
- "printHistory": "Print History",
+ "title": "Etiketten drucken",
+ "description": "Drucken Sie individuelle mehrzeilige Etiketten für Ihre Lagerbehälter.<1 />Die Druckhistorie wird gespeichert, damit Sie Vorlagen für Ihre Etiketten wiederverwenden können.",
+ "printHistory": "Druckhistorie",
+ "addLineToStart": "Fügen Sie eine Zeile hinzu um zu starten.",
+ "barcodeFontsNotice": "Barcode-Schriftarten können problematisch sein. Werte müssen durch einen Asteriskus (*) umgeben sein, z.B.*Wert*, oder durch Klammern, z.B. (Wert), um korrekt codiert zu werden. Verwenden Sie für beste Genauigkeit eine Schriftgröße von [6, 12, 18, 24, 30, 36]. Alternativ können Sie (IsBarcode) aktivieren / deaktivieren und ein Barcode wird für Sie erstellt ohne dass Sonderzeichen erforderlich sind.",
"label": {
- "labelType": "Label Type",
- "paperSource": "Paper Source",
- "labelNum": "Label #",
+ "labelType": "Etikettentype",
+ "paperSource": "Papierquelle",
+ "labelNum": "Label Nummer",
"text": "Text",
- "fontSize": "FontSize",
- "alignment": "Alignment",
- "topMargin": "Top Margin",
- "leftMargin": "Left Margin",
- "font": "Font",
- "isBarcode": "Is Barcode",
- "center": "Center"
+ "fontSize": "Schriftgröße",
+ "alignment": "Ausrichtung",
+ "topMargin": "Oberer Seitenrand",
+ "leftMargin": "Linker Seitenrand",
+ "font": "Schriftart",
+ "isBarcode": "Barcode",
+ "center": "Zentriert"
}
},
"project": {
- "title": "Edit Project",
- "description": "Projects are used as part of your BOM, allowing you to associate parts to multiple PCBs.",
- "pcbs": "PCBs",
- "produceHistory": "Production History",
+ "title": "Projekt editieren",
+ "description": "Projekte werden als Teil Ihrer Stückliste verwendet, sodass Sie Teile mehreren Leiterplatten zuordnen können.",
+ "pcbs": "Leiterplatten",
+ "produceHistory": "Produktionshistorie",
"confirm": {
- "deleteProjectHeader": "Delete Project",
- "deletePcbHeader": "Delete Pcb",
- "deleteProduceHistoryHeader": "Delete History Record"
+ "deleteProjectHeader": "Projekt löschen",
+ "deletePcbHeader": "Leiterplatte löschen",
+ "deleteProduceHistoryHeader": "Historie löschen"
},
"placeholder": {
- "name": "My Project",
- "location": "New York"
+ "name": "Projektname",
+ "location": "Projektlokation"
},
"popup": {
- "name": "Enter the name of your project/BOM",
- "description": "Enter a description that summarizes your project",
- "location": "Your project's location <1>(optional)1>",
- "color": "Associate a color with this project for easy identification",
- "quantityProduced": "The production quantity specified",
- "includeUnassociated": "Indicates if parts not associated with a PCB were produced",
- "totalConsumed": "The total number of parts consumed",
- "pcbsProduced": "The Pcbs that were produced"
+ "name": "Bitte tragen Sie den Namen Ihres Projektes oder Ihrer Stückliste ein",
+ "description": "Geben Sie eine Beschreibung ein, die Ihr Projekt zusammenfasst",
+ "location": "Ihre Projektlokation <1>(optional)1>",
+ "color": "Weisen Sie diesem Projekt eine Farbe zur einfachen Identifizierung zu",
+ "quantityProduced": "Die angegebene Produktionsmenge",
+ "includeUnassociated": "Gibt an ob Bauteile die keiner Leiterplatte zugeordnet sind verbaut wurden",
+ "totalConsumed": "Die Gesamtanzahl der verbrauchten Bauteile",
+ "pcbsProduced": "Leiterplatten die produziert wurden"
}
},
"tool": {
"ohmsLaw": {
- "title": "Ohms Law Calculator",
- "description": "Ohms Law explains the relationship between voltage, current and resistance. Input any 2 values to calculate the other 2 values.",
- "voltage": "Voltage",
- "current": "Current",
- "resistance": "Resistance",
- "power": "Power"
+ "title": "Rechner für Ohmsches Gesetz",
+ "description": "Das Ohmsche Gesetz erklärt die Beziehung zwischen Spannung, Stromstärke und Widerstand. Geben Sie zwei Werte ein um die anderen beiden Werte zu berechnen.",
+ "voltage": "Spannung",
+ "current": "Strom",
+ "resistance": "Widerstand",
+ "power": "Leistung"
},
"resistanceColorCalc": {
- "title": "Resistor Color Code Calculator",
- "4band": "4 Band",
- "5band": "5 Band",
- "6band": "6 Band",
- "numOfBands": "Choose the number of bands",
- "chooseBands": "Choose bands...",
- "resistance": "Resistance"
+ "title": "Rechner für Widerstandsfarbcode",
+ "4band": "4 Ringe",
+ "5band": "5 Ringe",
+ "6band": "6 Ringe",
+ "numOfBands": "Bitte wählen Sie die Anzahl an Ringen",
+ "chooseBands": "Ringe wählen....",
+ "resistance": "Widerstandswert"
},
"voltDividerCalc": {
- "title": "Voltage Divider Calculator",
- "description": "A voltage divider uses 2 resistors to reduce a voltage to a fraction of its input voltage.",
- "voltageInput": "Voltage Input",
- "resistor": "Resistor",
- "outputVoltage": "Output Voltage"
+ "title": "Rechner für Spannungsteiler",
+ "description": "Ein Spannungsteiler verwendet zwei Widerstände, um eine Spannung auf einen Bruchteil ihrer Eingangsspannung zu reduzieren.",
+ "voltageInput": "Eingangsspannung",
+ "resistor": "Widerstand",
+ "outputVoltage": "Ausgangsspannung"
}
},
"accountSettings": {
- "title": "Account Settings",
- "description": "Edit account settings"
+ "title": "Kontoeinstellungen",
+ "description": "Kontoeinstellungen bearbeiten"
},
"activateLicense": {
"title": "",
"description": ""
},
"admin": {
+ "title": "Admin",
+ "description": "Systemadministration zur Verwaltung Ihrer Installation.",
+ "header": "Wählen Sie eine Administrationsaufgabe aus.",
"users": {
- "title": "User Management",
- "description": "Administration of users.",
- "accountType": "Account Type",
- "masterAccount": "Master Admin Account",
- "canNotDeleteAdmin": "Can not delete master admin",
- "userAdded": "User {{emailAddress}} added!",
+ "title": "Benutzerverwaltung",
+ "baseDescription": "Verwalten Sie die Benutzer Ihres Systems.",
+ "description": "Benutzerkonten verwalten",
+ "accountType": "Rolle",
+ "masterAccount": "Systemadministrator- Konto",
+ "canNotDeleteAdmin": "Der Systemadministrator kann nicht gelöscht werden.",
+ "userAdded": "Benutzer {{emailAddress}} hinzugefügt!",
"confirm": {
- "areYouSure": "Are you sure you want to delete this user?"
+ "areYouSure": "Wollen Sie diesen User wirklich löschen?"
},
"popup": {
- "name": "Specify the user's first and last name",
- "emailAddress": "Specify the user's username/email"
+ "name": "Geben Sie den Vor- und Nachnamen des Benutzers ein.",
+ "emailAddress": "Geben Sie den Benutzernamen/E-Mail Adresse des Benutzers ein."
}
},
"activateLicense": {
- "title": "Activate License",
- "description": "Enter your license key to enable pro features on your local Binner installation. Don't have a license key? Visit <1>Binner Cloud1>"
+ "title": "Lizenz aktivieren",
+ "description": "Geben Sie Ihren Lizenzschlüssel ein, um die Pro-Funktionen Ihrer lokalen Binner-Installation zu aktivieren. Haben Sie keinen Lizenzschlüssel? Besuchen Sie <1>Binner Cloud1>."
},
"updateParts": {
- "title": "Update Part Metadata",
- "description": "Refresh information from external APIs and choose which fields you would like to update."
+ "title": "Aktualisieren Sie die Metadaten für das Bauteil.",
+ "description": "Aktualisieren Sie die Informationen von externen APIs und wählen Sie aus, welche Felder Sie aktualisieren möchten."
+ },
+ "systemInfo": {
+ "title": "System Informationen",
+ "baseDescription": "Erhalten Sie Informationen über Ihre Binner-Installation.",
+ "description": "Informationen zu Ihrer Binner-Installation. Diese Einstellungen finden Sie in der Konfigurationsdatei des Dienstes 'appsettings.json'.",
+ "version": "Version",
+ "lastestVersion": "Binner Version",
+ "license": "Lizenz",
+ "api": "API",
+ "enabledIntegrations": "Aktivierte Integrationen",
+ "language": "Sprache",
+ "currency": "Währung",
+ "server": "Server",
+ "data": "Daten",
+ "storageProvider": "Speicher Anbieter",
+ "storageProviderConfig": "Speicher Anbieter Konfiguration",
+ "installationPath": "Installationspfad",
+ "userFilesUploadPath": "Pfad zum Hochladen von Benutzerdateien.",
+ "logPath": "Protokollierungspfad",
+ "ip": "IP",
+ "port": "Port",
+ "totalParts": "Anzahl an Bauteilen gesamt",
+ "totalUsers": "Anzahl an Benutzern gesamt",
+ "totalPartTypes": "Anzahl an Bauteiltypen gesamt",
+ "totalUserFiles": "Anzahl an Benutzerdateien gesamt",
+ "userFilesSize": "Dateigröße der Benutzerdateien"
+ },
+ "backupRestore": {
+ "title": "Sichern/Wiederherstelen",
+ "baseDescription": "Sichern oder stellen Sie Ihre Binner-Installation wieder her."
+ }
+ },
+ "backup": {
+ "title": "Sichern / Wiederherstellen",
+ "baseDescription": "Sichern oder stellen Sie Ihre Binner-Installation wieder her.",
+ "description": "Erstellen Sie ein Backup oder stellen Sie es aus einer Sicherung wieder her.",
+ "acceptedFileTypes": "Zulässige Dateiformate: \"*.bak\"",
+ "backupDescription": "Erstellen Sie einen Snapshot Ihrer Binner Installation."
+ },
+ "printing": {
+ "title": "Etiketten drucken",
+ "description": "Drucken von Etiketten und Etikettenvorlagen.",
+ "header": "Wählen Sie eine Druck- Aufgabe",
+ "labelTemplates": {
+ "title": "Etikettenvorlagen",
+ "description": "Bearbeiten von Etiketten und individuellen Etikettenvorlagen.",
+ "baseDescription": "Erstellen und Bearbeiten von Etikettenvorlagen.",
+ "barcodeLabels": "Barcode Etiketten",
+ "custom": "Benutzerdefiniert",
+ "preview": "Vorschau",
+ "labelEditor": "Etiketten Editor",
+ "manage": "Verwalten",
+ "zoomLevel": "Vergrößerungsfaktor:",
+ "labelProperties": "Etiketteneigenschaften",
+ "labelTemplate": "Etikettenvorlage",
+ "width": "Breite",
+ "height": "Höhe",
+ "dpi": "Auflösung in Dpi",
+ "margin": "Seitenrand",
+ "templateName": "Vorlagenname",
+ "itemProperties": "Elementeigenschaften",
+ "align": "Ausrichtung",
+ "font": "Schriftart",
+ "rotate": "Drehung",
+ "fontSize": "Schriftgröße",
+ "fontWeight": "Schriftstärke",
+ "color": "Farbe",
+ "length": "Länge",
+ "textBarcodeValue": "Text/Barcode Inhalt",
+ "partInformation": "Bauteileinformation",
+ "button": {
+ "print": "Drucken",
+ "load": "Öffnen..."
+ }
+ },
+ "printLabels": {
+ "title": "Benutzerdefinierte Etiketten drucken",
+ "baseDescription": "Drucken Sie individuelle Etiketten für jede Aufgabe."
+ },
+ "bulkprint": {
+ "title": "Massendruck",
+ "description": "Drucken Sie Etiketten für mehrere Bauteile auf einmal.",
+ "baseDescription": "Stapel- Etikettendruck für Bauteile."
}
}
},
"bc": {
- "home": "Home",
- "boms": "BOMs",
- "bom": "BOM",
- "editProject": "Edit Project",
- "tools": "Tools",
- "ohmsLaw": "Ohms Law Calculator",
- "resistanceColorCalc": "Resistor Color Code Calculator",
- "voltDividerCalc": "Voltage Divider Calculator",
+ "home": "Hauptseite",
+ "boms": "Stücklisten",
+ "bom": "Stückliste",
+ "editProject": "Projekt bearbeiten",
+ "tools": "Werkzeuge",
+ "ohmsLaw": "Rechner für Ohmsches Gesetz",
+ "resistanceColorCalc": "Rechner für Widerstandsfarbcode",
+ "voltDividerCalc": "Rechner für Spannungsteiler",
"admin": "Admin",
- "users": "Users",
- "user": "User",
- "help": "Help",
- "updatePartMetadata": "Update Part Metadata",
- "backupRestore": "Backup / Restore",
- "accountSettings": "Account Settings",
- "activateLicense": "Activate License"
+ "users": "Benutzer",
+ "user": "Benutzer",
+ "help": "Hilfe",
+ "updatePartMetadata": "Aktualisieren Sie die Metadaten für das Bauteil.",
+ "backupRestore": "Sichern / Wiederherstellen",
+ "accountSettings": "Kontoeinstellungen",
+ "activateLicense": "Lizenz aktivieren",
+ "systemInfo": "System Info",
+ "barcodeScanner": "Barcode Scanner",
+ "printing": "Drucken",
+ "labelTemplates": "Ettikettenvorlagen",
+ "bulkPrint": "Massendruck",
+ "inventory": "Lagerbestand"
},
"comp": {
"navBar": {
- "search": "Search",
- "help": "Help",
- "home": "Home",
- "addInventory": "Add Inventory",
- "orderImport": "Order Import"
+ "search": "Suche",
+ "help": "Hilfe",
+ "home": "Hauptseite",
+ "addInventory": "Bestand hinzufügen",
+ "orderImport": "Bestellung importieren"
},
"barcodeScannerInput": {
- "supportsBarcodeScanning": "This page supports barcode scanning. <1>More Info1>"
+ "supportsBarcodeScanning": "Diese Seite unterstützt das Scannen von Barcodes. <1>Mehr dazu...1>"
},
"partTypeSelector": {
- "choosePartType": "Choose part type"
+ "choosePartType": "Wähle Bauteiltype"
},
"partsGrid": {
- "recordsPerPage": "records per page",
- "parts": "Parts",
- "part": "Part",
- "quantity": "Quantity",
- "lowStock": "Low Stock",
- "mfrPart": "Manufacturer Part",
- "description": "Description",
- "location": "Location",
- "binNumber": "Bin Number",
- "binNumber2": "Bin Number 2",
- "cost": "Cost",
- "digikeyPart": "DigiKey Part",
- "mouserPart": "Mouser Part",
- "arrowPart": "Arrow Part",
- "datasheet": "Datasheet",
- "noResults": "No results.",
- "ok": "Ok",
+ "recordsPerPage": "Datensätze pro Seite",
+ "parts": "Bauteile",
+ "partNumber": "Bauteil",
+ "quantity": "Stückzahl",
+ "lowStock": "Lagerbestand niedrig!",
+ "manufacturerPartNumber": "Hersteller Teilenummer",
+ "description": "Beschreibung",
+ "location": "Lagerort",
+ "binNumber": "Behälternummer",
+ "binNumber2": "Behälternummer 2",
+ "cost": "Kosten",
+ "digikeyPart": "DigiKey Bauteil",
+ "mouserPart": "Mouser Bauteil",
+ "arrowPart": "Arrow Bauteil",
+ "datasheet": "Datenblatt",
+ "noResults": "Keine Ergebniss gefunden.",
+ "partType": "Bauteiltype",
+ "actions": "Aktionen",
+ "lowStockThreshold": "Schwellwert niedriger Lagerbestand",
+ "digikeyPartNumber": "DigiKey Teilenummer",
+ "mouserPartNumber": "Mouser Teilenummer",
+ "arrowPartNumber": "Arrow Teilenummer",
+ "packageType": "Package Typ",
+ "mountingType": "Montagetyp",
+ "symbolName": "Symbol Name",
+ "footprintName": "Footprint Name",
+ "extensionValue1": "Erweiterungswert 1",
+ "extensionValue2": "Erweiterungswert 2",
+ "ok": "OK",
"popup": {
- "lowStock": "Quantities below this value will indicate the part is low on stock.",
- "quantity": "The quantity of parts currently in stock."
+ "lowStock": "Mengen unter diesem Wert werden als geringen Lagerbestand für das Bauteil angezeigt.",
+ "quantity": "Die aktuelle Menge an Bauteilen im Lagerbestand."
},
"confirm": {
- "deletePart": "Are you sure you want to delete part {{partNumber}}?"
+ "deletePart": "Sind Sie sicher, dass Sie das Bauteil {{partNumber}} löschen möchten?"
},
"error": {
- "failedSave": "Error saving part {{partNumber}} - {{statusText}}"
+ "failedSave": "Fehler beim speichern des Bauteils! {{partNumber}} - {{statusText}}"
}
},
"addBomPartModal": {
- "title": "BOM Management",
- "description": "Add a part to your BOM, optionally associating it with a particular PCB.",
- "none": "None",
- "confirmHeader": "Add Part",
- "confirmAddUnassociated": "You have not selected a part from your inventory.<1/>Are you sure you want to add this part <3>{{keyword}}3> without associating it to a part in your inventory?<5/><6/><7>Note: You will still be able to manage it's quantity if you choose to proceed, but it will not appear in your inventory.7>",
- "selectPcb": "Select PCB",
- "choosePcb": "Choose PCB",
+ "title": "Stücklistenverwaltung",
+ "description": "Fügen Sie ein Bauteil zur Stückliste hinzu und weisen Sie es optional einer bestimmten Leiterplatte zu.",
+ "none": "Keine",
+ "confirmHeader": "Bauteil hinzufügen",
+ "confirmAddUnassociated": "Sie haben kein Bauteil aus Ihrem Lagerbestand ausgewählt.<1/>Sind Sie sicher, dass Sie dieses Bauteil <3>{{keyword}}3> hinzufügen möchten ohne es einem Bauteil in Ihrem Lagerbestand zuzuordnen?<5/><6/><7>Hinweis: Wenn Sie fortfahren können Sie die Menge des Bauteils immer noch verwalten, es wird jedoch nicht in Ihrem Lagerbestand angezeigt.7>",
+ "selectPcb": "Leiterplatte wählen",
+ "choosePcb": "Leiterplatte auswählen",
"popup": {
- "selectPcb": "Select the pcb you would like to add parts to. If you choose not to select a PCB, the part will be added to your BOM without PCB associations.",
- "quantity": "Enter the quantity of this part required to produce a single PCB.",
- "referenceIds": "Enter a custom Reference Id you can use for identifying this part.<1/>Examples: <3>Optoisolator13>, <5>Capacitor Array5>",
- "schematicReferenceIds": "Enter one or more Schematic Reference Ids you can use for identifying this part on the PCB silkscreen.<1/>Examples: <3>D13>, <5>C25>, <7>Q17>",
- "notes": "Enter any custom notes for this part.",
- "partNumber": "Search for a part in your inventory",
- "customDescription": "Enter your own custom description for this part."
+ "selectPcb": "Wählen Sie die Leiterplatte (PCB) aus, zu der Sie Bauteile hinzufügen möchten. Wenn Sie keine Leiterplatte auswählen möchten, wird das Bauteil Ihrer Stückliste (BOM) ohne Leiterplattenzuordnungen hinzugefügt.",
+ "quantity": "Geben Sie die benötigte Stückzahl dieses Bauteils ein, um eine einzelne Leiterplatte herzustellen.",
+ "referenceIds": "Geben Sie eine benutzerdefinierte Referenz-ID ein, die Sie zur Identifizierung dieses Bauteils verwenden können. Beispiele: <3>Optoisolator13>, <5>Kondensator-Array5>",
+ "schematicReferenceIds": "Geben Sie eine oder mehrere Referenz-IDs für das Schaltbild ein, die Sie zur Identifizierung dieses Bauteils auf dem PCB-Siebdruck verwenden können. Beispiele: <3>D13>, <5>C25>, <7>Q17>",
+ "notes": "Geben Sie beliebige Notizen für dieses Bauteil ein.",
+ "partNumber": "Suchen Sie nach einem Bauteil in Ihrem Lagerbestand.",
+ "customDescription": "Geben Sie Ihre eigene Beschreibung für dieses Bauteil ein."
}
},
"addPcbModal": {
- "title": "BOM Management",
- "description": "Adding a PCB allows you to associate your parts with a specific PCB, and even multiple PCBs within a project.",
- "header": "Add PCB",
+ "title": "Stücklistenverwaltung",
+ "description": "Das Hinzufügen einer Leiterplatte ermöglicht es Ihre Bauteile einer bestimmten Leiterplatte zuzuordnen, sogar mehreren Leiterplatten innerhalb eines Projekts.",
+ "header": "Leiterplatte hinzufügen",
"popup": {
- "name": "Enter the name of your pcb board or module",
- "description": "Enter a description describing what your pcb does. (<1>optional1>)",
- "quantity": "Enter a quantity (multiplier) of PCB's produced each time you create a PCB. This should normally be 1, unless you require several copies of the same PCB for producing your BOM project.<1/><2/><3>Example:3> An audio amplifier may require 2 of the same PCB's, one for each left/right channel each time you produce the entire assembly.",
- "cost": "The cost to produce a single PCB board (without components). If using quantity, only specify the cost for a single board as quantity will be taken into consideration.",
- "serialNumberFormat": "Enter your serial number format as a string. The left-most portion of the string will be incremented by 1 each time you produce a PCB. (<1>optional1>)<2/>Example: <4>SN000000004>"
+ "name": "Geben Sie den Namen Ihrer Leiterplatte oder Ihres Moduls ein.",
+ "description": "Geben Sie eine Funktionsbeschreibung Ihrer Leiterplatte ein. (<1>optional1>)",
+ "quantity": "Geben Sie eine Stückzahl (Multiplikator) der hergestellten Leiterplatten ein die jedes Mal erstellt werden wenn Sie eine Leiterplatte herstellen. Normalerweise sollte dies 1 sein, es sei denn Sie benötigen mehrere Kopien derselben Leiterplatte für die Herstellung Ihres Stücklistenprojekts.<1/><2/><3>Beispiel:3> Ein Audioverstärker erfordert möglicherweise jedes Mal 2 identische Leiterplatten, eine für jeden Kanal (links/rechts) wenn Sie die gesamte Baugruppe herstellen.",
+ "cost": "Die Kosten zur Herstellung einer einzelnen Leiterplatte (ohne Bauteile). Wenn Sie eine Stückzahl angeben, geben Sie nur die Kosten für eine einzelne Leiterplatte an, da die Stückzahl berücksichtigt wird.",
+ "serialNumberFormat": "Geben Sie das Format Ihrer Seriennummer als Zeichenkette ein. Der linkere Teil der Zeichenkette wird jedes Mal um 1 erhöht, wenn Sie eine Leiterplatte herstellen. (<1>optional1>)<2/>Beispiel: <4>SN000000004>"
},
"placeholder": {
- "name": "Main Board or module name",
- "description": "Description of pcb"
+ "name": "Hauptplatine oder Modulname",
+ "description": "Beschreibung der Leiterplatte"
}
},
"producePcbModal": {
- "title": "BOM Management",
+ "title": "Stücklistenverwaltung",
"description": "",
- "header": "Produce Pcb",
- "nextSerialNumber": "Next Serial Number",
- "maxQty": "Max Qty",
+ "header": "Leiterplatten produzieren",
+ "nextSerialNumber": "Nächste Seriennummer",
+ "maxQty": "Maximale Stückzahl",
"options": {
- "all": "All",
- "allDescription": "Produce the entire BOM",
- "unassociated": "Unassociated",
- "unassociatedDescription": "Produce parts not associated to a PCB"
+ "all": "Alle",
+ "allDescription": "Die gesamte Stückliste produzieren",
+ "unassociated": "Nicht zugeordnet",
+ "unassociatedDescription": "Bauteile herstellen, die keiner Leiterplatte zugeordnet sind"
},
"popup": {
- "pcbs": "Select the pcb(s) you would like to produce. If you don't define PCB's, choose Unassociated or All.",
- "quantity": "Enter the quantity of PCBs you are producing.",
- "nextSerialNumber": "The next serial number assigned to the board",
- "maxQty": "The maximum number of boards you can produce",
- "parts": "The number of parts on the board",
- "outOfStock": "The number of parts on the board that are out of stock",
- "serialNumber": "The next PCB will have it's serial number started at this value."
+ "pcbs": "Wählen Sie die Leiterplatte(n) aus die Sie herstellen möchten. Wenn Sie keine Leiterplatte definieren möchten wählen Sie (Unassociated) oder (Alle).",
+ "quantity": "Geben Sie die Stückzahl der Leiterplatten ein, die Sie produzieren.",
+ "nextSerialNumber": "Die nächste Seriennummer, die der Platine zugewiesen wird",
+ "maxQty": "Die maximale Anzahl an Platinen, die Sie produzieren können",
+ "parts": "Die Anzahl an Bauteilen auf der Leiterplatte",
+ "outOfStock": "Die Anzahl an Bauteilen auf der Leiterplatte die nicht mehr auf Lager sind",
+ "serialNumber": "Die nächste Leiterplatte beninnt mit dieser Seriennummer."
},
"label": {
- "pcbs": "Select PCB(s)"
+ "pcbs": "Wähle Leiterplatte"
},
"placeholder": {
- "pcbs": "Choose PCB(s) to produce"
+ "pcbs": "Wählen Sie die Leiterplatten aus, die Sie herstellen"
}
},
"chooseAlternatePartModal": {
- "title": "Matching Parts"
+ "title": "Wählen Sie eine Bauteilalternative"
},
"lineTemplate": {
"label": {
- "content": "Content",
- "font": "Font",
- "fontSize": "Font Size",
- "fontColor": "Font Color",
+ "content": "Inhalt",
+ "font": "Schriftart",
+ "fontSize": "Schriftgröße",
+ "fontColor": "Schriftfarbe",
"textPosition": "Text Position",
- "upperCaseText": "UpperCase Text",
- "lowerCaseText": "LowerCase Text",
+ "upperCaseText": "Text in Großbuchstaben",
+ "lowerCaseText": "Text in Kleinbuchstaben",
"barcode": "Barcode",
- "marginLeft": "Margin Left",
- "marginTop": "Margin Top",
- "rotateDegrees": "Rotate Degrees"
+ "marginLeft": "Linker Seitenrand",
+ "marginTop": "Oberer Seitenrand",
+ "rotateDegrees": "Drehung in Grad"
},
"popup": {
- "content": "Template can reference any part field, example: {partNumber}, {description}, {manufacturer}, {location}, {binNumber}, {cost} etc. See <1>Wiki1> for all available tags.",
- "autoSize": "Text size will be automatically determined.",
- "upperCaseText": "Render the text as all upper-case characters.",
- "lowerCaseText": "Render the text as all lower-case characters.",
- "barcode": "Render the Content value encoded as a barcode.",
- "rotateDegrees": "Rotate the text in degrees. Example: 90"
+ "content": "Die Vorlage kann auf jedes Feld eines Teils verweisen, z. B.: {partNumber}, {description}, {manufacturer}, {location}, {binNumber}, {cost} usw. Weitere verfügbare Tags finden Sie im <1>Wiki1>.",
+ "autoSize": "Die Textgröße wird automatisch bestimmt.Die Textgröße wird automatisch bestimmt.",
+ "upperCaseText": "Der Text wird in Großbuchstaben dargestellt.",
+ "lowerCaseText": "Der Text wird in Kleinbuchstaben dargestellt.",
+ "barcode": "Der Inhaltswert wird als Barcode codiert dargestellt.",
+ "rotateDegrees": "Drehe den Text in Grad. Bsp.: 90"
}
},
"pcbHistoryModal": {
- "header": "PCB Produce History",
- "title": "BOM Management"
+ "header": "Produktionsverlauf der Leiterplatten",
+ "title": "Stücklistenverwaltung"
+ },
+ "bulkScanModal": {
+ "autoIncrement": "Automatische Inkrementierung",
+ "rememberLocation": "Merke Ort",
+ "popup": {
+ "autoIncrement": "Automatische Inkrementierung der Behälternummer um 2",
+ "rememberLocation": "Wiederholen Sie den Standort jedes hinzugefügten Bauteils"
+ }
+ },
+ "duplicatePartModal": {
+ "title": "Bauteil duplizieren",
+ "description": "Es befindet sich bereits ein mögliches Duplikat des Bauteils in Ihrem Lagerbestand."
+ },
+ "labelSelectionModal": {
+ "title": "Etiketteneditor",
+ "header": "Etikett auswählen",
+ "description": "Wählen Sie ein vorhandenes Etikett um es zu bearbeiten aus oder erstellen Sie ein neues Etikett.",
+ "chooseLabel": "Wählen Sie das Etikett aus das Sie bearbeiten möchten.",
+ "createNewLabel": "Neues Etikett erstellen..."
+ },
+ "labelSetNameModal": {
+ "description": "Tragen Sie einen Namen für Ihr neues Etikett ein.",
+ "labelName": "Etikettenname",
+ "makeDefault": "Als Standard- Etikett festlegen?"
}
},
"button": {
- "addBomProject": "Add BOM Project",
- "addPart": "Add Part",
- "save": "Save",
+ "addBomProject": "Stücklistenprojekt hinzufügen",
+ "addPart": "Bauteil hinzufügen",
+ "save": "Speichern",
"download": "Download",
- "addPcb": "Add PCB",
- "producePcb": "Produce PCB",
- "removePart": "Remove Part",
- "removeXParts": "Remove ({{checkboxesChecked}}) Parts",
- "addFirstPart": "Add your first part!",
- "all": "All",
- "addPartType": "Add Part Type",
- "manualAdd": "Manual Add",
- "back": "Back",
- "import": "Import",
- "export": "Export",
- "testApi": "Test Api",
- "forgetCredentials": "Forget Credentials",
- "viewDatasheet": "View Datasheet",
- "search": "Search",
- "clear": "Clear",
+ "addPcb": "Leiterplatte hinzufügen",
+ "producePcb": "Leiterplatte herstellen",
+ "removePart": "Bauteil entfernen",
+ "removeXParts": "Entferne Bauteile ({{checkboxesChecked}})",
+ "addFirstPart": "Fügen Sie Ihr erstes Bauteil hinzu!",
+ "all": "Alle",
+ "addPartType": "Bauteiltype hinzufügen",
+ "manualAdd": "Manuell hinzufügen",
+ "back": "Zurück",
+ "import": "Importieren",
+ "export": "Exportieren",
+ "testApi": "API Prüfen",
+ "forgetCredentials": "Anmeldedaten verwerfen",
+ "viewDatasheet": "Datenblatt anzeigen",
+ "search": "Suche",
+ "clear": "Leeren",
"reset": "Reset",
- "importParts": "Import Parts",
- "preview": "Preview",
- "print": "Print",
- "load": "Load",
- "addLine": "Add Line",
- "add": "Add",
- "cancel": "Cancel",
- "produce": "Produce",
- "delete": "Delete",
- "visit": "Visit",
- "or": "Or",
- "view": "View",
- "saveAnyway": "Save Anyway",
- "addUser": "Add User",
- "generate": "Generate",
- "close": "Close"
+ "importParts": "Bauteile importieren",
+ "preview": "Vorschau",
+ "print": "Drucken",
+ "load": "Öffnen",
+ "addLine": "Zeile hinzufügen",
+ "add": "Hinzufügen",
+ "cancel": "Abbrechen",
+ "produce": "Produzieren",
+ "delete": "Löschen",
+ "visit": "Besuchen",
+ "or": "Oder",
+ "view": "Anzeige",
+ "saveAnyway": "Trotzdem speichern",
+ "addUser": "Benutzer hinzufügen",
+ "generate": "Erstellen",
+ "close": "Scließen",
+ "return": "Zurück",
+ "restore": "Wiederherstellen",
+ "createBackup": "Backup erstellen",
+ "produceHistory": "Verlauf",
+ "rename": "Umbenennen",
+ "parts": "Bauteile",
+ "specs": "Spezifikationen",
+ "compliance": "Konformität",
+ "cadModels": "CAD Modell",
+ "addAnyway": "Trotzdem hinzufügen",
+ "move": "Bewegen",
+ "select": "Wählen"
},
"label": {
"name": "Name",
- "description": "Description",
- "location": "Location",
- "color": "Color",
- "project": "Project",
- "parts": "Parts",
- "pcb": "Pcb",
- "pcbs": "Pcbs",
- "delete": "Delete",
- "deleteProject": "Delete Project",
- "editProject": "Edit Project",
- "lastModified": "Last modified",
- "inStock": "In Stock",
- "outOfStock": "Out of Stock",
- "totalParts": "Total Parts",
- "producible": "Producible",
- "part": "Part",
- "partNumber": "Part Number",
- "partNumberShort": "Part#",
- "supplierPart": "Supplier Part",
- "mfrPart": "Mfr Part",
- "manufacturer": "Manufacturer",
- "partType": "Part Type",
- "mountingType": "Mounting Type",
- "cost": "Cost",
- "quantity": "Quantity",
- "quantityShort": "Qty",
- "leadTime": "Lead Time",
- "referenceIds": "Reference Id(s)",
- "schematicReferenceIds": "Schematic Reference Id(s)",
- "customDescription": "Custom Description",
- "note": "Note",
- "notes": "Notes",
- "recordsPerPage": "records per page",
- "parent": "Parent",
- "partsCount": "Parts Count",
+ "description": "Beschreibung",
+ "location": "Lagerort",
+ "color": "Farbe",
+ "project": "Projekt",
+ "parts": "Bauteile",
+ "pcb": "Leiterplatte",
+ "pcbs": "Leiterplatten",
+ "delete": "Löschen",
+ "deleteProject": "Projekt löschen",
+ "editProject": "Projekt bearbeiten",
+ "lastModified": "Zuletzt verändert",
+ "inStock": "Auf Lager",
+ "outOfStock": "Nicht auf Lager",
+ "totalParts": "Gesamtanzahl an Bauteilen",
+ "producible": "Produzierbar",
+ "part": "Bauteil",
+ "partNumber": "Teilenummer",
+ "partNumberShort": "Teilenummer kürzel",
+ "supplierPart": "Lieferantenartikel",
+ "mfrPart": "Herstellerartikel",
+ "manufacturer": "Hersteller",
+ "partType": "Bauteiltype",
+ "mountingType": "Montagetyp",
+ "cost": "Kosten",
+ "quantity": "Stückzahl",
+ "quantityShort": "Stk.",
+ "leadTime": "Lieferzeit",
+ "referenceIds": "Referenznummern",
+ "schematicReferenceIds": "Schaltplan Referenznummer",
+ "customDescription": "Individuelle Beschreibung",
+ "note": "Notiz",
+ "notes": "Notizen",
+ "recordsPerPage": "Datensätze pro Seite",
+ "parent": "Übergeordnet",
+ "partsCount": "Anzahl an Bauteilen",
"systemType": "System Type",
- "resistors": "Resistors",
- "hideEmptyTypes": "Hide Empty Types",
- "error": "Error",
- "errors": "Errors",
- "or": "Or",
+ "resistors": "Widerstände",
+ "hideEmptyTypes": "Leere Typen ausblenden",
+ "error": "Fehler",
+ "errors": "Fehler",
+ "or": "Oder",
"status": "Status",
- "success": "Success",
- "failed": "Failed",
- "warnings": "Warnings",
- "apiKey": "Api Key",
- "apiUrl": "Api Url",
- "site": "Site",
- "clientId": "Client Id",
+ "success": "Erfolgreich",
+ "failed": "Fehlgeschlagen",
+ "warnings": "Warnungen",
+ "apiKey": "API-Schlüssel",
+ "apiUrl": "API-URL",
+ "site": "Seite",
+ "clientId": "Benutzer ID",
"clientSecret": "Client Secret",
- "timeout": "Timeout",
+ "timeout": "Zeitüberschreitung",
"postbackUrl": "Postback Url",
- "username": "Username",
- "password": "Password",
- "website": "Website",
- "datasheet": "Datasheet",
- "package": "Package",
- "importQuestion": "Import?",
- "image": "Image",
- "customerId": "Customer Id",
- "orderAmount": "Order Amount",
- "orderDate": "Order Date",
- "trackingNumber": "Tracking Number",
- "unspecified": "Unspecified",
- "viewTracking": "View Tracking",
- "preview": "Preview",
- "serialNumberFormat": "Serial Number Format",
- "family": "Family",
- "source": "Source",
- "qtyAvail": "QTY Avail.",
- "keywords": "Keywords",
- "apiEndpoint": "Api Endpoint",
- "lastSerialNumber": "Last Serial Number",
- "lowStock": "Low Stock",
- "binNumber": "Bin Number",
- "binNumber2": "Bin Number 2",
- "manufacturerPart": "Manufacturer Part",
- "packageType": "Package Type",
- "primaryDatasheetUrl": "Primary Datasheet Url",
- "productUrl": "Product Url",
- "digikeyPartNumber": "DigiKey Part Number",
- "mouserPartNumber": "Mouser Part Number",
+ "username": "Benutzername",
+ "password": "Passwort",
+ "website": "Webseite",
+ "datasheet": "Datenblatt",
+ "package": "Bauform",
+ "importQuestion": "Importieren?",
+ "image": "Bild",
+ "customerId": "Kundennummer",
+ "orderAmount": "Bestellmenge",
+ "orderDate": "Bestelldatum",
+ "trackingNumber": "Sendungsnummer",
+ "unspecified": "Nicht angegeben",
+ "viewTracking": "Zeige Sendungsverfolgung",
+ "preview": "Vorschau",
+ "serialNumberFormat": "Seriennummernformat",
+ "family": "Familie",
+ "source": "Quelle",
+ "qtyAvail": "Verfügbare Stückzahl.",
+ "keywords": "Schlüsselwörter",
+ "apiEndpoint": "API Endpunkt",
+ "lastSerialNumber": "Letzte Seriennummer",
+ "lowStock": "Niedriger Lagerbestand",
+ "binNumber": "Behälternummer",
+ "binNumber2": "Behälternummer 2",
+ "manufacturerPart": "Herstellerartikel",
+ "packageType": "Gehäuse Type",
+ "primaryDatasheetUrl": "Haupt- Datenblatt-URL",
+ "productUrl": "Produkt URL",
+ "digikeyPartNumber": "DigiKey Teilenummer",
+ "mouserPartNumber": "Mouser Teilenummer",
"arrowPartNumber": "Arrow Part Number",
- "minimumOrderQuantity": "Minimum Order Quantity",
- "supplier": "Supplier",
- "supplierPartNumber": "Supplier Part Number",
- "quantityAvailable": "Quantity Available",
- "rememberLastSelection": "Remember last selection",
- "origin": "Origin",
- "supplierType": "Supplier Type",
+ "minimumOrderQuantity": "Mindestbestellmenge",
+ "supplier": "Lieferant",
+ "supplierPartNumber": "Lieferanten-Artikelnummer",
+ "quantityAvailable": "Verfügbare Stückzahl",
+ "rememberLastSelection": "Letzte Auswahl merken",
+ "origin": "Ursprung",
+ "supplierType": "Lieferantentyp",
"id": "Id",
- "type": "Type",
- "locked": "Locked",
- "usernameEmail": "Username / Email",
- "lastActive": "Last Active",
- "dateAdded": "Date Added",
- "changePassword": "Change Password",
- "accountType": "Account Type",
- "accountLocked": "Account Locked",
- "lastLogin": "Last Login",
- "dateCreated": "Date Created",
- "dateModified": "Date Modified",
- "dateLocked": "Date Locked",
- "ip": "IP",
- "includeUnassociated": "Include Unassociated",
- "date": "Date",
- "consumed": "Consumed",
- "serial": "Serial"
+ "type": "Rolle",
+ "locked": "Gesperrt",
+ "usernameEmail": "Benutzername / E-mail",
+ "lastActive": "Zuletzt aktiv",
+ "dateAdded": "Hinzugefügt am",
+ "changePassword": "Passwort ändern",
+ "accountType": "Rolle",
+ "accountLocked": "Konto gesperrt",
+ "lastLogin": "Letzte Anmeldung",
+ "dateCreated": "Erstellt am",
+ "dateModified": "Geändert am",
+ "dateLocked": "Gesperrt am",
+ "ip": "IP Adresse",
+ "includeUnassociated": "Nicht zugeordnete mit einbeziehen",
+ "date": "Datum",
+ "consumed": "Verbraucht",
+ "serial": "Seriennummer",
+ "allowLogin": "Einloggen erlauben",
+ "active": "Activ",
+ "inactive": "Inaktiv",
+ "rowsPerPage": "Zeilen pro Seite",
+ "symbolName": "KiCad Symbol Name",
+ "footprintName": "KiCad Footprint Name",
+ "extensionValue1": "Erweiterungswert 1",
+ "extensionValue2": "Erweiterungswert 2"
},
"message": {
- "noPartsAdded": "No parts added.",
- "noChildPartTypes": "There are no child part types.",
- "noResults": "No Results",
- "loadingOrder": "Loading order# {{order}}",
- "noMatchingResults":"No matching results.",
- "notEnoughParts": "Not enough parts",
- "noPartInfo": "No part information is available for '{{partNumber}}'. You are subscribed to updates and will be automatically updated when the part is indexed.",
- "uploadFailed": "Failed to upload file!",
- "uploadSuccess": "File uploaded.",
- "uploadSuccessX": "{{count}} files uploaded.",
- "unableToUpload": "Unable to upload. Check that the file is not locked or deleted.",
- "noFilesSelected": "No files selected for upload!",
- "failedToDeleteSupplierPart": "Failed to delete supplier part!",
- "addXParts": "Added {{count}} new parts!",
- "savedPart": "Saved part {{partNumber}}!",
- "addedPart": "Added part {{partNumber}}!",
- "failedSavePart": "Failed to update, check Part Type and Mounting Type"
+ "noPartsAdded": "Keine Bauteile hinzugefügt",
+ "noChildPartTypes": "Es gibt keine untergeordneten Bauteiltypen.",
+ "noResults": "Keine Ergebnisse.",
+ "loadingOrder": "Öffne Bestellnummer {{order}}",
+ "noMatchingResults":"Keine Treffer.",
+ "notEnoughParts": "Nicht genügend Bauteile",
+ "noPartInfo": "Es sind keine Informationen für '{{partNumber}}' verfügbar. Sie sind für Aktualisierungen vorgemerkt und werden automatisch aktualisiert sobald das Bauteil indiziert ist.",
+ "uploadFailed": "Datei hochladen fehlgeschlagen!",
+ "uploadSuccess": "Datei hochgeladen!",
+ "uploadSuccessX": "{{count}} Dateien hochgeladen!",
+ "unableToUpload": "Upload nicht möglich. Überprüfen Sie ob die Datei gesperrt oder gelöscht ist.",
+ "noFilesSelected": "Keine Dateien für das Hochladen gewählt!",
+ "failedToDeleteSupplierPart": "Lieferantenartikel löschen fehlgeschlagen!",
+ "addXParts": "{{count}} neue Bauteile hinzugefügt!",
+ "savedPart": "Bauteil gespeichert {{partNumber}}!",
+ "addedPart": "Bauteil hinzugefügt {{partNumber}}!",
+ "failedSavePart": "Aktualisierung fehlgeschlagen! Überprüfen Sie Bauteiletyp und Montagetyp",
+ "noPartMetadata": "Keine Bauteile Metadaten gefunden!",
+ "scanPartExists": "Das Bauteil befindet sich bereits im Lagerbestand. Sie können die Details bearbeiten oder es aus Ihrem Scan entfernen.",
+ "noOutOfStockParts": "Keine nicht lagernden Bauteile."
},
"confirm": {
- "deleteProject": "Are you sure you want to delete this project and your entire BOM?",
- "removeBomParts": "Are you sure you want to remove these <1>{{quantity}}1> part(s) from your BOM?",
- "deletePcb": "Are you sure you want to delete this PCB and it's parts from your BOM?",
- "deletePartType": "Are you sure you want to delete part type <1>{{name}}1>?",
- "deletePart": "Are you sure you want to delete part <1>{{name}}1>?",
+ "deleteProject": "Sind Sie sicher, dass Sie das Projekt und die gesamte Stückliste löschen wollen??",
+ "removeBomParts": "Sind Sie sicher, dass Sie <1>{{quantity}}1> Bauteile von Ihrer gesamten Stückliste entfernen wollen?",
+ "deletePcb": "Sind Sie sicher, dass Sie diese Leiterplatte und die zugehörigen Bauteile von Ihrer Stückliste löschen wollen?",
+ "deletePartType": "Sind Sie sicher, dass Sie den Bauteiltyp <1>{{name}}1> löschen wollen?",
+ "deletePart": "Sind Sie sicher, dass Sie das Bauteil <1>{{name}}1> löschen wollen?",
"deleteLocalFile": "Are you sure you want to delete this local file named <1>{{name}}1>?",
- "permanent": "This action is <1>permanent and cannot be recovered1>.",
- "deleteRecord": "Are you sure you want to delete this record?",
- "deleteHistory": "Are you sure you want to delete this history record?",
- "partsWillBeBackInStock": "All consumed parts will be placed <1>back in stock1>.",
+ "permanent": "Dieser Vorgang ist <1>ENDGÜLTIG1> und kann nicht wiederhergestellt werden.",
+ "deleteRecord": "Sind Sie sicher, dass Sie diesen Eintrag löschen wollen?",
+ "deleteHistory": "Sind Sie sicher, dass Sie den Eintrag im Verlauf löschen wollen?",
+ "partsWillBeBackInStock": "Alle verbrauchten Bauteile werden <1>wieder auf Lager gelegt1>.",
+ "clearScan": "Sind Sie sicher, dass Sie die Suchergebnisse entfernen wollen?",
"header": {
- "removeBomPart": "Remove Part from BOM",
- "deleteFile": "Delete File",
- "deletePart": "Delete Part"
+ "removeBomPart": "Entferne Bauteil von der Stückliste.",
+ "deleteFile": "Lösche Datei",
+ "deletePart": "Lösche Bauteil",
+ "clearScan": "Entferne gescannte Bauteile"
}
},
"error": {
- "deleteProjectFailed": "Failed to delete project!",
- "failedToRemoveBomParts": "Failed to remove parts from BOM!",
- "projectNotFound": "Could not find project named {{projectName}}",
- "failedSaveProject": "Failed to save project change!",
- "failedSavePcb": "Failed to save pcb!",
- "failedDeleteProject": "Failed to remove project!",
- "failedSavePartType": "Failed to save Part Type!",
- "failedDeletePcb": "Failed to remove pcb!",
- "noPartSelected": "No part selected!",
- "failedAddPart": "Failed to add part!",
- "failedAddPcb": "Failed to add pcb!",
- "failedBomExport": "BOM export failed!",
- "failedDeletedPartType": "Failed to delete part type {{name}}",
- "failedAddedPartType": "Failed to add part type {{name}}",
- "failedClearedCredentials": "Failed to clear cached credentials for {{apiName}}",
- "testFailed": "Test failed",
- "invalidOrder": "Hmmm, that doesn't look like a valid order number!",
- "invalid2dBarcode": "Hmmm, I don't recognize that 2D barcode!",
- "failedDeleteRecord": "Failed to record!"
+ "deleteProjectFailed": "Projekt löschen fehlgeschlagen!",
+ "failedToRemoveBomParts": "Das Entfernen der Teile aus der Stückliste fehlgeschlagen!",
+ "projectNotFound": "Projekt {{projectName}} konnte nicht gefunden werden!",
+ "failedSaveProject": "Speichern der Änderungen am Projekt {{projectName}} fehlgeschlagen!",
+ "failedSavePcb": "Speichern der Leiterplatte fehlgeschlagen!",
+ "failedDeleteProject": "Entfernen des Projekt fehlgeschlagen!",
+ "failedSavePartType": "Speichern der Bauteiltype fehlgeschlagen!",
+ "failedDeletePcb": "Entfernen der Leiterplatte fehlgeschlagen!",
+ "noPartSelected": "Kein Bauteil ausgewählt!",
+ "failedAddPart": "Bauteil hinzufügen fehlgeschlagen!",
+ "failedAddPcb": "Leiterplatte hinzufügen fehlgeschlagen!",
+ "failedBomExport": "Export der Stückliste fehlgeschlagen!",
+ "failedDeletedPartType": "Löschen der Bauteiltype {{name}} fehlgeschlagen!",
+ "failedAddedPartType": "Hinzufügen der Bauteiltype {{name}} fehlgeschlagen!",
+ "failedClearedCredentials": "Löschen der zwischengespeicherten Anmeldeinformationen für {{apiName}} fehlgeschlagen",
+ "testFailed": "Test fehlgeschlagen",
+ "invalidOrder": "Hmmm, sieht nicht nach einer gültigen Bestellnummer aus!",
+ "invalid2dBarcode": "Hmmm, Ich erkenne den 2D Barcode nicht!",
+ "failedDeleteRecord": "Aufnahme fehlgeschlagen!",
+ "failedToSaveSettings": "Einstellungen speichern fehlgeschlagen!"
},
"success": {
- "producedPcbs": "{{quantity}} PCB's were produced!",
- "bomExported": "BOM exported successfully!",
- "savedPartType": "Saved part type {{name}}",
- "deletedPartType": "Deleted part type {{name}}",
- "barcodeTypeReceived": "Barcode type {{type}} received",
- "systemSettingsSaved": "System settings were saved.",
- "clearedCredentials": "Successfully cleared cached credentials for {{apiName}}",
- "testPassed": "Test passed",
- "partsImported": "{{count}} parts were imported!",
- "deletedProject": "Project was deleted!",
- "deletedPcb": "Pcb was deleted!",
- "deletedRecord": "Record was deleted!"
+ "producedPcbs": "{{quantity}} Leiterplatten sind produziert worden!",
+ "bomExported": "Stückliste erfolgreich exportiert!",
+ "savedPartType": "Bauteiltype {{name}} gespeichert!",
+ "deletedPartType": "Bauteiltype {{name}} gelöscht!",
+ "barcodeTypeReceived": "Barcode Typ {{type}} empfangen",
+ "systemSettingsSaved": "System Einstellungen wurden gespeichert!",
+ "clearedCredentials": "Löschen der zwischengespeicherten Anmeldeinformationen für {{apiName}} erfolgreich!",
+ "testPassed": "Test erfolgreich!",
+ "partsImported": "{{count}} von {{totalCount}} Bauteilen wurden importiert!",
+ "deletedProject": "Projekt wurde gelöscht!",
+ "deletedPcb": "Leiterplatte wurde gelöscht!",
+ "deletedRecord": "Eintrag wurde gelöscht!"
},
"popup": {
"bom": {
- "addPart": "Add a part to the BOM",
- "downloadBom": "Download a BOM part list",
- "removePart": "Remove selected parts from the BOM",
- "addPcb": "Add a PCB to this project",
- "producePcb": "Reduce inventory quantities when a PCB is assembled",
- "filterOutOfStock": "Select to only show out of stock parts",
- "pcb": "Indicates which PCB your part is assigned to. A PCB assignment is optional, all unassigned parts will appear in the <1>All1> tab.",
- "quantity": "The quantity of parts required for a single PCB",
- "inventoryQuantity": "The quantity of parts currently in inventory",
- "referenceId": "Your custom <1 />reference Id(s) you can use for identifying this part.",
- "schematicReferenceId": "Your custom <1 />schematic reference Id(s) that identify the part on the PCB silkscreen. <3/>Examples: <5>D15>, <7>C27>, <9>Q19>",
- "displayAll": "Displays all parts including parts not associated with a PCB.",
- "unassociatedPartName": "Edit the name of your unassociated <1 /> part",
- "bomQuantity": "Edit the <1 />BOM quantity required",
- "bomCost": "Edit the part cost",
- "quantityAvailable": "Edit the quantity available in your <1 />inventory",
- "editReferenceId": "Edit your custom <1 />reference Id(s) you can use for identifying this part.",
- "editSchematicReferenceId": "Edit your custom <1 />schematic reference Id(s) that identify the part on the PCB silkscreen. <3 />Examples: <5>D15>, <7>C27>, <9>Q19>",
- "customDescription": "Provide a custom description",
- "customNote": "Provide a custom note"
- }
+ "addPart": "Hinzufügen eines Bauteils zur Stückliste",
+ "downloadBom": "Herunterladen einer Stückliste",
+ "removePart": "Entferne ausgewählte Bauteile von der Stückliste",
+ "addPcb": "Hinzufügen einer Leiterplatte zu diesem Projekt",
+ "producePcb": "Reduziere die Stückzahlen im Lagerbestand sobald eine Leiterplatte bestückt wurde",
+ "filterOutOfStock": "Auswahl um nur diejenigen Bauteile anzuzeigen die sich nicht mehr im Lagerbestand befinden",
+ "pcb": "Gibt an welcher Leiterplatte Ihr Bauteil zugeordnet ist. Eine Zuordnung zu einer Leiterplatte ist optional, alle nicht zugeordneten Teile werden im Tab <1>Alle1> angezeigt.",
+ "quantity": "Die erforderliche Anzahl an Bauteilen für eine einzelne Leiterplatte",
+ "inventoryQuantity": "Die Anzahl an Bauteilen die sich derzeit im Lagerbestand befindet.",
+ "referenceId": "Ihre individuellen <1 />Referenznummern die Sie benutzen können um das Bauteil zu identifizieren.",
+ "schematicReferenceId": "Ihre individuellen <1 />Schaltplan- Referenznummern die das Bauteil auf dem Leiterplatten- Silkscreen identifizieren.",
+ "displayAll": "Zeige alle Bauteile inklusiver der Bauteile die nicht einer Leiterplatte zugeordnet sind.",
+ "unassociatedPartName": "Bearbeiten Sie den Namen des nicht zugeordneten <1 /> Bauteils",
+ "bomQuantity": "Beabeiten Sie die <1 />Stücklisten Stückzahl die benötigt wird",
+ "bomCost": "Bearbeiten Sie die Bauteilkosten",
+ "quantityAvailable": "Bearbeiten Sie die verfügbare Stückzahl in Ihrem <1 />Bestand",
+ "editReferenceId": "Bearbeiten Sie Ihre individuellen <1 />Referenznummern welche Sie verwenden können um das Bauteil zu identifizieren..",
+ "editSchematicReferenceId": "Bearbeiten Sie Ihre individuellen <1 />Schaltplan- Referenznummern, die das Bauteil auf dem Leiterplatten- Silkscreen kennzeichnen. <3 />Bsp.:: <5>D15>, <7>C27>, <9>Q19>",
+ "customDescription": "Geben Sie eine individuelle Beschreibung an.",
+ "customNote": "Geben Sie eine individuelle Notiz an.",
+ "produceHistory": "Produktionshistorie anzeigen",
+ "movePart": "Verschiebe ausgewählte Bauteile in eine andere Registerkarte"
+ },
+ "makerSubscriptionRequired": "Erfordert ein Maker- Abonnement <1>Hier klicken1> für weitere Details.",
+ "proSubscriptionRequired": "Erfordert ein Professional Abonnement.<1>Hier klicken1> für weitere Details."
},
"footer": {
"version": "Version",
- "promo": "Try <1>Binner Cloud Free1>"
+ "promo": "Versuchen Sie <1>Binner Cloud Free1>"
},
"notification": {
"versionBanner": {
- "newVersion": "A new version of Binner <1>{{version}}1> is available!",
- "releaseNotes": "Release Notes",
- "view": "View",
- "skip": "Skip",
- "close": "Close"
+ "newVersion": "Eine neue Version von Binner <1>{{version}}1> ist verfügbar!",
+ "releaseNotes": "Versionshinweise",
+ "view": "Zeige",
+ "skip": "Überspringen",
+ "close": "Schließen"
}
},
"color": {
- "black": "Black",
- "brown": "Brown",
- "red": "Red",
+ "black": "Schwarz",
+ "brown": "Braun",
+ "red": "Rot",
"orange": "Orange",
- "yellow": "Yellow",
- "green": "Green",
- "blue": "Blue",
- "violet": "Violet",
- "grey": "Grey",
- "white": "White",
+ "yellow": "Gelb",
+ "green": "Grün",
+ "blue": "Blau",
+ "violet": "Violett",
+ "grey": "Grau",
+ "white": "Weiß",
"gold": "Gold",
- "silver": "Silver"
- }
-}
\ No newline at end of file
+ "silver": "Silber"
+ },
+ "noop": "-do-not-translate-"
+}
diff --git a/Binner/Binner.Web/ClientApp/public/locales/it/translation.json b/Binner/Binner.Web/ClientApp/public/locales/it/translation.json
index 14377c2c..036eb9fb 100644
--- a/Binner/Binner.Web/ClientApp/public/locales/it/translation.json
+++ b/Binner/Binner.Web/ClientApp/public/locales/it/translation.json
@@ -68,7 +68,10 @@
"deleteLocalFile": "Cancellare questo file locale",
"technicalSpecs": "Visualizzare specifiche tecniche",
"compliance": "Visualizzare le informazioni di conformità",
- "cadModels": "Visualizzare i modelli CAD disponibili per questo componente"
+ "cadModels": "Visualizzare i modelli CAD disponibili per questo componente",
+ "symbolName": "Associare un nome di simbolo KiCad a questo componente",
+ "footprintName": "Associare un nome di impronta KiCad a questo componente",
+ "extensionValue": "Associare un valore personalizzato a questo componente"
}
},
"lowInventory": {
@@ -88,8 +91,8 @@
"notEnoughPartsToProducePcb": "Non ci sono componenti sufficienti per produrre questo PCB.",
"notEnoughPartsToProduceBom": "Non ci sono componenti sufficienti per produrre l'intera DBA.",
"noPartsAssigned": "Assegnare i componenti per contare quante volte puoi produrre questo PCB.",
- "pcbProduceCount": "Con le attuali disponibilità in inventario si può produrre questo PCB {{count}} volte.",
- "bomProduceCount": "Con le attuali disponibilità in inventario si può produrre l'intera DBA {{count}} volte.",
+ "pcbProduceCount": "Con le attuali disponibilità in inventario si può produrre questo PCB <1>{{count}}1> volte.",
+ "bomProduceCount": "Con le attuali disponibilità in inventario si può produrre l'intera DBA <1>{{count}}1> volte.",
"lowestPcb": "{{name}} manda componenti in sottoscorta."
},
"boms": {
@@ -101,8 +104,9 @@
"title": "Categorie",
"description": "Le categorie e le sottocategorie sono utilizzate per organizzare i componenti in modo logico e ordinato. Non c'è limite al numero di livelli nella gerarchia, basta collegare alla categoria <1>Parent1> la sottocategoria voluta.<3 />Ad esempio: gli amplificatori operazionali possono essere un sottotipo dei Circuiti Integrati, quindi il <1>Parent1> degli amplificatori operazionali è la categoria Circuiti Integrati.",
"rename": "Rinominare Categoria",
+ "edit": "Modificare Categoria",
"partCount": "Il numero di componenti in questa categoria",
- "viewParts": "Vedi Compoonenti"
+ "viewParts": "Vedi Componenti"
},
"exportData": {
"title": "Importare/Esportare",
@@ -113,7 +117,7 @@
"totalRowsImported": "Righe totali importate",
"totalProjectsImported": "Progetti importati",
"totalPartTypesImported": "Categorie importate",
- "totalPartsImported": "Compoonenti importati",
+ "totalPartsImported": "Componenti importati",
"noFilesSelected": "Nessun file selezionato per il caricamento!",
"importUploadFailed": "Importazione non riuscita!",
"importFailed": "Impossibile importare i dati.",
@@ -237,7 +241,9 @@
"orderNum": "Order Number",
"instructions": "Per gli ordini <1>DigiKey1>, questo è il <3>Sales Order #3>.<4 />Per glii ordini <6>Mouser6>, questo è il <8>Web Order #8>.<10 />Per gli ordini <12>Arrow12>, questo è l'<14>Order Number14>.",
"mouserNote": "<0>Nota:0> Mouser supporta soltanto Web Order # quindi quando si importa assicurarsi di utilizzare il Web Order # e <2>non il Sales Order #2>",
- "arrowNote": "<0>Note:0> Arrow richiede che sia richiesto via email l'accesso al loro Order API. Vedi <2>Arrow Order Api2>"
+ "arrowNote": "<0>Note:0> Arrow richiede che sia richiesto via email l'accesso al loro Order API. Vedi <2>Arrow Order Api2>",
+ "addedToInventory": "aggiunto all'inventario",
+ "alreadyInInventory": "già presente in inventario"
},
"printLabels": {
"title": "Stampa Etichette",
@@ -371,7 +377,11 @@
"totalPartTypes": "N.Totale Categorie",
"totalUserFiles": "N.Totale Files Utente",
"userFilesSize": "Dimensione Files Utente"
- }
+ },
+ "backupRestore": {
+ "title": "Backup/Restore",
+ "baseDescription": "Backup o ripristino dell'installazione di Binner."
+ }
},
"backup": {
"title": "Backup / Restore",
@@ -379,6 +389,52 @@
"description": "Creare un backup o ripristinare da un precedente backup.",
"acceptedFileTypes": "Tipi di file accettati: \"*.bak\"",
"backupDescription": "Creare una istantanea dell'installazione di Binner."
+ },
+ "printing": {
+ "title": "Stampa",
+ "description": "Stampa etichette e modelli di etichette.",
+ "header": "Scegliere una attività",
+ "labelTemplates": {
+ "title": "Modelli di etichette",
+ "description": "Modificare le etichette dei componenti e i modelli di etichette personalizzate.",
+ "baseDescription": "Creare e modificare modelli di etichette.",
+ "barcodeLabels": "Etichette con codici a barre",
+ "custom": "Testo personalizzato",
+ "preview": "Anteprima",
+ "labelEditor": "Editor di etichette",
+ "manage": "Gestire",
+ "zoomLevel": "Livello di ingrandimento",
+ "labelProperties": "Proprietà dell'etichetta",
+ "labelTemplate": "Modello etichetta",
+ "width": "Larghezza",
+ "height": "Altezza",
+ "dpi": "Dpi",
+ "margin": "Margine",
+ "templateName": "Nome modello",
+ "itemProperties": "Proprietà dell'elemento",
+ "align": "Allineamento",
+ "font": "Font",
+ "rotate": "Ruotare",
+ "fontSize": "Dimensione del Font",
+ "fontWeight": "Spessore del Font",
+ "color": "Colore",
+ "length": "Lunghezza",
+ "textBarcodeValue": "Valore del Testo/Barcode",
+ "partInformation": "Dati del componente",
+ "button": {
+ "print": "Stampare",
+ "load": "Caricare..."
+ }
+ },
+ "printLabels": {
+ "title": "Stampa Etichette Personalizzate",
+ "baseDescription": "Stampa etichette personalizzate per qualsiasi attività."
+ },
+ "bulkprint": {
+ "title": "Stampa massiva",
+ "description": "Stampa etichette per più componenti contemporaneamente.",
+ "baseDescription": "Stampa massiva etichette per componenti"
+ }
}
},
"bc": {
@@ -398,7 +454,12 @@
"backupRestore": "Backup / Restore",
"accountSettings": "Dati Utente",
"activateLicense": "Attivare Licenza",
- "systemInfo": "Informazioni di Sistema"
+ "systemInfo": "Informazioni di Sistema",
+ "barcodeScanner": "Barcode Scanner",
+ "printing": "Stampa",
+ "labelTemplates": "Modelli di Etichette",
+ "bulkPrint": "Stampa massiva",
+ "inventory": "Inventario"
},
"comp": {
"navBar": {
@@ -439,6 +500,10 @@
"arrowPartNumber": "Arrow Part Number",
"packageType": "Tipo di package",
"mountingType": "Tipo montaggio",
+ "symbolName": "Nome Simbolo",
+ "footprintName": "Nome Impronta",
+ "extensionValue1": "Valore aggiuntivo 1",
+ "extensionValue2": "Valore aggiuntivo 2",
"ok": "Ok",
"popup": {
"lowStock": "Se la disponibilità del componente è inferiore a questo valore il componente sarà considerato sottoscorta.",
@@ -554,7 +619,19 @@
"duplicatePartModal": {
"title": "Componente Duplicato",
"description": "C'è già un possibile componente duplicato nel tuo inventario."
- }
+ },
+ "labelSelectionModal": {
+ "title": "Editor di Etichette",
+ "header": "Selezionare Etichetta",
+ "description": "Selezionare una etichetta esistente per modificarla o crearne una nuova.",
+ "chooseLabel": "Scegliere l'etichetta da modificare",
+ "createNewLabel": "Creare una nuova etichetta..."
+ },
+ "labelSetNameModal": {
+ "description": "Indicare un nome per la nuova etichetta.",
+ "labelName": "Nome etichetta",
+ "makeDefault": "Rendere questa l'etichetta di default?"
+ }
},
"button": {
"addBomProject": "Aggiungi un Progetto DBA",
@@ -603,7 +680,9 @@
"specs": "Specifiche",
"compliance": "Conformità",
"cadModels": "Modelli CAD",
- "addAnyway": "Aggiungere comunque"
+ "addAnyway": "Aggiungere comunque",
+ "move": "Spostare",
+ "select": "Selezionare"
},
"label": {
"name": "Nome",
@@ -718,7 +797,11 @@
"allowLogin": "Consentire Accesso",
"active": "Attivo",
"inactive": "Inattivo",
- "rowsPerPage": "Righe per pagina"
+ "rowsPerPage": "Righe per pagina",
+ "symbolName": "Nome Simbolo KiCad",
+ "footprintName": "Nome Impronta KiCad",
+ "extensionValue1": "Valore Aggiuntivo 1",
+ "extensionValue2": "Valore Aggiuntivo 2"
},
"message": {
"noPartsAdded": "Nessun componente aggiunto.",
@@ -819,8 +902,11 @@
"editSchematicReferenceId": "Modifica l' <1 />Id(s) di riferimento nello schema usato per identificare il componente sulla serigrafia del PCB. <3 />Ad esempio: <5>D15>, <7>C27>, <9>Q19>",
"customDescription": "Fornire una descrizione personale",
"customNote": "Fornire una nota personale",
- "produceHistory": "Visualizza cronologia di produzione"
- }
+ "produceHistory": "Visualizza cronologia di produzione",
+ "movePart": "Spostare i componenti selezionati in un altro tab"
+ },
+ "makerSubscriptionRequired": "Richiede un abbonamento di livello Maker. <1>Clicca qui1> per dettagli.",
+ "proSubscriptionRequired": "Richiede un abbonamento di livello Professional. <1>Clicca qui1> per dettagli."
},
"footer": {
"version": "Version",
diff --git a/Binner/Binner.Web/ClientApp/src/common/applicationSettings.js b/Binner/Binner.Web/ClientApp/src/common/applicationSettings.js
new file mode 100644
index 00000000..dc9c5107
--- /dev/null
+++ b/Binner/Binner.Web/ClientApp/src/common/applicationSettings.js
@@ -0,0 +1,33 @@
+import { fetchApi } from "./fetchApi";
+import _ from "underscore";
+
+let GLOBAL_APPSETTINGS = {};
+
+/**
+ * Get the system settings (cached)
+ * @returns the system settings
+ */
+export const getSystemSettings = async (force) => {
+ if (force || _.isEmpty(GLOBAL_APPSETTINGS)) {
+ return await fetchApi("api/system/settings", {
+ method: "GET",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ }).then((response) => {
+ const { data } = response;
+ GLOBAL_APPSETTINGS = data;
+ return GLOBAL_APPSETTINGS;
+ });
+ } else {
+ return GLOBAL_APPSETTINGS;
+ }
+};
+
+/**
+ * Set/update the system settings
+ * @param {object} applicationSettings the system settings
+ */
+export const setSystemSettings = (applicationSettings) => {
+ GLOBAL_APPSETTINGS = applicationSettings;
+};
\ No newline at end of file
diff --git a/Binner/Binner.Web/ClientApp/src/common/currency.js b/Binner/Binner.Web/ClientApp/src/common/currency.js
index 45b2abbe..4af97b77 100644
--- a/Binner/Binner.Web/ClientApp/src/common/currency.js
+++ b/Binner/Binner.Web/ClientApp/src/common/currency.js
@@ -7,7 +7,25 @@ export const Currencies = [
{ key: 3, text: getCurrencySymbol("JPY"), value: "JPY", description: "Japanese yen" },
{ key: 4, text: getCurrencySymbol("GBP"), value: "GBP", description: "Pound sterling" },
{ key: 5, text: getCurrencySymbol("AUD"), value: "AUD", description: "Australian dollar" },
- { key: 6, text: getCurrencySymbol("CAD"), value: "CNY", description: "Renminbi" },
+ { key: 6, text: getCurrencySymbol("CNY"), value: "CNY", description: "Chinese Yuan (Renminbi)" },
{ key: 7, text: getCurrencySymbol("KRW"), value: "KRW", description: "South Korean won" },
- { key: 8, text: getCurrencySymbol("MXN"), value: "MXN", description: "Mexican peso" }
+ { key: 8, text: getCurrencySymbol("MXN"), value: "MXN", description: "Mexican peso" },
+ { key: 9, text: getCurrencySymbol("HKD"), value: "HKD", description: "Hong Kong dollar" },
+ { key: 10, text: getCurrencySymbol("SGD"), value: "SGD", description: "Singapore dollar" },
+ { key: 11, text: getCurrencySymbol("TWD"), value: "TWD", description: "New Taiwan dollar" },
+ { key: 12, text: getCurrencySymbol("NZD"), value: "NZD", description: "New Zealand dollar" },
+ { key: 13, text: getCurrencySymbol("INR"), value: "INR", description: "Indian Rupee" },
+ { key: 14, text: getCurrencySymbol("DKK"), value: "DKK", description: "Danish krone" },
+ { key: 15, text: getCurrencySymbol("NOK"), value: "NOK", description: "Norwegian krone" },
+ { key: 16, text: getCurrencySymbol("SEK"), value: "SEK", description: "Swedish krona" },
+ { key: 17, text: getCurrencySymbol("ILS"), value: "ILS", description: "Israeli new shekel" },
+ { key: 18, text: getCurrencySymbol("PLN"), value: "PLN", description: "Polish Zloty" },
+ { key: 19, text: getCurrencySymbol("CHF"), value: "CHF", description: "Swiss Franc" },
+ { key: 20, text: getCurrencySymbol("CZK"), value: "CZK", description: "Czech Koruna" },
+ { key: 21, text: getCurrencySymbol("HUF"), value: "HUF", description: "Hungarian Forint" },
+ { key: 22, text: getCurrencySymbol("RON"), value: "RON", description: "Romanian Leu" },
+ { key: 23, text: getCurrencySymbol("ZAR"), value: "ZAR", description: "South African Rand" },
+ { key: 24, text: getCurrencySymbol("MYR"), value: "MYR", description: "Malaysian Ringgit" },
+ { key: 25, text: getCurrencySymbol("THB"), value: "THB", description: "Thai Baht" },
+ { key: 26, text: getCurrencySymbol("PHP"), value: "PHP", description: "Philippine peso" },
];
diff --git a/Binner/Binner.Web/ClientApp/src/components/AddBomPartModal.js b/Binner/Binner.Web/ClientApp/src/components/AddBomPartModal.js
index 55513f5c..69583c3e 100644
--- a/Binner/Binner.Web/ClientApp/src/components/AddBomPartModal.js
+++ b/Binner/Binner.Web/ClientApp/src/components/AddBomPartModal.js
@@ -46,7 +46,7 @@ export function AddBomPartModal(props) {
setLoading(true);
try {
- const response = await fetchApi(`api/part/search?keywords=${keyword}`, {
+ const response = await fetchApi(`api/part/search?keywords=${encodeURIComponent(keyword.trim())}`, {
signal: AddBomPartModal.abortController.signal
}).catch(() => {
setLoading(false);
diff --git a/Binner/Binner.Web/ClientApp/src/components/PartSuppliersMemoized.js b/Binner/Binner.Web/ClientApp/src/components/PartSuppliersMemoized.js
index 57bb8fc4..140a9301 100644
--- a/Binner/Binner.Web/ClientApp/src/components/PartSuppliersMemoized.js
+++ b/Binner/Binner.Web/ClientApp/src/components/PartSuppliersMemoized.js
@@ -20,6 +20,7 @@ export function PartSuppliersMemoized({ loadingPartMetadata, part, metadataParts
const [partSupplier, setPartSupplier] = useState(defaultPartSupplier);
const [theMetadataParts, setTheMetadataParts] = useState(metadataParts);
const [showAddPartSupplier, setShowAddPartSupplier] = useState(false);
+ const [isEditing, setIsEditing] = useState('');
useEffect(() => {
setIsLoadingPartMetadata(loadingPartMetadata);
@@ -92,6 +93,31 @@ export function PartSuppliersMemoized({ loadingPartMetadata, part, metadataParts
setIsLoadingPartMetadata(false);
};
+ const saveSupplier = async (supplier) => {
+ const request = {
+ partId: thePart.partId,
+ partSupplierId: supplier.partSupplierId,
+ name: supplier.supplier,
+ supplierPartNumber: supplier.supplierPartNumber,
+ cost: parseFloat(supplier.cost || "0") || 0,
+ quantityAvailable: parseInt(supplier.quantityAvailable || "0") || 0,
+ minimumOrderQuantity: parseInt(supplier.minimumOrderQuantity || "0") || 0,
+ productUrl: supplier.productUrl && supplier.productUrl.length > 4 ? `https://${supplier.productUrl.replace("https://", "").replace("http://", "")}` : null,
+ imageUrl: supplier.imageUrl && supplier.imageUrl.length > 4 ? `https://${supplier.imageUrl.replace("https://", "").replace("http://", "")}` : null
+ };
+ const response = await fetchApi("api/part/partSupplier", {
+ method: "PUT",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(request)
+ });
+ if (response.responseObject.status === 200) {
+ const { data } = response;
+ toast.success(t("message.savedSupplier", "Saved supplier!"));
+ } else toast.error(t("error.failedSaveSupplier", "Failed to save supplier change!"));
+ };
+
const deletePartSupplier = async (e, partSupplier) => {
e.preventDefault();
e.stopPropagation();
@@ -139,6 +165,37 @@ export function PartSuppliersMemoized({ loadingPartMetadata, part, metadataParts
setShowAddPartSupplier(!showAddPartSupplier);
};
+ const handleFocus = (e, control, supplier) => {
+ e.target.value = supplier[e.target.name];
+ setIsEditing(e.target.name);
+ };
+
+ const handleInlineChange = (e, control, supplier) => {
+ e.preventDefault();
+ e.stopPropagation();
+
+ switch(control.name) {
+ case 'cost':
+ supplier[control.name] = parseFloat(control.value);
+ break;
+ case 'quantityAvailable':
+ supplier[control.name] = parseInt(control.value);
+ break;
+ case 'minimumOrderQuantity':
+ supplier[control.name] = parseInt(control.value);
+ break;
+ default:
+ supplier[control.name] = control.value;
+ break;
+ }
+ setTheMetadataParts({ ...theMetadataParts });
+ };
+
+ const saveColumn = async (e, supplier) => {
+ setIsEditing('');
+ await saveSupplier(supplier);
+ };
+
const renderSuppliers = useMemo(() => {
return (