How to use gettext for specific user role

Everything you have tried should have worked perfectly, I am not sure why is this not working,

I am modifying your code a little bit to check for post type, check if it can help you,

function rename_publish_button_to_review( $translation, $text ) {

    if( !current_user_can('administrator') && 'post' == get_post_type() )  {

        if( 'Publish' == $text ) {
            return "Submit for review";
        }
    }
    return $translation;
}
add_filter( 'gettext', 'rename_publish_button_to_review', 10, 2 );

Other wise try to see if this function working when no role specified.

WILL THIS WORK ?

function rename_publish_button_to_review( $translation, $text ) {

    if( 'Publish' == $text ) {
        return "Submit for review";
    }
    return $translation;
}

function wpse_53371_bulk_actions()
{
    if ( ! is_admin() )
        return;

    if ( ! current_user_can( 'administrator' ) )
    {
        add_filter( 'gettext', 'rename_publish_button_to_review', 10, 2 )
    }
}
add_action( 'wp_loaded', 'wpse_53371_bulk_actions' );