Автоматический перевод Messages Yii:t через Google Translate

Выкладываем свои наработки
Ответить
Аватара пользователя
Stepan Selyuk
Сообщения: 198
Зарегистрирован: 2010.02.03, 05:51
Откуда: Cyprus, Limassol
Контактная информация:

Автоматический перевод Messages Yii:t через Google Translate

Сообщение Stepan Selyuk »

Автоматический перевод Messages Yii:t через Google Translate.
Зачастую в таких сообщениях просто слово, либо словосочетание и простое предложение. Google Translate прекрасно справится с таким заданием, и сэкономит кучу времени переводчику (и денег вам!).

Выкладываю, как есть у меня. Оформлено в виде команды, которую можно запустить на локальной машине через cmd:

messagesTranslateCommand.cmd

Код: Выделить всё

color 4f
php ..console.php messagesTranslate withCopy
pause
Cам код приложен к посту.
Естественно, что предварительно сообщения уже должны лежать в /protected/messages/langname/.

Это можно сделать с помощью shell:

message_config.php

Код: Выделить всё

<?php

return array (
        'sourcePath' => './', 
        'messagePath' => './messages', 
        'languages' => array ('en', 'fr', 'it', 'uk'), 
        'fileTypes' => array ('php'), 
        //'exclude' => array (), 
        //'translator' => 'Yii:t'
);

?>
messages_translate.cmd

Код: Выделить всё

yiic.bat message message_config.php
У Command есть один параметр "withCopy" - если он передан, то переведенные сообщения будут скопированы в каталог с оригинальными файлами.
Программа запускает автоперевод, если значение ключа в файле пустое, заполненные не трогает.

В любом случае, даже если переведет некорректно, переводчику проще исправить, чем писать заново.
Гугл конечно запрещает использование авто-средств перевода, и хочет, чтобы любой запрос был инициирован конечным пользователем.

Я ввел обработку этих ситуаций. В среднем после 1500-2000 переведенных сообщений, придется поменять IP :)

В самом классе можно установить свойство $translateType
В коде $translateType=1 - отвечает за полный перевод, кроме ключей содержащих словоформы,
$translateType=2 - будет переводить только ключи с числом пробелов не больше 2.

По умолчанию исходный язык - это Yii::app()->sourceLanguage. Но можно указать свойство $forceSourceLang - вместо false поставить строку с языком.

Свойство $toLangs:

Код: Выделить всё

public $toLangs = array (
    // название каталога с сообщениями => язык гугла
    'en' => 'en', 
    'fr' => 'fr', 
    'it' => 'it', 
    'uk' => 'uk'
);
 
Я думаю с ним из кода все понятно. Бывает что код языка в гугле не совпадает с кодом языка Yii.

Свойство $translateDirName:

Код: Выделить всё

public $translateDirName = array (
    1 => '_auto_translate_full', 
    2 => '_auto_translate_max_three_words'
);
 
Это имена каталого в зависимости от типа перевода. Создаются автоматически в /protected/messages/langname/

Ну вроде все :) скачивайте сам файл и поиграйтесь )) файл нужно положить в /protected/commands
Вложения
files_message_translate.zip
В архиве приложены все описанные файлы, вам их нужно исправить для своих систем.
(5.54 КБ) 249 скачиваний
Сначала невидимое, затем видимое. И так у всех программистов :)
Аватара пользователя
alaevka
Сообщения: 77
Зарегистрирован: 2010.03.12, 11:34
Контактная информация:

Re: Автоматический перевод Messages Yii:t через Google Trans

Сообщение alaevka »

Судя по всему - отличная вещь..но у меня так и не получилось ее запустить..точнее запустил messages_translate.cmd, на экран вышло

Код: Выделить всё

Extracting messages from B:homevanillawwwprotectedcommandsmessagesTranslat
eCommand.php...
...... и т.д.
 
и все..больше ничего..в /protected/messages/ru/lang.php массив вида

Код: Выделить всё

<?php

return array (
    // Components
    'Application'=>'',
    'Error'=>'',
    );
 
Что не так и как надо?
Аватара пользователя
Stepan Selyuk
Сообщения: 198
Зарегистрирован: 2010.02.03, 05:51
Откуда: Cyprus, Limassol
Контактная информация:

Re: Автоматический перевод Messages Yii:t через Google Trans

Сообщение Stepan Selyuk »

Да, все верно. Нужно сначала сгенерировать файлы с сообщениями средствами Yii (через messages_translate.cmd, предварительно настроив config - в том же каталоге).
Далее уже нужно запуситить команду перевода из /test/ (в архиве каталог).
Сначала невидимое, затем видимое. И так у всех программистов :)
Аватара пользователя
Stepan Selyuk
Сообщения: 198
Зарегистрирован: 2010.02.03, 05:51
Откуда: Cyprus, Limassol
Контактная информация:

Re: Автоматический перевод Messages Yii:t через Google Trans

Сообщение Stepan Selyuk »

Я немного изменил код. Теперь когда указано withCopy программа после перевода копирует файл в оригинальный каталог и удаляет файл из подкаталога перевода (типа _messages_full_translate). Сделано для того, чтобы не было кеширования, если вы руками измените оригинальный файл перевода.
Вложения
messagesTranslateCommand.zip
Новый файл Command ( в каталог /protected/commands )
(3.81 КБ) 249 скачиваний
Сначала невидимое, затем видимое. И так у всех программистов :)
Ответить