The algorithms
bundle provides the user with the flexibility to change things to suit their needs, albeit somewhat manually. To that end, I suggest creating a language-specific environment to manage the languages you're using, say frenchalgorithm
and englishalgorithm
:

\documentclass{article}
\usepackage{algorithm,algorithmic,lipsum}
\usepackage[T1]{fontenc}
\usepackage[french,english]{babel}
\newenvironment{englishalgorithm}[1][]
{\begin{algorithm}[#1]
\selectlanguage{english}%
\floatname{algorithm}{Algorithm}%
\renewcommand{\algorithmicif}{\textbf{if}}%
\renewcommand{\algorithmicthen}{\textbf{then}}%
\renewcommand{\algorithmicend}{\textbf{end}}%
% Set other language requirements
}
{\end{algorithm}}
\newenvironment{frenchalgorithm}[1][]
{\begin{algorithm}[#1]
\selectlanguage{french}%
\floatname{algorithm}{Algorithme}%
\renewcommand{\algorithmicif}{\textbf{si}}%
\renewcommand{\algorithmicthen}{\textbf{alors}}%
\renewcommand{\algorithmicend}{\textbf{fin}}%
% Set other language requirements
}
{\end{algorithm}}
\begin{document}
\lipsum[1]
\begin{englishalgorithm}[H]
\caption{An algorithm}
\begin{algorithmic}[1]
\STATE This is a statement
\IF{abc}
\STATE This is another statement
\ENDIF
\end{algorithmic}
\end{englishalgorithm}
\begin{frenchalgorithm}[H]
\caption{Another algorithm}
\begin{algorithmic}[1]
\STATE This is a statement
\IF{abc}
\STATE This is another statement
\ENDIF
\end{algorithmic}
\end{frenchalgorithm}
\lipsum[2]
\end{document}
You'd have to define each of the translated keywords manually. The same would go if you were using the algorithmicx
package.
More about the above changes is briefly discussed in sections 3.14.3 Customization and 4.4 Customization of the algorithms
documentation.
I don't speak French...