API перевода Microsoft будет переводить, сохраняя теги HTML.
API задокументирован здесь . Он имеет интерфейс REST и WSDL.
Я склонен использовать интерфейс WSDL с PHP-библиотекой SoapClient. Вот код, который покажет вам, как его использовать.
$client = new SoapClient("http://api.microsofttranslator.com/V1/SOAP.svc");
$params = array(
'appId' => 'my_app_id',
'text' => '<p>This is a <b>test</b></p>',
'from' => 'en',
'to' => 'fr');
$translation = $client->translate($params);
var_dump($translation);
Вам необходимо зарегистрироваться в Microsoft, чтобы получить собственный идентификатор приложения, который вы передаете при каждом запросе. Вы можете зарегистрироваться здесь .
Я бы не советовал удалять теги, переводить, а затем повторно вставлять теги. Поскольку у вас нет гарантии того, что номер и порядок слов сохраняются при переводе, очень трудно узнать, где разместить теги в переведенном тексте. Лучше, чтобы двигатель MT обрабатывал теги.