Нужно перевести контент XML-файла с помощью Google Переводчик API - PullRequest
1 голос
/ 01 декабря 2011

Мне нужно знать, как использовать Google translate languages ​​API для перевода содержимого файла XML с английского языка на другой язык с использованием PHP. Данные в файле XML показаны следующим образом:

<log>
    <titles>
        <logfile>Log File</logfile>
        <clearlog>Clear Log File</clearlog>
    </titles>
</log>  

Так что мне нужно передать файл в Google API и вернуть новые данные между тегами на другом определенном языке, например на арабском:

<log>
    <titles>
        <logfile>ملف اللوج</logfile>
        <clearlog>مسح محتويات الملف</clearlog>
    </titles>
</log>  

Я надеюсь, что это будет ясно ..

Спасибо

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

Вы можете использовать GTranslate, который является оберткой для Google Translate API, чтобы упростить вашу работу.Вот пример кода:

require_once ("include/GTranslate.php");

// original input xml
$orig_xml = "YOUR XML HERE";

// translate
$gt = new Gtranslate; // google translate object
$orig_text = array(); // original text
$trans_text = array(); // translated text

// extract text between tags
$split_tags_pattern = '|<[^>]+>([^<>]+)<\/[^>]+>|';
$tags = array();

preg_match_all($split_tags_pattern, $orig_xml, $tags, PREG_SET_ORDER);
/*
* preg_match_all returns:
*
* array() {
*   array () {
*       <xml tag>text</xml>,
*       text
*   },
*   ...
* }
*/

// translate each tag's inner text
foreach ($tags as $tag) {
    $text = trim($tag[1]);
    if ($text != '') {
        $orig_text[] = trim($tag[0]);
        $trans_text[] = str_replace($text, $gt->en_to_ar($text), $tag[0]); // en_to_ar method is used to translate from english to arabic.
    }
}

// replace original tag's inner text with translated ones
$trans_xml = str_replace($orig_text, $trans_text, $orig_xml);

обратите внимание, что Google ограничивает запросы API в день для каждого IP, поэтому для большого XML с большим количеством тегов это может не сработать, либо вы можете передать весь XML (с тегами) в Google Translate (в этом тоже есть ограничение в 100000 символов, но этого будет достаточно для многих вещей), а затем извлекают переведенные внутренние тексты из результата перевода.

0 голосов
/ 20 июня 2019

mkTranslation может переводить файлы .txt, .string и .xml на несколько языков.

Установка: $pip install mkTranslation

Использование:

$translate -p  ./ios.strings  -d 'en'  # translation file
$translate -p ./android.xml -d 'ja'  # translation file
$translate  'mkTranslate supports multilingual translations' -d 'pt'   # translation text

демо:

from  
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <!-- tab -->
    <string name="network_error">网络不可用,点击屏幕重试</string>
    <string name="scan_qr_code_warn">将二维码放入框内,即可自动扫描</string>
    <string name="album_text">相册</string>
</resources>
to  
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <!-- tab -->
    <string name="network_error">Network is not available, click screen to try again</string>
    <string name="scan_qr_code_warn">Put the QR code into the box and you can scan it automatically.</string>
    <string name="album_text">Album</string>
</resources>

Перевод по умолчанию - перевод Google, вы можете указать другие каналы перевода

Код: https://github.com/mythkiven/mkTranslate

...