Try ERPNext Buy Support Partners Foundation

[Question] why line break/return has been replaced by empty string in JS translate function which caused some description not translatable

frappe._ = function(txt, replace, context = null) {
	if ($.isEmptyObject(frappe._messages) && frappe.boot) {
		$.extend(frappe._messages, frappe.boot.__messages);
	if (!txt) return txt;
	if (typeof txt != "string") return txt;

	let translated_text = '';

	let key = txt.replace(/\n/g, "");
	if (context) {
		translated_text = frappe._messages[`${key}:${context}`];

	if (!translated_text) {
		translated_text = frappe._messages[key] || txt;

	if (replace && typeof replace === "object") {
		translated_text = $.format(translated_text, replace);
	return translated_text;

from the above extracted code from translate.js we can see that the line break / return has been removed by this line
let key = txt.replace(/\n/g, "");

which caused the source text contains line break(e.g the serial number in item master, the options in docfield) can not be translated at all.

My question is any special reason in translate.js the line break has to be removed, to be more specific in order to make the source text contains line break translatable, we got to remove the line break in source text or change the translation.js function to avoid remove the line break?