biblatex's language support is implemented in way that
- requires all used languages to be "known" beforehand (for
babel this means, all languages you are going to use need to be announced as options to babel),
- tries to load
biblatex localisations for all announced languages even if there are no citations/bibliographies in the portion of your document typeset in that language.
That means that your document compiles with fewer warnings as soon as you make it read
\documentclass{article}
\usepackage[esperanto, english]{babel}
\usepackage{csquotes}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
\selectlanguage{esperanto}
Saluton!
\selectlanguage{english}
Let us cite \cite{sigfridsson}.
\printbibliography
\end{document}
You still get a warning that esperanto is unsupported in biblatex, because biblatex does not have an esperanto.lbx.
You may choose to ignore this warning or you may want to look into writing a suitable esperanto.lbx (cf. What is the most appropriate way to configure biblatex for use with an unsupported language?).
There are ways to "silence" this warning, but I would not recommend that, since silencing the warning could come back to bite you if you really want Esperanto citations/bibliography entries at some point.
gusbrs suggested a simple way to make biblatex shut up in the comments: Map Esperanto to English
\DeclareLanguageMapping{esperanto}{english}
Or you can issue
\makeatletter
\protected\def\blx@langsetup#1{%
\blx@lbxinput{#1}
{\edef\blx@languagename{#1}}
{}}
\makeatother
in the preamble to remove the code that generates the relevant warning.
While babel does not error if you don't pass esperanto as option and later use \selectlanguage{esperanto}, the result might be a bit off.
\documentclass{article}
\usepackage[english]{babel}
\begin{document}
\selectlanguage{esperanto}
\tableofcontents
\section{Foo}
Saluton!
\selectlanguage{english}
\tableofcontents
\section{Bar}
Lorem
\end{document}
gives

and the warning
Package babel Warning: \contentsname not set for 'esperanto'. Please,
(babel) define it after the language has been loaded
(babel) (typically in the preamble) with:
(babel) \setlocalecaption{esperanto}{contents}{..}
(babel) Reported on input line 6.
With
\documentclass{article}
\usepackage[esperanto, english]{babel}
\begin{document}
\selectlanguage{esperanto}
\tableofcontents
\section{Foo}
Saluton!
\selectlanguage{english}
\tableofcontents
\section{Bar}
Lorem
\end{document}
I get

I can't tell you if other more important features like hyphenation work in both settings, but this behaviour seems to suggest to me that at least at the moment, you should still announce all languages to babel as package/class options.
esperantoto the mix in the document appears to lead to an infinite "Package biblatex Warning: Please rerun LaTeX." (it does for me). – gusbrs May 29 '22 at 11:22esperantoto the list ofbabellanguages in the preamble. Though, it seems wrong to me thatbiblatexdoes what it does when the language is not preloaded, which is legit, as far asbabelis concerned. ... – gusbrs May 29 '22 at 11:53biblatex. Though there might be better ways to do it. – gusbrs May 29 '22 at 11:54\usepackage[esperanto,english]{babel}, an then map Esperanto to English (meaning "just use English defaults since there's no support for it") with\DeclareLanguageMapping{esperanto}{english}. – gusbrs May 29 '22 at 15:35DeclareLanguageMappingworkaround. Also, IMHO it's worth adding an answer containing that solution and the simple.lbxfile trick so that I can accept it and the question doesn't look unresolved. – aclow May 30 '22 at 04:05\DeclareLanguageMappingworkaround makes the .lbx suggestion sort of obsolete). – gusbrs May 30 '22 at 09:54