mirror of https://github.com/avecms/AVE.cms.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.1 KiB
59 lines
2.1 KiB
7 years ago
|
<?php
|
||
|
abstract class Big_Text_Translate {
|
||
|
/**
|
||
|
* @var int - максимальное число символов для отправки переводчику
|
||
|
*/
|
||
|
public static $symbolLimit = 2000;
|
||
|
|
||
|
/**
|
||
|
* @var string- символы, по которым текст делится на предложения
|
||
|
*/
|
||
|
public static $sentensesDelimiter = '.';
|
||
|
|
||
|
/**
|
||
|
* @static
|
||
|
* @param $text - исходный текст для разбиения на предложения
|
||
|
* @return array - массив предложений, еще не окончательный
|
||
|
*/
|
||
|
protected static function toSentenses ($text) {
|
||
|
$sentArray = explode(self::$sentensesDelimiter, $text);
|
||
|
return $sentArray;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Разделение текста на массив больших кусков
|
||
|
* @param string $text - большой текстовый фрагмент, требующий разделения на куски
|
||
|
* @return array - массив элементов, каждый из которых не превышает предельного числа символов
|
||
|
*/
|
||
|
|
||
|
public static function toBigPieces ($text) {
|
||
|
$sentArray = self::toSentenses($text);
|
||
|
$i = 0;
|
||
|
$bigPiecesArray[0] = '';
|
||
|
for ($k = 0; $k < count($sentArray); $k++) {
|
||
|
$bigPiecesArray[$i] .= $sentArray[$k].self::$sentensesDelimiter;
|
||
|
if (strlen($bigPiecesArray[$i]) > self::$symbolLimit){
|
||
|
$i++;
|
||
|
$bigPiecesArray[$i] = '';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $bigPiecesArray;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Склеивание текста
|
||
|
* @param array $bigPiecesArray - массив переведенных кусков текста, в произвольном порядке,
|
||
|
* но ключи должна соответствовать исходному тексту
|
||
|
* @return string - "склеенный" текст
|
||
|
*/
|
||
|
public static function fromBigPieces (array $bigPiecesArray) {
|
||
|
|
||
|
ksort($bigPiecesArray);
|
||
|
|
||
|
return implode($bigPiecesArray);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|