An unescaped apostrophe breaks the build; an escaped one shows a backslash
aapt rejects a bare apostrophe inside a string resource, so a French or Italian translation stops the build rather than shipping wrong. Escape one that did not need it and the user sees a literal backslash on screen.
Linguiqo escapes on the way out and unescapes on the way in, so what a translator types is what a user reads, and what the build gets is what aapt accepts. The pair is applied in opposite order in each direction, which is the part a hand-rolled script usually misses.