Getting translated string through a variable

I’m not completely sure whether this is what you want, but if the option page is in one language you can simply put the gettext call in the custom field itself to avoid using variables. For the admin you force the translation to spanish:

function wpse227983_force_language ( $locale ) {
    if ( is_admin() ) {
        return 'es_ES';
    }
    return $locale;
}
add_filter( 'locale', 'wpse227983_force_language' );

On the frontend the messages will then be translated in the normal way, supposing that you have a system in place that determines what the language of the page is. If the author sets a custom field for the language, you can use the above filter with a different if to force the translation.