From 9e64a232998a1a45aca177d7b7e9993a05e7843d Mon Sep 17 00:00:00 2001
From: Michael Brown
Choose or create the project to manage BOM for.
"
}
- }
+ },
+ "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."
+ },
+ "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"
+ },
+ "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",
+ "barcodeScanner": "Barcode Scanner"
+ },
+ "barcodeScanner": {
+ "title": "Barcode Scanner",
+ "description": "Test your barcode scanner to see what values it outputs.",
+ "detected": "Detected",
+ "waitingForInput": "Waiting for input..."
+ },
+ "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>",
+ "confirm": {
+ "mustAuthenticateHeader": "Must Authenticate",
+ "mustAuthenticate": "External Api is requesting that you authenticate first. You will be redirected back after authenticating with the external provider."
+ },
+ "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.",
+ "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",
+ "digikey": "DigiKey",
+ "digikeySupport": "DigiKey Support",
+ "mouser": "Mouser",
+ "mouserSupport": "Mouser Support",
+ "searchApiKey": "Search Api Key",
+ "ordersApiKey": "Orders Api Key",
+ "cartApiKey": "Cart Api Key",
+ "arrow": "Arrow",
+ "arrowSupport": "Arrow Support",
+ "octopartNexar": "Octopart/Nexar",
+ "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}}"
+ },
+ "datasheet": {
+ "title": "Datasheet Search"
+ },
+ "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>"
+ },
+ "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",
+ "label": {
+ "labelType": "Label Type",
+ "paperSource": "Paper Source",
+ "labelNum": "Label #",
+ "text": "Text",
+ "fontSize": "FontSize",
+ "alignment": "Alignment",
+ "topMargin": "Top Margin",
+ "leftMargin": "Left Margin",
+ "font": "Font",
+ "isBarcode": "Is Barcode",
+ "center": "Center"
+ }
+ },
+ "project": {
+ "title": "Edit Project",
+ "description": "Projects are used as part of your BOM, allowing you to associate parts to multiple PCBs.",
+ "pcbs": "PCBs",
+ "confirm": {
+ "deleteProjectHeader": "Delete Project",
+ "deletePcbHeader": "Delete Pcb"
+ },
+ "placeholder": {
+ "name": "My Project",
+ "location": "New York"
+ },
+ "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"
+ }
+ },
+ "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"
+ },
+ "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"
+ },
+ "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"
+ }
+ }
+ },
+ "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"
+ },
+ "comp": {
+ "navBar": {
+ "search": "Search",
+ "help": "Help",
+ "home": "Home",
+ "addInventory": "Add Inventory",
+ "orderImport": "Order Import"
+ },
+ "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",
+ "popup": {
+ "lowStock": "Quantities below this value will indicate the part is low on stock.",
+ "quantity": "The quantity of parts currently in stock."
+ },
+ "confirm": {
+ "deletePart": "Are you sure you want to delete part {{partNumber}}?"
+ },
+ "error": {
+ "failedSave": "Error saving part {{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 without associating it to a part in your inventory?<3/><4/><5>Note: You will still be able to manage it's quantity if you choose to proceed, but it will not appear in your inventory.5>",
+ "selectPcb": "Select PCB",
+ "choosePcb": "Choose PCB",
+ "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."
+ }
+ },
+ "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",
+ "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>"
+ },
+ "placeholder": {
+ "name": "Main Board or module name",
+ "description": "Description of pcb"
+ }
+ },
+ "producePcbModal": {
+ "title": "BOM Management",
+ "description": "",
+ "header": "Produce Pcb",
+ "nextSerialNumber": "Next Serial Number",
+ "maxQty": "Max Qty",
+ "options": {
+ "all": "All",
+ "allDescription": "Produce the entire BOM",
+ "unassociated": "Unassociated",
+ "unassociatedDescription": "Produce parts not associated to a PCB"
+ },
+ "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."
+ },
+ "label": {
+ "pcbs": "Select PCB(s)"
+ },
+ "placeholder": {
+ "pcbs": "Choose PCB(s) to produce"
+ }
+ },
+ "chooseAlternatePartModal": {
+ "title": "Matching Parts"
+ },
+ "lineTemplate": {
+ "label": {
+ "content": "Content",
+ "font": "Font",
+ "fontSize": "Font Size",
+ "fontColor": "Font Color",
+ "textPosition": "Text Position",
+ "upperCaseText": "UpperCase Text",
+ "lowerCaseText": "LowerCase Text",
+ "barcode": "Barcode",
+ "marginLeft": "Margin Left",
+ "marginTop": "Margin Top",
+ "rotateDegrees": "Rotate Degrees"
+ },
+ "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"
+ }
+ }
},
"button": {
"addBomProject": "Add BOM Project",
@@ -33,7 +371,28 @@
"removePart": "Remove Part",
"removeXParts": "Remove ({{checkboxesChecked}}) Parts",
"addFirstPart": "Add your first part!",
- "all": "All"
+ "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",
+ "reset": "Reset",
+ "importParts": "Import Parts",
+ "preview": "Preview",
+ "print": "Print",
+ "load": "Load",
+ "addLine": "Add Line",
+ "add": "Add",
+ "cancel": "Cancel",
+ "produce": "Produce",
+ "delete": "Delete",
+ "visit": "Visit"
},
"label": {
"name": "Name",
@@ -44,6 +403,7 @@
"parts": "Parts",
"pcb": "Pcb",
"pcbs": "Pcbs",
+ "delete": "Delete",
"deleteProject": "Delete Project",
"editProject": "Edit Project",
"lastModified": "Last modified",
@@ -51,42 +411,136 @@
"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",
- "recordsPerPage": "records per page"
+ "notes": "Notes",
+ "recordsPerPage": "records per page",
+ "parent": "Parent",
+ "partsCount": "Parts Count",
+ "systemType": "System Type",
+ "resistors": "Resistors",
+ "hideEmptyTypes": "Hide Empty Types",
+ "error": "Error",
+ "errors": "Errors",
+ "or": "Or",
+ "status": "Status",
+ "success": "Success",
+ "failed": "Failed",
+ "warnings": "Warnings",
+ "apiKey": "Api Key",
+ "apiUrl": "Api Url",
+ "clientId": "Client Id",
+ "clientSecret": "Client Secret",
+ "timeout": "Timeout",
+ "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",
+ "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"
},
"message": {
- "noPartsAdded": "No parts added."
+ "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."
},
"confirm": {
"deleteProject": "Are you sure you want to delete this project and your entire BOM?",
- "removeBomParts": "Are you sure you want to remove these {{quantity}} part(s) from your BOM?",
- "permanent": "This action is permanent and cannot be recovered.",
+ "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>?",
+ "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>.",
"header": {
- "removeBomPart": "Remove Part from BOM"
- }
+ "removeBomPart": "Remove Part from BOM",
+ "deleteFile": "Delete File",
+ "deletePart": "Delete Part"
+ }
},
"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!"
+ "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!"
},
"success": {
"producedPcbs": "{{quantity}} PCB's were produced!",
- "bomExported": "BOM exported successfully!"
+ "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!"
},
"popup": {
"bom": {
@@ -96,19 +550,47 @@
"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 All tab.",
+ "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
Examples: D1, C2, Q1",
+ "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
Examples: D1, C2, Q1",
+ "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"
}
+ },
+ "footer": {
+ "version": "Version",
+ "promo": "Try <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"
+ }
+ },
+ "color": {
+ "black": "Black",
+ "brown": "Brown",
+ "red": "Red",
+ "orange": "Orange",
+ "yellow": "Yellow",
+ "green": "Green",
+ "blue": "Blue",
+ "violet": "Violet",
+ "grey": "Grey",
+ "white": "White",
+ "gold": "Gold",
+ "silver": "Silver"
}
}
\ No newline at end of file
diff --git a/Binner/Binner.Web/ClientApp/public/locales/en/translation.json b/Binner/Binner.Web/ClientApp/public/locales/en/translation.json
index 1110a263..a911851d 100644
--- a/Binner/Binner.Web/ClientApp/public/locales/en/translation.json
+++ b/Binner/Binner.Web/ClientApp/public/locales/en/translation.json
@@ -558,6 +558,7 @@
"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>",
diff --git a/Binner/Binner.Web/ClientApp/public/locales/es/translation.json b/Binner/Binner.Web/ClientApp/public/locales/es/translation.json
index c1860fa3..a911851d 100644
--- a/Binner/Binner.Web/ClientApp/public/locales/es/translation.json
+++ b/Binner/Binner.Web/ClientApp/public/locales/es/translation.json
@@ -1,3 +1,596 @@
{
-
+ "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": "Projects"
+ },
+ "search": {
+ "title":"Inventory",
+ "search":"Seach"
+ },
+ "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",
+ "suppliers": "Suppliers",
+ "addKeyword": "Add Keyword",
+ "chooseAlternatePart": "Choose alternate part ({{count}})",
+ "placeholder": {
+ "location": "Home lab",
+ "keywords": "op amp",
+ "binNumber": "IC Components 2",
+ "binNumber2": "14"
+ },
+ "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"
+ }
+ },
+ "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."
+ },
+ "bom": {
+ "bc": {
+ "home": "Home",
+ "boms": "BOMs",
+ "bom": "BOM"
+ },
+ "header": {
+ "title": "Bill of Materials",
+ "description": "Manage your BOM by creating PCB(s) and adding your parts."
+ },
+ "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 {{count}} times with your current inventory.",
+ "bomProduceCount": "You can produce your entire BOM {{count}} times with your current inventory.",
+ "lowestPcb": "{{name}} is the lowest on inventory."
+ },
+ "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.
"
+ }
+ },
+ "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."
+ },
+ "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"
+ },
+ "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",
+ "barcodeScanner": "Barcode Scanner"
+ },
+ "barcodeScanner": {
+ "title": "Barcode Scanner",
+ "description": "Test your barcode scanner to see what values it outputs.",
+ "detected": "Detected",
+ "waitingForInput": "Waiting for input..."
+ },
+ "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>",
+ "confirm": {
+ "mustAuthenticateHeader": "Must Authenticate",
+ "mustAuthenticate": "External Api is requesting that you authenticate first. You will be redirected back after authenticating with the external provider."
+ },
+ "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.",
+ "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",
+ "digikey": "DigiKey",
+ "digikeySupport": "DigiKey Support",
+ "mouser": "Mouser",
+ "mouserSupport": "Mouser Support",
+ "searchApiKey": "Search Api Key",
+ "ordersApiKey": "Orders Api Key",
+ "cartApiKey": "Cart Api Key",
+ "arrow": "Arrow",
+ "arrowSupport": "Arrow Support",
+ "octopartNexar": "Octopart/Nexar",
+ "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}}"
+ },
+ "datasheet": {
+ "title": "Datasheet Search"
+ },
+ "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>"
+ },
+ "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",
+ "label": {
+ "labelType": "Label Type",
+ "paperSource": "Paper Source",
+ "labelNum": "Label #",
+ "text": "Text",
+ "fontSize": "FontSize",
+ "alignment": "Alignment",
+ "topMargin": "Top Margin",
+ "leftMargin": "Left Margin",
+ "font": "Font",
+ "isBarcode": "Is Barcode",
+ "center": "Center"
+ }
+ },
+ "project": {
+ "title": "Edit Project",
+ "description": "Projects are used as part of your BOM, allowing you to associate parts to multiple PCBs.",
+ "pcbs": "PCBs",
+ "confirm": {
+ "deleteProjectHeader": "Delete Project",
+ "deletePcbHeader": "Delete Pcb"
+ },
+ "placeholder": {
+ "name": "My Project",
+ "location": "New York"
+ },
+ "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"
+ }
+ },
+ "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"
+ },
+ "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"
+ },
+ "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"
+ }
+ }
+ },
+ "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"
+ },
+ "comp": {
+ "navBar": {
+ "search": "Search",
+ "help": "Help",
+ "home": "Home",
+ "addInventory": "Add Inventory",
+ "orderImport": "Order Import"
+ },
+ "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",
+ "popup": {
+ "lowStock": "Quantities below this value will indicate the part is low on stock.",
+ "quantity": "The quantity of parts currently in stock."
+ },
+ "confirm": {
+ "deletePart": "Are you sure you want to delete part {{partNumber}}?"
+ },
+ "error": {
+ "failedSave": "Error saving part {{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 without associating it to a part in your inventory?<3/><4/><5>Note: You will still be able to manage it's quantity if you choose to proceed, but it will not appear in your inventory.5>",
+ "selectPcb": "Select PCB",
+ "choosePcb": "Choose PCB",
+ "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."
+ }
+ },
+ "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",
+ "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>"
+ },
+ "placeholder": {
+ "name": "Main Board or module name",
+ "description": "Description of pcb"
+ }
+ },
+ "producePcbModal": {
+ "title": "BOM Management",
+ "description": "",
+ "header": "Produce Pcb",
+ "nextSerialNumber": "Next Serial Number",
+ "maxQty": "Max Qty",
+ "options": {
+ "all": "All",
+ "allDescription": "Produce the entire BOM",
+ "unassociated": "Unassociated",
+ "unassociatedDescription": "Produce parts not associated to a PCB"
+ },
+ "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."
+ },
+ "label": {
+ "pcbs": "Select PCB(s)"
+ },
+ "placeholder": {
+ "pcbs": "Choose PCB(s) to produce"
+ }
+ },
+ "chooseAlternatePartModal": {
+ "title": "Matching Parts"
+ },
+ "lineTemplate": {
+ "label": {
+ "content": "Content",
+ "font": "Font",
+ "fontSize": "Font Size",
+ "fontColor": "Font Color",
+ "textPosition": "Text Position",
+ "upperCaseText": "UpperCase Text",
+ "lowerCaseText": "LowerCase Text",
+ "barcode": "Barcode",
+ "marginLeft": "Margin Left",
+ "marginTop": "Margin Top",
+ "rotateDegrees": "Rotate Degrees"
+ },
+ "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"
+ }
+ }
+ },
+ "button": {
+ "addBomProject": "Add BOM Project",
+ "addPart": "Add Part",
+ "save": "Save",
+ "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",
+ "reset": "Reset",
+ "importParts": "Import Parts",
+ "preview": "Preview",
+ "print": "Print",
+ "load": "Load",
+ "addLine": "Add Line",
+ "add": "Add",
+ "cancel": "Cancel",
+ "produce": "Produce",
+ "delete": "Delete",
+ "visit": "Visit"
+ },
+ "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",
+ "systemType": "System Type",
+ "resistors": "Resistors",
+ "hideEmptyTypes": "Hide Empty Types",
+ "error": "Error",
+ "errors": "Errors",
+ "or": "Or",
+ "status": "Status",
+ "success": "Success",
+ "failed": "Failed",
+ "warnings": "Warnings",
+ "apiKey": "Api Key",
+ "apiUrl": "Api Url",
+ "clientId": "Client Id",
+ "clientSecret": "Client Secret",
+ "timeout": "Timeout",
+ "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",
+ "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"
+ },
+ "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."
+ },
+ "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>?",
+ "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>.",
+ "header": {
+ "removeBomPart": "Remove Part from BOM",
+ "deleteFile": "Delete File",
+ "deletePart": "Delete Part"
+ }
+ },
+ "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!"
+ },
+ "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!"
+ },
+ "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"
+ }
+ },
+ "footer": {
+ "version": "Version",
+ "promo": "Try <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"
+ }
+ },
+ "color": {
+ "black": "Black",
+ "brown": "Brown",
+ "red": "Red",
+ "orange": "Orange",
+ "yellow": "Yellow",
+ "green": "Green",
+ "blue": "Blue",
+ "violet": "Violet",
+ "grey": "Grey",
+ "white": "White",
+ "gold": "Gold",
+ "silver": "Silver"
+ }
}
\ No newline at end of file
diff --git a/Binner/Binner.Web/ClientApp/public/locales/fr/translation.json b/Binner/Binner.Web/ClientApp/public/locales/fr/translation.json
index c1860fa3..a911851d 100644
--- a/Binner/Binner.Web/ClientApp/public/locales/fr/translation.json
+++ b/Binner/Binner.Web/ClientApp/public/locales/fr/translation.json
@@ -1,3 +1,596 @@
{
-
+ "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": "Projects"
+ },
+ "search": {
+ "title":"Inventory",
+ "search":"Seach"
+ },
+ "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",
+ "suppliers": "Suppliers",
+ "addKeyword": "Add Keyword",
+ "chooseAlternatePart": "Choose alternate part ({{count}})",
+ "placeholder": {
+ "location": "Home lab",
+ "keywords": "op amp",
+ "binNumber": "IC Components 2",
+ "binNumber2": "14"
+ },
+ "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"
+ }
+ },
+ "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."
+ },
+ "bom": {
+ "bc": {
+ "home": "Home",
+ "boms": "BOMs",
+ "bom": "BOM"
+ },
+ "header": {
+ "title": "Bill of Materials",
+ "description": "Manage your BOM by creating PCB(s) and adding your parts."
+ },
+ "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 {{count}} times with your current inventory.",
+ "bomProduceCount": "You can produce your entire BOM {{count}} times with your current inventory.",
+ "lowestPcb": "{{name}} is the lowest on inventory."
+ },
+ "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.
"
+ }
+ },
+ "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."
+ },
+ "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"
+ },
+ "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",
+ "barcodeScanner": "Barcode Scanner"
+ },
+ "barcodeScanner": {
+ "title": "Barcode Scanner",
+ "description": "Test your barcode scanner to see what values it outputs.",
+ "detected": "Detected",
+ "waitingForInput": "Waiting for input..."
+ },
+ "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>",
+ "confirm": {
+ "mustAuthenticateHeader": "Must Authenticate",
+ "mustAuthenticate": "External Api is requesting that you authenticate first. You will be redirected back after authenticating with the external provider."
+ },
+ "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.",
+ "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",
+ "digikey": "DigiKey",
+ "digikeySupport": "DigiKey Support",
+ "mouser": "Mouser",
+ "mouserSupport": "Mouser Support",
+ "searchApiKey": "Search Api Key",
+ "ordersApiKey": "Orders Api Key",
+ "cartApiKey": "Cart Api Key",
+ "arrow": "Arrow",
+ "arrowSupport": "Arrow Support",
+ "octopartNexar": "Octopart/Nexar",
+ "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}}"
+ },
+ "datasheet": {
+ "title": "Datasheet Search"
+ },
+ "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>"
+ },
+ "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",
+ "label": {
+ "labelType": "Label Type",
+ "paperSource": "Paper Source",
+ "labelNum": "Label #",
+ "text": "Text",
+ "fontSize": "FontSize",
+ "alignment": "Alignment",
+ "topMargin": "Top Margin",
+ "leftMargin": "Left Margin",
+ "font": "Font",
+ "isBarcode": "Is Barcode",
+ "center": "Center"
+ }
+ },
+ "project": {
+ "title": "Edit Project",
+ "description": "Projects are used as part of your BOM, allowing you to associate parts to multiple PCBs.",
+ "pcbs": "PCBs",
+ "confirm": {
+ "deleteProjectHeader": "Delete Project",
+ "deletePcbHeader": "Delete Pcb"
+ },
+ "placeholder": {
+ "name": "My Project",
+ "location": "New York"
+ },
+ "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"
+ }
+ },
+ "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"
+ },
+ "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"
+ },
+ "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"
+ }
+ }
+ },
+ "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"
+ },
+ "comp": {
+ "navBar": {
+ "search": "Search",
+ "help": "Help",
+ "home": "Home",
+ "addInventory": "Add Inventory",
+ "orderImport": "Order Import"
+ },
+ "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",
+ "popup": {
+ "lowStock": "Quantities below this value will indicate the part is low on stock.",
+ "quantity": "The quantity of parts currently in stock."
+ },
+ "confirm": {
+ "deletePart": "Are you sure you want to delete part {{partNumber}}?"
+ },
+ "error": {
+ "failedSave": "Error saving part {{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 without associating it to a part in your inventory?<3/><4/><5>Note: You will still be able to manage it's quantity if you choose to proceed, but it will not appear in your inventory.5>",
+ "selectPcb": "Select PCB",
+ "choosePcb": "Choose PCB",
+ "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."
+ }
+ },
+ "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",
+ "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>"
+ },
+ "placeholder": {
+ "name": "Main Board or module name",
+ "description": "Description of pcb"
+ }
+ },
+ "producePcbModal": {
+ "title": "BOM Management",
+ "description": "",
+ "header": "Produce Pcb",
+ "nextSerialNumber": "Next Serial Number",
+ "maxQty": "Max Qty",
+ "options": {
+ "all": "All",
+ "allDescription": "Produce the entire BOM",
+ "unassociated": "Unassociated",
+ "unassociatedDescription": "Produce parts not associated to a PCB"
+ },
+ "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."
+ },
+ "label": {
+ "pcbs": "Select PCB(s)"
+ },
+ "placeholder": {
+ "pcbs": "Choose PCB(s) to produce"
+ }
+ },
+ "chooseAlternatePartModal": {
+ "title": "Matching Parts"
+ },
+ "lineTemplate": {
+ "label": {
+ "content": "Content",
+ "font": "Font",
+ "fontSize": "Font Size",
+ "fontColor": "Font Color",
+ "textPosition": "Text Position",
+ "upperCaseText": "UpperCase Text",
+ "lowerCaseText": "LowerCase Text",
+ "barcode": "Barcode",
+ "marginLeft": "Margin Left",
+ "marginTop": "Margin Top",
+ "rotateDegrees": "Rotate Degrees"
+ },
+ "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"
+ }
+ }
+ },
+ "button": {
+ "addBomProject": "Add BOM Project",
+ "addPart": "Add Part",
+ "save": "Save",
+ "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",
+ "reset": "Reset",
+ "importParts": "Import Parts",
+ "preview": "Preview",
+ "print": "Print",
+ "load": "Load",
+ "addLine": "Add Line",
+ "add": "Add",
+ "cancel": "Cancel",
+ "produce": "Produce",
+ "delete": "Delete",
+ "visit": "Visit"
+ },
+ "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",
+ "systemType": "System Type",
+ "resistors": "Resistors",
+ "hideEmptyTypes": "Hide Empty Types",
+ "error": "Error",
+ "errors": "Errors",
+ "or": "Or",
+ "status": "Status",
+ "success": "Success",
+ "failed": "Failed",
+ "warnings": "Warnings",
+ "apiKey": "Api Key",
+ "apiUrl": "Api Url",
+ "clientId": "Client Id",
+ "clientSecret": "Client Secret",
+ "timeout": "Timeout",
+ "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",
+ "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"
+ },
+ "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."
+ },
+ "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>?",
+ "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>.",
+ "header": {
+ "removeBomPart": "Remove Part from BOM",
+ "deleteFile": "Delete File",
+ "deletePart": "Delete Part"
+ }
+ },
+ "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!"
+ },
+ "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!"
+ },
+ "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"
+ }
+ },
+ "footer": {
+ "version": "Version",
+ "promo": "Try <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"
+ }
+ },
+ "color": {
+ "black": "Black",
+ "brown": "Brown",
+ "red": "Red",
+ "orange": "Orange",
+ "yellow": "Yellow",
+ "green": "Green",
+ "blue": "Blue",
+ "violet": "Violet",
+ "grey": "Grey",
+ "white": "White",
+ "gold": "Gold",
+ "silver": "Silver"
+ }
}
\ No newline at end of file
diff --git a/Binner/Binner.Web/ClientApp/public/locales/zh/translation.json b/Binner/Binner.Web/ClientApp/public/locales/zh/translation.json
index c1860fa3..a911851d 100644
--- a/Binner/Binner.Web/ClientApp/public/locales/zh/translation.json
+++ b/Binner/Binner.Web/ClientApp/public/locales/zh/translation.json
@@ -1,3 +1,596 @@
{
-
+ "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": "Projects"
+ },
+ "search": {
+ "title":"Inventory",
+ "search":"Seach"
+ },
+ "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",
+ "suppliers": "Suppliers",
+ "addKeyword": "Add Keyword",
+ "chooseAlternatePart": "Choose alternate part ({{count}})",
+ "placeholder": {
+ "location": "Home lab",
+ "keywords": "op amp",
+ "binNumber": "IC Components 2",
+ "binNumber2": "14"
+ },
+ "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"
+ }
+ },
+ "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."
+ },
+ "bom": {
+ "bc": {
+ "home": "Home",
+ "boms": "BOMs",
+ "bom": "BOM"
+ },
+ "header": {
+ "title": "Bill of Materials",
+ "description": "Manage your BOM by creating PCB(s) and adding your parts."
+ },
+ "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 {{count}} times with your current inventory.",
+ "bomProduceCount": "You can produce your entire BOM {{count}} times with your current inventory.",
+ "lowestPcb": "{{name}} is the lowest on inventory."
+ },
+ "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.
"
+ }
+ },
+ "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."
+ },
+ "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"
+ },
+ "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",
+ "barcodeScanner": "Barcode Scanner"
+ },
+ "barcodeScanner": {
+ "title": "Barcode Scanner",
+ "description": "Test your barcode scanner to see what values it outputs.",
+ "detected": "Detected",
+ "waitingForInput": "Waiting for input..."
+ },
+ "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>",
+ "confirm": {
+ "mustAuthenticateHeader": "Must Authenticate",
+ "mustAuthenticate": "External Api is requesting that you authenticate first. You will be redirected back after authenticating with the external provider."
+ },
+ "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.",
+ "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",
+ "digikey": "DigiKey",
+ "digikeySupport": "DigiKey Support",
+ "mouser": "Mouser",
+ "mouserSupport": "Mouser Support",
+ "searchApiKey": "Search Api Key",
+ "ordersApiKey": "Orders Api Key",
+ "cartApiKey": "Cart Api Key",
+ "arrow": "Arrow",
+ "arrowSupport": "Arrow Support",
+ "octopartNexar": "Octopart/Nexar",
+ "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}}"
+ },
+ "datasheet": {
+ "title": "Datasheet Search"
+ },
+ "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>"
+ },
+ "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",
+ "label": {
+ "labelType": "Label Type",
+ "paperSource": "Paper Source",
+ "labelNum": "Label #",
+ "text": "Text",
+ "fontSize": "FontSize",
+ "alignment": "Alignment",
+ "topMargin": "Top Margin",
+ "leftMargin": "Left Margin",
+ "font": "Font",
+ "isBarcode": "Is Barcode",
+ "center": "Center"
+ }
+ },
+ "project": {
+ "title": "Edit Project",
+ "description": "Projects are used as part of your BOM, allowing you to associate parts to multiple PCBs.",
+ "pcbs": "PCBs",
+ "confirm": {
+ "deleteProjectHeader": "Delete Project",
+ "deletePcbHeader": "Delete Pcb"
+ },
+ "placeholder": {
+ "name": "My Project",
+ "location": "New York"
+ },
+ "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"
+ }
+ },
+ "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"
+ },
+ "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"
+ },
+ "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"
+ }
+ }
+ },
+ "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"
+ },
+ "comp": {
+ "navBar": {
+ "search": "Search",
+ "help": "Help",
+ "home": "Home",
+ "addInventory": "Add Inventory",
+ "orderImport": "Order Import"
+ },
+ "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",
+ "popup": {
+ "lowStock": "Quantities below this value will indicate the part is low on stock.",
+ "quantity": "The quantity of parts currently in stock."
+ },
+ "confirm": {
+ "deletePart": "Are you sure you want to delete part {{partNumber}}?"
+ },
+ "error": {
+ "failedSave": "Error saving part {{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 without associating it to a part in your inventory?<3/><4/><5>Note: You will still be able to manage it's quantity if you choose to proceed, but it will not appear in your inventory.5>",
+ "selectPcb": "Select PCB",
+ "choosePcb": "Choose PCB",
+ "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."
+ }
+ },
+ "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",
+ "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>"
+ },
+ "placeholder": {
+ "name": "Main Board or module name",
+ "description": "Description of pcb"
+ }
+ },
+ "producePcbModal": {
+ "title": "BOM Management",
+ "description": "",
+ "header": "Produce Pcb",
+ "nextSerialNumber": "Next Serial Number",
+ "maxQty": "Max Qty",
+ "options": {
+ "all": "All",
+ "allDescription": "Produce the entire BOM",
+ "unassociated": "Unassociated",
+ "unassociatedDescription": "Produce parts not associated to a PCB"
+ },
+ "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."
+ },
+ "label": {
+ "pcbs": "Select PCB(s)"
+ },
+ "placeholder": {
+ "pcbs": "Choose PCB(s) to produce"
+ }
+ },
+ "chooseAlternatePartModal": {
+ "title": "Matching Parts"
+ },
+ "lineTemplate": {
+ "label": {
+ "content": "Content",
+ "font": "Font",
+ "fontSize": "Font Size",
+ "fontColor": "Font Color",
+ "textPosition": "Text Position",
+ "upperCaseText": "UpperCase Text",
+ "lowerCaseText": "LowerCase Text",
+ "barcode": "Barcode",
+ "marginLeft": "Margin Left",
+ "marginTop": "Margin Top",
+ "rotateDegrees": "Rotate Degrees"
+ },
+ "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"
+ }
+ }
+ },
+ "button": {
+ "addBomProject": "Add BOM Project",
+ "addPart": "Add Part",
+ "save": "Save",
+ "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",
+ "reset": "Reset",
+ "importParts": "Import Parts",
+ "preview": "Preview",
+ "print": "Print",
+ "load": "Load",
+ "addLine": "Add Line",
+ "add": "Add",
+ "cancel": "Cancel",
+ "produce": "Produce",
+ "delete": "Delete",
+ "visit": "Visit"
+ },
+ "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",
+ "systemType": "System Type",
+ "resistors": "Resistors",
+ "hideEmptyTypes": "Hide Empty Types",
+ "error": "Error",
+ "errors": "Errors",
+ "or": "Or",
+ "status": "Status",
+ "success": "Success",
+ "failed": "Failed",
+ "warnings": "Warnings",
+ "apiKey": "Api Key",
+ "apiUrl": "Api Url",
+ "clientId": "Client Id",
+ "clientSecret": "Client Secret",
+ "timeout": "Timeout",
+ "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",
+ "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"
+ },
+ "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."
+ },
+ "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>?",
+ "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>.",
+ "header": {
+ "removeBomPart": "Remove Part from BOM",
+ "deleteFile": "Delete File",
+ "deletePart": "Delete Part"
+ }
+ },
+ "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!"
+ },
+ "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!"
+ },
+ "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"
+ }
+ },
+ "footer": {
+ "version": "Version",
+ "promo": "Try <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"
+ }
+ },
+ "color": {
+ "black": "Black",
+ "brown": "Brown",
+ "red": "Red",
+ "orange": "Orange",
+ "yellow": "Yellow",
+ "green": "Green",
+ "blue": "Blue",
+ "violet": "Violet",
+ "grey": "Grey",
+ "white": "White",
+ "gold": "Gold",
+ "silver": "Silver"
+ }
}
\ No newline at end of file
diff --git a/Binner/Binner.Web/ClientApp/src/common/Utils.js b/Binner/Binner.Web/ClientApp/src/common/Utils.js
index eecfa584..fd14c610 100644
--- a/Binner/Binner.Web/ClientApp/src/common/Utils.js
+++ b/Binner/Binner.Web/ClientApp/src/common/Utils.js
@@ -46,10 +46,22 @@ export const decodeResistance = (str) => {
* @returns formatted number string
*/
export const formatCurrency = (number, currency = 'USD', maxDecimals = 5) => {
- const lang = getLocaleLanguage();
- return number.toLocaleString(lang, { style: "currency", currency: currency, maximumFractionDigits: maxDecimals });
+ if (!number || typeof number !== "number") number = 0;
+ const locale = getLocaleLanguage();
+ return number.toLocaleString(locale, { style: "currency", currency: currency, maximumFractionDigits: maxDecimals });
};
+/**
+ * Get the currency symbol
+ * @param {string} currency Currency to use, default: 'USD'
+ * @returns formatted number string
+ */
+export const getCurrencySymbol = (currency = 'USD') => {
+ const locale = getLocaleLanguage();
+ return (0).toLocaleString(locale, { style: 'currency', currency, minimumFractionDigits: 0, maximumFractionDigits: 0 }).replace(/\d/g, '').trim();
+};
+
+
/**
* Get the locale language of the browser
* @returns language string
@@ -68,7 +80,6 @@ export const getLocaleLanguage = () => {
* @returns formatted number string
*/
export const formatNumber = (number) => {
- // return number.toString().replace(/\B(?{p.binNumber2} : null) : {p.binNumber2}}
)}} }
{col.cost &&