Merged in feat/lokalise-rebuild (pull request #2993)
Feat/lokalise rebuild * chore(lokalise): update translation ids * chore(lokalise): easier to switch between projects * chore(lokalise): update translation ids * . * . * . * . * . * . * chore(lokalise): update translation ids * chore(lokalise): update translation ids * . * . * . * chore(lokalise): update translation ids * chore(lokalise): update translation ids * . * . * chore(lokalise): update translation ids * chore(lokalise): update translation ids * chore(lokalise): new translations * merge * switch to errors for missing id's * merge * sync translations Approved-by: Linus Flood
This commit is contained in:
28
scripts/i18n/syncDefaultMessage/syncFormattedMessage.ts
Normal file
28
scripts/i18n/syncDefaultMessage/syncFormattedMessage.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* Pattern 1: FormattedMessage with id and defaultMessage
|
||||
* @code <FormattedMessage id="myKey" defaultMessage="old message" />
|
||||
*/
|
||||
export function syncFormattedMessage({
|
||||
translations,
|
||||
fileContent,
|
||||
}: {
|
||||
translations: Record<string, string>;
|
||||
fileContent: string;
|
||||
}): { updated: false } | { updated: true; fileContent: string } {
|
||||
let updated = false;
|
||||
Object.entries(translations).forEach(([messageId, messageValue]) => {
|
||||
const regex = new RegExp(
|
||||
`(id=["']${messageId.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}["'].*?defaultMessage=)["']([^"']*?)["']`,
|
||||
"gs"
|
||||
);
|
||||
|
||||
if (regex.test(fileContent)) {
|
||||
const escapedValue = messageValue
|
||||
.replace(/"/g, '\\"')
|
||||
.replace(/\n/g, "\\n");
|
||||
fileContent = fileContent.replace(regex, `$1"${escapedValue}"`);
|
||||
updated = true;
|
||||
}
|
||||
});
|
||||
return updated ? { updated, fileContent } : { updated };
|
||||
}
|
||||
Reference in New Issue
Block a user