|
| Дата |
|
USD/RUB | 88.6852 | BTC/USD | 68398.7833 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
03.05.2015, 13:22
|
#1
|
Шучу на половину
Регистрация: 23.01.2011
Сообщений: 5,840
Бабло: $1168470
|
Перевод текста в php файлах
куча скриптов, весь ру текст в коде скриптов вперемешку с html
надо сделать мультиязычность
как быстро, этот текст заменить на переменные и экспортировать в отдельный файл для последующего перевода текста в переменных
|
|
|
03.05.2015, 13:45
|
#2
|
Системный администратор
Регистрация: 02.03.2015
Адрес: Земля
Сообщений: 23
Бабло: $4665
|
Это не быстро, все надо переписать. Срок зависит от количества файлов и их размера. Но все сделать можно.
|
|
|
04.05.2015, 11:19
|
#3
|
Member
Регистрация: 22.04.2015
Сообщений: 99
Бабло: $15270
|
Можно попробовать пройтись парсером, который каким-нить preg_replace'ом повыхватывает русский текст и динамически нагенерит переменных. Думаю, гуру РНР смогут тебе помочь.
|
|
|
04.05.2015, 23:43
|
#4
|
Шучу на половину
Регистрация: 23.01.2011
Сообщений: 5,840
Бабло: $1168470
ТС -->
|
ТС
вот, может кому пригодится
код скорее всего придется адаптировать, да и руками пройтись, но время сэкономит
PHP код:
<?php set_time_limit(0); $dirname = "."; scan_dir($dirname); // Вызов рекурсивной функции ////////////////////////////////////////////////////////// // Рекурсивная функция - спускаемся вниз по каталогу ////////////////////////////////////////////////////////// function scan_dir($dirname) { // Открываем текущую директорию $dir = opendir($dirname); // Читаем в цикле директорию while (($file = readdir($dir)) !== false) { // Если файл обрабатываем его содержимое if($file != "." && $file != "..") { // Если имеем дело с файлом - производим в нём замену if(is_file($dirname."/".$file) && preg_match('/^php(\d+)?|pl|rb|py|cgi|inc$/i', pathinfo($dirname."/".$file, PATHINFO_EXTENSION))) { // Читаем содержимое файла $content = file_get_contents($dirname."/".$file); // Осуществляем замену $i=0; preg_match_all("#.*?['|\"|>]([а-яА-ЯёЁ\s]+)['|\"|<].*?#i",$content,$m); foreach($m[1] as $tr_str){ $tr_key=preg_replace('/[^а-яА-ЯёЁ ]/', '', $tr_str); $tr_key=preg_replace('/ +/', ' ', trim($tr_key)); if($tr_key){ $trans=gtranslate($tr_key,'ru','en'); $tr_key=$trans["sentences"][0]["trans"]; file_put_contents("lang.en.txt", "\$lang['".str_replace(".","",str_replace("/","_",$dirname))."-".str_replace(".","_",$file)."']['".strtolower(preg_replace('/ +/', '_', trim(preg_replace('/[^a-z ]/i', '', $tr_key))))."']='".trim($tr_key)."';\r\n", FILE_APPEND | LOCK_EX); file_put_contents("lang.ru.txt", "\$lang['".str_replace(".","",str_replace("/","_",$dirname))."-".str_replace(".","_",$file)."']['".strtolower(preg_replace('/ +/', '_', trim(preg_replace('/[^a-z ]/i', '', $tr_key))))."']='".trim($tr_str)."';\r\n", FILE_APPEND | LOCK_EX); $content=str_replace($m[0][$i],"/*\r\nlocalize - ".$m[0][$i]."\r\n*/\r\n".str_replace($tr_str,"'.\$lang['".str_replace(".","",str_replace("/","_",$dirname))."-".str_replace(".","_",$file)."']['".strtolower(preg_replace('/ +/', '_', trim(preg_replace('/[^a-z ]/i', '', $tr_key))))."'].'",$m[0][$i])."\r\n",$content); } $i++; } // Перезаписываем файл file_put_contents($dirname."/".$file,$content); } // Если перед нами директория, вызываем рекурсивно // функцию scan_dir if(is_dir($dirname."/".$file)) { //exit; scan_dir($dirname."/".$file); } } } // Закрываем директорию closedir($dir); } function gtranslate($str, $lang_from, $lang_to) { $str = mb_convert_encoding($str, 'UTF-8','windows-1251'); $query_data = array( 'client' => 'x', 'q' => $str, 'sl' => $lang_from, 'tl' => $lang_to ); $filename = 'http://translate.google.ru/translate_a/t'; $options = array( 'http' => array( 'user_agent' => 'Mozilla/5.0 (Windows NT 6.0; rv:26.0) Gecko/20100101 Firefox/26.0', 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => http_build_query($query_data) ) ); $context = stream_context_create($options); $response = file_get_contents($filename, false, $context); return json_decode($response, true); } ?>
|
|
|
|