Two packages come to mind: translator
(from the beamer
bundle) and translations
. I'll show an example for both each giving the following output:
First page:
Second page:

Here's the translations
version:
\documentclass{article}
\usepackage[ngerman,french,english]{babel}
\usepackage[lastpage,user]{zref}
\usepackage{translations}
% used when a language is used for which no translation exists:
\DeclareTranslationFallback{page-of-pages}
{page~\thepage\ of~\zpageref{LastPage}}
% translations:
\DeclareTranslation{German}{page-of-pages}
{Seite~\thepage\ von~\zpageref{LastPage}}
\DeclareTranslation{French}{page-of-pages}
{page~\thepage\ sur~\zpageref{LastPage}}
\DeclareTranslation{English}{page-of-pages}
{page~\thepage\ of~\zpageref{LastPage}}
\begin{document}
\selectlanguage{ngerman}
\GetTranslation{page-of-pages}
\selectlanguage{french}
\GetTranslation{page-of-pages}
\selectlanguage{english}
\GetTranslation{page-of-pages}
\newpage
\selectlanguage{ngerman}
\GetTranslation{page-of-pages}
\selectlanguage{french}
\GetTranslation{page-of-pages}
\selectlanguage{english}
\GetTranslation{page-of-pages}
\end{document}
Here's the analogous version with translator
. Note, that it needs to know the languages by providing them as option which is done here by declaring them as class option:
\documentclass[ngerman,french,english]{article}
\usepackage{babel}
\usepackage[lastpage,user]{zref}
\usepackage{translator}
\newtranslation[to=German]{page-of-pages}
{Seite~\thepage\ von~\zpageref{LastPage}}
\newtranslation[to=French]{page-of-pages}
{page~\thepage\ sur~\zpageref{LastPage}}
\newtranslation[to=English]{page-of-pages}
{page~\thepage\ of~\zpageref{LastPage}}
\begin{document}
\selectlanguage{ngerman}
\translate{page-of-pages}
\selectlanguage{french}
\translate{page-of-pages}
\selectlanguage{english}
\translate{page-of-pages}
\newpage
\selectlanguage{ngerman}
\translate{page-of-pages}
\selectlanguage{french}
\translate{page-of-pages}
\selectlanguage{english}
\translate{page-of-pages}
\end{document}