Here's a LuaLaTeX-based solution, which doesn't require you to modify the existing "..." and '...' pairs of quotes. It consists of a Lua function, called msq (short for 'make smart quotes'), and two utility LaTeX macros, called \msqOn and \msqOff, which activate resp. deactivate the Lua function. By "activating the Lua function", I mean assigning it to LuaTeX's process_input_buffer callback, where it acts as a preprocessor on the input stream.

Addendum, posted 1 March 2023: You should not use this answer to replace "dumb" with "smart" double-quotes if (a) your document uses " to denote hexadecimal numbers (e.g., "FF=256) and if you have two more more hex numbers in an input line, (b) if you use " in babel shorthand expressions, or (c) if you employ " to denote file names that include spaces; e.g., xxx"aaa bbb"ccc.tex to denote the filename xxxaaa bbbccc.tex. Please see @DavidCarlisle's recent answer for more information. Of course, if one of these issues arises just in a well-delimited part of your document, you could "protect" it from the action of the msq preprocessor by executing \msqOff at the start of the part in question (and, later on, executing \msqOn to restart the preprocessor action).
\documentclass{book}
\usepackage[english]{babel} % or some other suitable language choice
\usepackage[autostyle]{csquotes}
\usepackage{luacode}
\begin{luacode}
-- msq: "make smart quotes"
function msq ( s )
s = s:gsub ( '"(.-)"' , "\enquote{%1}" )
s = s:gsub ( "'(.-)'" , "`%1'" )
return s
end
\end{luacode}
\newcommand{\msqOn}{\directlua{ luatexbase.add_to_callback(
"process_input_buffer", msq , "msq" )}}
\newcommand{\msqOff}{\directlua{ luatexbase.remove_from_callback(
"process_input_buffer", "msq" )}}
\begin{document}
\msqOn
"test double quotes" and 'test single quotes'
",'Twas brillig and the slithy toves \ldots"
\medskip
\msqOff
"test double quotes" and 'test single quotes'
\end{document}
"<space> -> }, doesn't catch the cases when the closing"character occurs at the very end of a line or is followed by a punctuation character. – Mico Jul 15 '19 at 04:05"to the proper“(or\`` in traditional TeX) and”(or''in traditional TeX), i.e. determine which straight quote should be changed to which. Obviously, determining which ones should be\enquote{and which ones should be}is the same problem; so this isn't any simpler and doesn't answer anything. Sure, using enquote helps if using multiple languages and quotation styles, but the question mentions nothing about using multiple quotation-mark styles. – ShreevatsaR Jul 15 '19 at 04:48