For a method that would work regardless of the version (and shell implementation like ksh93 where it comes from and mksh and zsh which also support it), you can store the pattern and replacement in a variable:
pattern="'"
replacement="''"
printf '%s\n' "${line//$pattern/$replacement}"
Or
q="'"
printf '%s\n' "${line//$q/$q$q}"
(note that in zsh, the $pattern is taken as a fixed string. If you want it to be taken as a wildcard pattern (which doesn't apply here as $pattern doesn't contain wildcard characters), you need to replace $pattern with $~pattern. In other shells, if you want $pattern to be taken as a fixed string, you need to quote it (${line//"$pattern"/$replacement}).