The translations
package was developed for exactly this purpose. In the package translations are provided for keywords for each language with
\DeclareTranslation{<language>}{<keyword>}{<translation>}
One should probably also add
\DeclareTranslationFallback{<keyword>}{<translation>}
which is used if a babel
language is chosen for which no translation is provided.
Translations declared this way can be used with
\GetTranslation{<keyword>}
This command is expandable so that it also works in section titles that are used as hyperref
bookmarks, for example.
Here is a short example package:
\documentclass{article}
\usepackage[english,dutch]{babel}
\usepackage{filecontents}
\begin{filecontents}{mypackage.sty}
\ProvidesPackage{mypackage}
\RequirePackage{translations}
% a command that's translated according to the provided translations:
\newcommand*\mypackagetitle{\section*{\GetTranslation{mypackage-title}}}
% the translations:
% the fallback is used for languages where no specific translation is provided
\DeclareTranslationFallback {mypackage-title}{My title}
\DeclareTranslation{English}{mypackage-title}{My title}
\DeclareTranslation{Dutch} {mypackage-title}{Mijn titel}
\end{filecontents}
\usepackage{mypackage}
\begin{document}
\mypackagetitle
\edef\foo{\GetTranslation{mypackage-title}}
\show\foo
% > \foo=macro:
% ->Mijn titel.
% l.27 \show\foo
\selectlanguage{english}
\mypackagetitle
\edef\foo{\GetTranslation{mypackage-title}}
\show\foo
% > \foo=macro:
% ->My title.
% l.37 \show\foo
\end{document}

gentle.tex
, included in a full tex live distribution) contains an\if...
facility to choose canadian or u.s. spelling from choices included within the file. might get some ideas there.beamer
also introducedtranslator.sty
package which can be used for such things. Some examples here: tex.stackexchange.com/a/38400/1952, tex.stackexchange.com/a/62205/1952