Replacing strings within posts with the translatable string

Being part of the post content, the string can’t be translated using translation function. You probably need a multilanguage plugin like WPML or Multilingual Press.

In that way you’ll be able to have different “version” (one per language supported) of the same post.

However, if the only thing you need to translate is the word “Download” you can mind to create a shortcode and use it in the postcontent.

Example:

function my_download_btn_cb( $atts, $content = "" ) {
  $format="<a href="https://wordpress.stackexchange.com/questions/156832/%s"%s>%s</a>";
  $blank = isset( $atts['blank'] ) && $atts['blank'] ? ' target="_blank"' : '';
  $content = filter_var( $content, FILTER_SANITIZE_URL );
  return sprintf( $format, $content, $blank, __( 'Download', 'rkm' ) );
}

add_shortcode( 'download', 'my_download_btn_cb' );

Once you have this code in a plugin or in your functions.php, in your posts content you can use it like so:

[download]http://example.com/url/to/the/external/download[/download]

or if you want to open the download link in a new window:

[download blank="1"]http://example.com/url/to/the/external/download[/download]

In this way the word ‘Download’ will be shown translated in the link according to current language (if there is a translation for it in the related .mo file, of course)