fix(i18n): update extractMessages function for better escaping of characters (#1079)
This PR fix a bug when a translation message has two single quote like "message": "hello 'world'", the extractMessages function was escaping the message correcly.
This commit is contained in:
@@ -25,15 +25,14 @@ async function extractMessages(
|
|||||||
try {
|
try {
|
||||||
const formattedMessages = messages
|
const formattedMessages = messages
|
||||||
.trim()
|
.trim()
|
||||||
.replace(/^\s*(['"])?([a-zA-Z0-9_-]+)(['"])?:/gm, '"$2":')
|
.replace(/^\s*(['"])?([a-zA-Z0-9_-]+)(['"])?:[\s\n]*/gm, '"$2":')
|
||||||
.replace(
|
.replace(/^"[a-zA-Z0-9_-]+":'.*',?$/gm, (match) => {
|
||||||
/'.*'/g,
|
const parts = /^("[a-zA-Z0-9_-]+":)'(.*)',?$/.exec(match);
|
||||||
(match) =>
|
if (!parts) return match;
|
||||||
`"${match
|
return `${parts[1]}"${parts[2]
|
||||||
.match(/'(.*)'/)?.[1]
|
.replace(/\\/g, '\\\\')
|
||||||
.replace(/\\/g, '\\\\')
|
.replace(/"/g, '\\"')}",`;
|
||||||
.replace(/"/g, '\\"')}"`
|
})
|
||||||
)
|
|
||||||
.replace(/,$/, '');
|
.replace(/,$/, '');
|
||||||
const messagesJson = JSON.parse(`{${formattedMessages}}`);
|
const messagesJson = JSON.parse(`{${formattedMessages}}`);
|
||||||
return { namespace: namespace.trim(), messages: messagesJson };
|
return { namespace: namespace.trim(), messages: messagesJson };
|
||||||
|
|||||||
Reference in New Issue
Block a user