timur-flush/phalcon-translate

The library is intended for convenient and rapid internationalization.

v1.1.1 2018-01-14 00:05 UTC

README

Данная библиотека предназначена для автоматического перевода текстов и интернационализации.

Как начать

Создание экземпляра класса.

$service = new \TimurFlush\Translate\Adapter\File([
    'cacheDir' => '/path/to/you/cachig/directory', #Директория для сохранения переводов (должны быть права 777)
    'current_language' => 'en', #Текущий язык
    'default_language' => 'ru', #Язык по-умолчанию
]);

Непосредственное использование

/**
 * Возвращает переведенный текст.
 * @param string $text Текст для перевода.
 * @param string|null $from Исходный язык.
 * @param array $placeholders Массив плейсхолдеров.
 * @param string|null $group Группа перевода.
 */
final public function _(string $text, string $from = null, array $placeholders = [], string $group = '')
#Пример 1.
echo $service->_('Какой-то текст', 'ru', []); //Some text.

#Пример 2.
echo $service->_('Привет, %name%.', 'ru', ['name' => 'Алексей'], ''); //Hello, Алексей.

Таким образом плейсхолдеры служат для того, чтобы в случае необходимости не переводить какие-либо участки текста, а заменять их на выражение переданное в массив после перевода.

Получение кэша переводов

/**
 * Функция возвращает кэш переводов в направлении $from -> $to.
 * @param string|null $from Исходный язык. 
 * @param string|null $to Конечный язык.
 * @param string|null $group Группа перевода.
 * @return array
 */
public function getCache(string $from = null, string $to = null, string $group = null) : array
#Пример 1
var_dump(
    $service->getCache('ru', 'en');
);
#array(
    '' => [
        'Какой-то текст' => 'Some text',
        'Привет, %name%.' => 'Hello, %name%.'
    ]
)

#Пример 2
var_dump(
    $service->getCache('ru', 'en', '');
);
#array(
    'Какой-то текст' => 'Some text',
    'Привет, %name%.' => 'Hello, %name%.'
)

Слияние кэша переводов

/**
 * Функция выполняет слияние кэша переводов с массивом $array.
 * @param string $from Исходный язык. 
 * @param string $to Конечный язык.
 * @param string $group Группа перевода.
 * @return void
 */
public function mergeCache(string $from = null, string $to = null, array $array, string $group = '') : array
#Пример 1.
echo $servce->_('Привет, %name%', 'ru', ['name' => 'Алексей']); //Hello, Алексей.
$service->mergeCache('ru', 'en', [
        'Привет, %name.' => 'Alloha, %name',
]);
echo $servce->_('Привет, %name%', 'ru', ['name' => 'Алексей']); //Alloha, Алексей.

#Пример 2.
echo $servce->_('Привет, %name%', 'ru', ['name' => 'Алексей'], 'system'); //Hello, Алексей.
$service->mergeCache('ru', 'en', [
        'Привет, %name.' => 'Alloha, %name',
], 'system');
echo $servce->_('Привет, %name%', 'ru', ['name' => 'Алексей'], 'system'); //Alloha, Алексей.