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. – barbara beeton May 8 '14 at 14:21beamer
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 – Ignasi May 8 '14 at 14:28