Skip to content

Search is only available in production builds. Try building and previewing the site to test it out locally.

Quote Management Dictionary

The Quote Management dictionary contains all user-facing text, labels, and messages displayed by this drop-in. Customize the dictionary to:

  • Localize the drop-in for different languages and regions
  • Customize labels and messages to match your brand voice
  • Override default text without modifying source code for the drop-in

Dictionaries use the i18n (internationalization) pattern, where each text string is identified by a unique key path.

Version: 1.0.0-beta5

How to customize

Override dictionary values during drop-in initialization. The drop-in deep-merges your custom values with the defaults.

import { initialize } from '@dropins/storefront-quote-management';
await initialize({
langDefinitions: {
en_US: {
"ConfirmationModal": {
"cancel": {
"0": "Custom value",
"1": "Custom value"
}
}
}
}
});

You only need to include the keys you want to change. For multi-language support and advanced patterns, see the Dictionary customization guide.

Default keys and values

Below are the default English (en_US) strings provided by the Quote Management drop-in:

{
"ConfirmationModal": {
"cancel": "Cancel",
"confirm": "Confirm"
},
"NegotiableQuote": {
"Request": {
"title": "Request a Quote",
"comment": "Comment",
"commentError": "Please add your comment",
"quoteName": "Quote name",
"quoteNameError": "Please add a quote name",
"attachmentsError": "Error uploading attachments",
"maxFilesExceeded": "Maximum {maxFiles} file(s) allowed",
"maxFileSizeExceeded": "File size exceeds maximum limit of {maxSize}",
"invalidFileType": "File type not accepted",
"removeFile": "Remove file",
"uploading": "Uploading...",
"uploadSuccess": "Upload complete",
"uploadError": "Upload failed",
"requestCta": "Request a Quote",
"saveDraftCta": "Save as draft",
"error": {
"header": "Error",
"unauthenticated": "Please sign in to request a quote.",
"unauthorized": "You are not authorized to request a quote.",
"missingCart": "Could not find a valid cart."
},
"success": {
"header": "Success",
"submitted": "Quote request submitted successfully!",
"draftSaved": "Quote saved as draft successfully!"
}
},
"Manage": {
"createdLabel": "Created:",
"salesRepLabel": "Sales Rep:",
"expiresLabel": "Expires:",
"actionsLabel": "Actions",
"actions": {
"remove": "Remove"
},
"attachFile": "Attach File",
"attachFiles": "Attach Files",
"fileUploadError": "Failed to upload file. Please try again.",
"maxFilesExceeded": "Maximum {maxFiles} file(s) allowed",
"maxFileSizeExceeded": "File size exceeds maximum limit of {maxSize}",
"invalidFileType": "File type not accepted",
"removeFile": "Remove file",
"uploading": "Uploading...",
"uploadSuccess": "Upload complete",
"uploadError": "Upload failed",
"bannerTitle": "Alert",
"bannerStatusMessages": {
"submitted": "This quote is currently locked for editing. It will become available once released by the Merchant.",
"pending": "This quote is currently locked for editing. It will become available once released by the Merchant.",
"expired": "Your quote has expired and the product prices have been updated as per the latest prices in your catalog. You can either re-submit the quote to seller for further negotiation or go to checkout."
},
"actionButtons": {
"close": "Close quote",
"delete": "Delete quote",
"print": "Print quote",
"createTemplate": "Create quote template",
"createCopy": "Create copy",
"sendForReview": "Send for review"
},
"confirmationModal": {
"cancel": "Cancel",
"delete": {
"title": "Delete Quote",
"message": "Are you sure you want to delete this quote?",
"confirm": "Delete",
"errorHeading": "Error",
"errorFallback": "Failed to delete quote",
"successHeading": "Success",
"successDescription": "Quote has been successfully deleted"
},
"duplicate": {
"title": "Duplicate Quote",
"message": "Are you sure you want to create a copy of this quote?",
"confirm": "Create Copy",
"errorHeading": "Error",
"errorFallback": "Failed to duplicate quote",
"successHeading": "Success",
"successDescription": "Quote has been successfully duplicated. You will be redirected to the new quote shortly.",
"outOfStockWarningHeading": "Alert",
"outOfStockWarningMessage": "Some items were skipped during duplication due to errors."
},
"close": {
"message": "Are you sure you want to close this quote?",
"confirm": "Close",
"confirmLoading": "Closing...",
"successHeading": "Success",
"successDescription": "Quote has been successfully closed"
},
"createTemplate": {
"message": "Are you sure you want to create a quote template from this quote?",
"confirm": "Create Template",
"confirmLoading": "Creating...",
"successHeading": "Success",
"successDescription": "Quote template has been successfully created",
"errorHeading": "Error",
"errorFallback": "Failed to create quote template"
},
"noItemsSelected": {
"title": "Please Select Quote Items",
"message": "Please select at least one quote item to proceed.",
"confirm": "Ok"
}
},
"shippingInformation": {
"title": "Shipping Information"
},
"shippingAddress": {
"noAddress": "No shipping address has been set for this quote.",
"noAddressHeading": "No Shipping Address",
"noAddressDescription": "Please select or enter a shipping address."
},
"quoteComments": {
"title": "Quote Comments",
"placeholder": "Add your comment",
"emptyState": "No comments yet",
"by": "by",
"attachments": "Attachments:"
},
"productListTable": {
"headers": {
"productName": "Product name",
"sku": "SKU",
"price": "Price",
"quantity": "Quantity",
"discount": "Discount",
"subtotal": "Subtotal",
"actions": "Actions"
},
"submitButton": "Update",
"actions": {
"editNoteToSeller": "Edit note to seller",
"remove": "Remove"
},
"notes": {
"header": "NOTES",
"leftANote": "left a note:",
"buyer": "Buyer",
"seller": "Seller"
},
"outOfStock": "Out of Stock",
"outOfStockMessage": "This item is currently out of stock."
},
"rename": {
"title": "Rename Quote",
"quoteNameLabel": "Quote name",
"reasonLabel": "Reason for change",
"renameButton": "Rename",
"cancelButton": "Cancel",
"errorHeading": "Error",
"quoteNameRequired": "Quote name is required",
"errorDefault": "Failed to rename quote. Please try again.",
"successHeading": "Success",
"successMessage": "Quote renamed successfully!"
},
"lineItemNote": {
"title": "Leave a note to seller",
"productLabel": "Name & SKU",
"skuLabel": "SKU",
"priceLabel": "Price",
"stockLabel": "Stock",
"quantityLabel": "Qty",
"discountLabel": "Discount",
"subtotalLabel": "Subtotal",
"noteLabel": "Note to seller",
"notePlaceholder": "Can I get a discount on this?",
"noteHelper": "The seller will see the note when you send the quote back.",
"confirmButton": "Confirm",
"cancelButton": "Cancel",
"noteError": "Please enter a note",
"quantityError": "Quantity must be greater than 0"
},
"tabbedContent": {
"itemsQuoted": "Items quoted",
"comments": "Comments",
"historyLog": "History log"
},
"quotePricesSummary": {
"subtotal": {
"excludingTax": "Quote Subtotal (excluding tax)"
},
"appliedTaxes": "Applied Taxes",
"grandTotal": {
"includingTax": "Quote Grand Total (including tax)"
}
},
"updateQuantitiesModal": {
"title": "Change Quote Items",
"description": "Making changes to any quote item changes the terms of the quote. After you update the quote, return it to the seller for review and approval.",
"cancelButton": "Cancel",
"updateButton": "Apply Changes",
"successHeading": "Success",
"successMessage": "Quote quantities have been successfully updated.",
"errorHeading": "Error",
"errorMessage": "Failed to update quote quantities. Please try again."
},
"removeItemsModal": {
"title": "Change Quote Items",
"description": "Making changes to any quote item changes the terms of the quote. After you update the quote, return it to the seller for review and approval.",
"cancelButton": "Cancel",
"confirmButton": "Remove",
"confirmButtonRemoving": "Removing...",
"successHeading": "Success",
"successMessage": "Quote items have been successfully removed.",
"errorHeading": "Error",
"errorMessage": "Failed to remove quote items. Please try again."
}
},
"PriceSummary": {
"taxToBeDetermined": "TBD",
"orderSummary": "Order Summary",
"giftOptionsTax": {
"printedCard": {
"title": "Printed card",
"inclTax": "Including taxes",
"exclTax": "excluding taxes"
},
"itemGiftWrapping": {
"title": "Item gift wrapping",
"inclTax": "Including taxes",
"exclTax": "excluding taxes"
},
"orderGiftWrapping": {
"title": "Order gift wrapping",
"inclTax": "Including taxes",
"exclTax": "excluding taxes"
}
},
"subTotal": {
"label": "Subtotal",
"withTaxes": "Including taxes",
"withoutTaxes": "excluding taxes"
},
"shipping": {
"label": "Shipping",
"withTaxes": "Including taxes",
"withoutTaxes": "excluding taxes"
},
"taxes": {
"total": "Tax Total",
"totalOnly": "Tax",
"breakdown": "Taxes",
"showBreakdown": "Show Tax Breakdown",
"hideBreakdown": "Hide Tax Breakdown"
},
"total": {
"free": "Free",
"label": "Total",
"withoutTax": "Total excluding taxes",
"saved": "Total saved"
}
},
"QuoteSummaryList": {
"discountedPrice": "Discounted Price",
"discountPercentage": "{discount}% off",
"editQuote": "Edit",
"file": "{count} file",
"files": "{count} files",
"heading": "Negotiable Quote ({count})",
"listOfQuoteItems": "List of Quote Items",
"regularPrice": "Regular Price",
"savingsAmount": "Savings",
"viewMore": "View more"
}
},
"NegotiableQuoteTemplate": {
"Manage": {
"createdLabel": "Created:",
"salesRepLabel": "Sales Rep:",
"expiresLabel": "Expires:",
"templateIdLabel": "Template ID:",
"referenceDocuments": {
"title": "Reference Documents",
"add": "Add",
"edit": "Edit",
"remove": "Remove",
"noReferenceDocuments": "No reference documents",
"form": {
"title": "Document Information",
"documentNameLabel": "Document name",
"documentIdentifierLabel": "Document identifier",
"referenceUrlLabel": "Reference URL",
"addButton": "Add to Quote Template",
"updateButton": "Update Document",
"cancelButton": "Cancel",
"documentNameRequired": "Document name is required",
"documentIdentifierRequired": "Document identifier is required",
"referenceUrlRequired": "Reference URL is required",
"invalidUrl": "Please enter a valid URL",
"errorHeading": "Error",
"duplicateUidError": "A document with this identifier already exists in the template. Please use a different identifier."
}
},
"shippingInformation": {
"title": "Shipping Information"
},
"comments": {
"title": "Comments"
},
"historyLog": {
"title": "History Log"
},
"tabs": {
"itemsQuoted": "Items Quoted",
"comments": "Comments",
"historyLog": "History Log"
},
"templateComments": {
"title": "Template Comments",
"placeholder": "Add your comment"
},
"actionsLabel": "Actions",
"actionButtons": {
"sendForReview": "Send for review",
"delete": "Delete template",
"cancel": "Cancel template",
"accept": "Accept",
"generateQuote": "Generate quote"
},
"removeItemsModal": {
"title": "Change Quote Template Items",
"description": "Making changes to any quote template item changes the terms of the template. After you update the template, return it to the seller for review and approval.",
"cancelButton": "Cancel",
"confirmButton": "Remove",
"confirmButtonRemoving": "Removing...",
"successHeading": "Success",
"successMessage": "Quote template items have been successfully removed.",
"errorHeading": "Error",
"errorMessage": "Failed to remove quote template items. Please try again."
},
"updateQuantitiesModal": {
"title": "Change Quote Template Items",
"description": "Making changes to any quote template item changes the terms of the template. After you update the template, return it to the seller for review and approval.",
"cancelButton": "Cancel",
"updateButton": "Apply Changes",
"successHeading": "Success",
"successMessage": "Quote template quantities have been successfully updated.",
"errorHeading": "Error",
"errorMessage": "Failed to update quote template quantities. Please try again."
},
"confirmationModal": {
"cancel": "Cancel",
"delete": {
"title": "Delete Quote Template",
"message": "Are you sure you want to delete this quote template?",
"confirm": "Delete",
"errorHeading": "Error",
"errorFallback": "Failed to delete quote template",
"successHeading": "Success",
"successDescription": "Quote template has been successfully deleted"
},
"cancelTemplate": {
"title": "Cancel Quote Template",
"message": "Are you sure you want to cancel this quote template?",
"confirm": "Cancel Template",
"errorHeading": "Error",
"errorFallback": "Failed to cancel quote template",
"successHeading": "Success",
"successDescription": "Quote template has been successfully cancelled"
},
"accept": {
"title": "Accept Quote Template",
"message": "Are you sure you want to accept this quote template?",
"confirm": "Accept",
"confirmLoading": "Accepting...",
"successHeading": "Quote Template Accepted",
"successDescription": "Quote template has been successfully accepted.",
"errorHeading": "Error",
"errorFallback": "Failed to accept quote template. Please try again."
},
"generateQuote": {
"message": "Are you sure you want to generate a quote from this template?",
"confirm": "Generate Quote",
"confirmLoading": "Generating...",
"successHeading": "Quote Generated",
"successDescription": "Quote has been successfully generated from the template.",
"errorHeading": "Error",
"errorFallback": "Failed to generate quote from template. Please try again."
}
},
"quotePricesSummary": {
"subtotal": {
"excludingTax": "Quote Template Subtotal (excluding tax)"
},
"appliedTaxes": "Applied Taxes",
"grandTotal": {
"includingTax": "Quote Template Grand Total (including tax)"
}
},
"lineItemNoteModal": {
"errorHeading": "Error"
},
"rename": {
"title": "Rename Quote Template",
"templateNameLabel": "Template name",
"reasonLabel": "Reason for change",
"renameButton": "Rename",
"cancelButton": "Cancel",
"errorHeading": "Error",
"templateNameRequired": "Template name is required",
"errorDefault": "Failed to rename quote template. Please try again.",
"successHeading": "Success",
"successMessage": "Quote template renamed successfully!"
},
"unsavedChangesWarningHeading": "Unsaved Changes",
"unsavedChangesWarningMessage": "The quote template must be submitted for review to save the changes.",
"shippingAddressWarningHeading": "No Shipping Address",
"shippingAddressWarningMessage": "No shipping address has been set for this quote template."
}
},
"historyLog": {
"changeTypes": {
"created": "Quote Created",
"updated": "Quote Updated",
"statusChanged": "Status Changed",
"commentAdded": "Comment Added",
"expirationChanged": "Expiration Changed"
},
"noteTypes": {
"buyerNoteAdded": "Buyer Note Added",
"sellerNoteAdded": "Seller Note Added"
},
"authorLabels": {
"buyer": "(Buyer)",
"seller": "(Seller)"
},
"changeDetails": {
"comment": "Comment: \"{comment}\"",
"statusChangedFromTo": "Status changed from {oldStatus} to {newStatus}",
"statusSetTo": "Status set to {newStatus}",
"expirationChangedFromTo": "Expiration changed from {oldExpiration} to {newExpiration}",
"expirationSetTo": "Expiration set to {newExpiration}",
"totalChangedFromTo": "Total changed from {oldTotal} to {newTotal}",
"customChange": "{title}: changed from \"{oldValue}\" to \"{newValue}\"",
"productsRemovedFromCatalog": "Products removed from catalog: {products}",
"productsRemovedFromQuote": "Products removed from quote: {products}",
"noDetailsAvailable": "No details available"
},
"emptyState": "No history available for this quote."
},
"QuoteManagement": {
"QuotesListTable": {
"quoteName": "Quote Name",
"created": "Created",
"createdBy": "Created By",
"status": "Status",
"lastUpdated": "Last Updated",
"quoteTemplate": "Quote Template",
"quoteTotal": "Quote Total",
"actions": "Action"
},
"QuoteTemplatesListTable": {
"name": "Template Name",
"state": "State",
"status": "Status",
"validUntil": "Valid Until",
"minQuoteTotal": "Min. Quote Total (Negotiated)",
"ordersPlaced": "Orders Placed",
"lastOrdered": "Last Ordered",
"actions": "Action",
"view": "View"
}
}
}