<?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);
    }

}