fix: translations and UX in alternative item mapping (#34433)

* fix: disable deletion in alternative item mapping

* feat: german translations

* fix: make string translatable

---------

Co-authored-by: Anand Baburajan <anandbaburajan@gmail.com>
Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 81ef44d..83fa472 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -304,6 +304,7 @@
 					fieldname: "alternative_items",
 					fieldtype: "Table",
 					cannot_add_rows: true,
+					cannot_delete_rows: true,
 					in_place_edit: true,
 					reqd: 1,
 					data: this.data,
@@ -330,7 +331,7 @@
 		dialog.fields_dict.info.$wrapper.html(
 			`<p class="small text-muted">
 				<span class="indicator yellow"></span>
-				Alternative Items
+				${__("Alternative Items")}
 			</p>`
 		)
 		dialog.show();
diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv
index 1653151..9599eed 100644
--- a/erpnext/translations/de.csv
+++ b/erpnext/translations/de.csv
@@ -5063,7 +5063,7 @@
 Rate ,Preis,
 Rate (Company Currency),Preis (Unternehmenswährung),
 Amount (Company Currency),Betrag (Unternehmenswährung),
-Is Free Item,Ist freies Einzelteil,
+Is Free Item,Ist kostenlos,
 Net Rate,Nettopreis,
 Net Rate (Company Currency),Nettopreis (Unternehmenswährung),
 Net Amount (Company Currency),Nettobetrag (Unternehmenswährung),
@@ -9914,3 +9914,7 @@
 Delivered Duty Paid,Geliefert verzollt,
 Discount Validity,Frist für den Rabatt,
 Discount Validity Based On,Frist für den Rabatt berechnet sich nach,
+Select Alternative Items for Sales Order,Alternativpositionen für Auftragsbestätigung auswählen,
+Select an item from each set to be used in the Sales Order.,"Wählen Sie aus den Alternativen jeweils einen Artikel aus, der in die Auftragsbestätigung übernommen werden soll.",
+Is Alternative,Ist Alternative,
+Alternative Items,Alternativpositionen,