Jump to content

Търся специален скрипт


Препоръчан пост

Трябва ми готов скрипт на РНР който с 2 думи да прави това което прави Subtitle Workshop , но да е онлайн .Идеята е да се правят субтитри онлайн. Нещо подобно между чат и форум.

Примерно страницата е разделена на 4 части.

 

http://img244.imageshack.us/img244/364/subsmp1.png

 

Горе вляво - субтитрите в оригинален вид, които са преведени

Горе вдясно - преведените до до момента субтитри

Долу вляво - поредната фраза за превод, заедно с оставащите

Долу вдясно - Полето в което се превежда.

 

Не знам дали го обясних добре и дали някой има идея. Все още няма такова нещо никъде, единствено се опитват едни словенци да го направят.

Понеже е доста специфично, приемам каквато и да е идея, колкото и налудничава да е. А ако някой иска да се включи в проекта - моля.

:bye1:

Link to comment
Сподели другаде

Така както е разделено (в ляво оригинала, в дясно превода) май няма да е много удачно, понеже няма как да се знае колко място да се отдели за лявата част. Ако се отдели прекалено малко няма да е удобно, а ако е прекалено много няма да се вижда добре на ниски резолюции и по-големи части от дясната част няма да се виждат, ако не и цялата. Удобно ли ще е ако оригинала е отгоре, а под него е превода? Вероятно ще трябва да има и възможност за корекции по превода... А крайният резултат като файл ли да е достъпен или който превежда ще си го копира от страницата? Мисля да пробвам да го реализирам, само да доуточним идеята...
Link to comment
Сподели другаде

Общо взето не е от голямо значение дали ще е отгоре или отдолу оригиналния текст. Идеята е да се качи целия оригинален с тайминга. Тайминга съм го виждал в Бета версия на подобно нещо, че излиза до бутона Submit. Това ще рече, че е от оригинала и този който превежда няма да се занимава с тайминг, ами само ще превежда. Корекции естествено трябва да може да се правят, но това трябва да става само от оторизираните за това потребители (по - точно преводачи). Крайният резултат, кота всичко е готово естествено ще трябва да е примерно .str файл, но дали това ще става автоматично или ще се прави по някакъв начин - нямам идея, все едно е.

Аз започнах да мисля над това как да преправя този чат. Това защото идеята е да бъда нащо средно между чат и форум. Чат защото трябва да се качват реплика по реплика, а форум защото не трябва да се само изтрива преведеното след Х време както става по чатовете. (това разбира се е най - малкия проблем да се направи)

Това е . Имам още идеи как може да се получи това , но нека ги премисля пак.

Не вярвах, че някой ще се включи с идеи вече. :OK:

Link to comment
Сподели другаде

Нещо не зацепвам какво общо ще има този сайт-преводач с чат и/или форум. оО Аз си го представям така - влизаш в сайта, задаваш url към файл със субтитрите или ъплоадваш файла (ще видим кое от двете ще е в последствие) и файла се показва в горната част. Под текста на субтитрите има празно място (където ще се появява вече преведеният текст), а под това празно място има текст (реда до който е достигнато да се превежда), едно текстово поле и един бутон. Като се натисне бутона, въведеното в текстовото поле се запазва в нов файл и се минава на следващия ред. Евентуално като го доизгладя това (щото в момента има някой, друг проблем :}) ще може и да се върнеш на предния ред, тоест ако си объркал нещо. За това ли става дума или съм в грешка?

 

Edit:

Ето всъщност как си го представям нагледно. Файлът който се ползва е само 7 реда с цел да може да се пробва лесно какво става накрая - като се достигне края на файла се предоставя линк до преведения файл. Може би има разни бъгове, но това направих за сега. Лошото е че в този му вид тайминга трябва да се въвежда ръчно от превеждащия. Може да пробвам да направя функция която извлича тайминга и го добавя автоматично, но ще трябва да кажеш в какъв точно вид е тайминга. За друго не се сещам за сега. Очаквам коментари.

Редактиран от Златинов
Link to comment
Сподели другаде

Ами то може и така както го виждам, но не забелязвам къде е оригиналния текст. По принцип според мен трябва да е максимално улеснен преводача, защото много често ще е такъв който знае съответния език , но не и толкова да разбира от настройки на тайминг. Тоест да се въвежда тайминга ръчно с всяка фраза ще е голяма загуба на време и неудобство. Мисля , че най - удачно е формата на субтитрите да е .srt .

Мисля си , че ако тайменга се въвежда автоматично, но е коригируем за зсяка фраза ще е супер защото понякога не е съвсем нагласен и при оригиналните. Има механизми да се засече това и от човек който е разбира съвсем от това.

Казах чат и форум съвсем ориентировъчно защото в крайна сметка исках да оприлича на нещо това което ще правим. Това е едно добро начало според мен. :)

Link to comment
Сподели другаде

Оригиналните субтитри се намират в най-горното поле. В случая са на български, понеже нямам на английски. :) Довечера ще си поиграя с възможността автоматично да се добавя тайминга. По колко начина може да се записва тайминга в субтитрите? Понеже в картинката която си пуснал са по един начин, а в тези който ползвам е нещо от сорта на {1540}{1700}{y:i}. Кои са всички възможности за запис на тайминга, за да знам какво ще трябва да отделям?
Link to comment
Сподели другаде

3
00:00:39,820 --> 00:00:42,120
МОБИЛНА ВРЪЗКА

4
00:01:22,700 --> 00:01:25,000
Мамо ще продължаваш
ли да си учителка?

Това са .srt

Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:02:14.20,0:02:17.50,Default,NTP,0000,0000,0000,!Effect,S-Trans Entertainment Present\NF R A N K E N F I S H
Dialogue: Marked=0,0:02:18.20,0:02:19.60,Default,NTP,0000,0000,0000,!Effect,Какво по дя....

.ssa което не върши работа в случая.

{1}{1}29.970
{929}{1247}Прeвод и субтитри: Brujula Pantockrator|http:/videohelp. bgfree. com
{1703}{1792}БРИГАДА 49
{2117}{2204}Бързо, бързо!
{5898}{5988}Джак! Джак!

Става, но не е по нагледно от .srt. В повечето случаи се използва първият вариант, като всички плеъри които чатат AVI отварят въпросният формат. Също тока става пределно ясно в кой момент се отварят и в кой скриват самите фразил.

Link to comment
Сподели другаде

  • 2 weeks later...

Правих каквото правих, но се сблъсках със странен проблем... или по-точно той се сблъска с мен, защото всъщност не знам къде е проблема. Пускам целия код на направеното досега с идеята да кажете къде е проблема или някой да се заеме с идеята до където съм стигнал и да я продължи.

 

Няколко думи за начина на работа на сайта, който се опитвам да използвам - в началото е index.php в който се задават опциите, а именно файла със субтитрите и дали автоматично да се добавя тайминга. След като те са въведени отиваме на subs.htm, която включва три frame-a - първият за визуализиране съдържанието на оригиналния файл със субтитрите, вторият за файла с вече преведените субтитри и третият с реда до който е стигнато за превеждане, текстово поле за превода и submit бутон. Основният е файла във третия frame - той следи до кой ред е достигнато, рефрешва другите два frame-a и изобразява формата в която се прави превода. Проблема ми е там че според образеца за .srt има редове които нямат нужда от превод и могат директно да се записват в преведения файл, само че препращането към същия файл (с php кода за "превод") не работи по неизвестни ми причини. Пробвах с javascript и с header("Location: "); но резултата беше един и същ - нулев и то без да има някакво съобщение за грешка. Понеже въпросното препращане се намира в if си мислех че може условието в if-a да не е true, но като проверих се оказа че if-а си минава нормално, а препращането просто не работи. Ето го и кода на всички страници:

 

//index.php

<?php
session_start();
$_SESSION=array();

if(isset($_POST['get'])) {
$_SESSION['file']=$_POST['file'];
$_SESSION['taiming']=$_POST['taiming'];
echo "<script type=text/javascript>window.open('subs.htm','_self')</script>";
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<form method='POST' action='index.php'>
<input type='text' name='file' value='Файл'>
<br>
<input type='checkbox' name='taiming' value='taiming'>
Автоматично добавяне на тайминга.
<br>
<button type='submit' name='get' style='style='border:0px;background:white;'>Влез</button>
</form>

 

//subs.htm

<html>
<head>
<title>subs</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<frameset rows="224,*" cols="*" framespacing="0" frameborder="NO" border="0">
 <frame src="read_file.php" name="topFrame1" scrolling="YES" noresize >
 <frameset rows="272,*" cols="*" framespacing="0" frameborder="NO" border="0">
<frame src="file_translated.php" name="topFrame" scrolling="YES" noresize >
<frame src="translate.php" name="mainFrame">
 </frameset>
</frameset>
<noframes><body>

</body></noframes>
</html>

 

//read_file.php

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<?php
if (isset($_GET['red'])) $red=$_GET['red'];
else $red=1;

$file = "Dead_End.srt";
// Отваряне на файла data1.dat

$fo = @fopen($file, "r")
or die ("Не може да се намери файла!");

// Намиране размера на файла - data1.dat
$file_length = filesize($file);

$lines=0;

echo "<hr>";
while (!(feof($fo)))
{
$tr = fgets($fo, $file_length);
$lines++;
echo ($lines==$red) ? '<font color=red><Ред: '. $lines .'> </font>' : '<Ред: '. $lines .'> ';
echo $tr;
echo "<br>";
}
echo "<hr>";
?>

</body>
</html>

 

//file_traslated.php

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<?php
function file_delete($file)
{ 
	   chmod($file, 0777); 
	   if(unlink($file))
	   { 
		   return true; 
	   }else{ 
			 return false; 
		 } 
} 
die();
$red=$_SESSION['red'];
$red++;
$file = $_SESSION['file']; 

$file="BG_" . $file;

if (!isset($_GET['red']) && file_exists($file)) file_delete($file);

$fo = @fopen($file, "r");
if (!file_exists($file)) { $fo = @fopen($file, "w"); die; }

$file_length = filesize($file);

$lines=0;
echo "<hr>";
while (!(feof($fo)))
{
$tr = fgets($fo, $file_length);
$lines++;
echo ($lines==$red) ? '<font color=red><Ред: '. $lines .'> </font>' : '<Ред: '. $lines .'> ';
echo $tr;
echo "<br>";
}
echo "<hr>";
?>
</body>
</html>

 

//translate.php

(Тук, след реда "if ($lines==$red) {" идват проблемите.)

<?php
include 'session.inc';

function reload_page() 
{
header("Location: translate.php?file=$file&red=$red&prevedeno=$tr&add=prevedi");
}

if (isset($_SESSION['red'])) $red=$_SESSION['red'];
else { $red=1; $_SESSION['red'] = $red; }

$file="Dead_End.srt";
$_SESSION['file'] = $file; 
$taiming=$_SESSION['taiming'];

if (isset($_GET['add'])) {
$prevedeno = $_GET['prevedeno']; 

$bgfile="BG_" . $file;

$fp = @fopen("$bgfile","a+")
or die ("Не може да се отвори файла");


$result = @fwrite($fp, $prevedeno)
or die ("Въведете превода и след това натиснете \"Преведи\". <a href=translate.php target=\"mainFrame\">Назад</a>");

$red++;
$_SESSION['red']=$red;
echo "
<script type='text/javascript'>
window.open('read_file.php?red=$red','topFrame1')
window.open('file_translated.php?red=$red','topFrame')
</script>
";

fclose($fp);
}

$fo = @fopen($file, "r")
or die ("Не може да се намери файла!");

$file_length = filesize($file);
$lines=0;


while (!(feof($fo)))
{
$tr = fgets($fo, $file_length);
$lines++;

if ($lines==$red) {
//proverka dali teksta e samo taiming; ako da - avtomatichno zapisvane
if (ereg("[0-9]:[0-9]", $tr)) {
if ($taiming) { 
reload_page;
//<script type='text/javascript'>
//window.open('translate.php?file=$file&red=$red&prevedeno=$tr&add=prevedi', 'mainFrame')
//</script>
echo "taiming";
break;
}
}
//proverka dali teksta e samo nomer na reda; ako da - avtomatichno zapisvane 
if (ereg("([0-9])",$tr)) {
reload_page;
echo "okazan red";
break;
}

//proverka dali teksta e prazen; ako da - avtomatichno zapisvane
if (!$tr) {
reload_page;
echo "prazen red";
break;
}

echo "<font color=red><Ред: $lines></font> ";
echo $tr;
echo "
<form method='get' action='translate.php'>
<input type='hidden' name='file' value=$file>
<input type='hidden' name='red' value=$red>
<textarea name='prevedeno' rows='1' cols='100' wrap>$tr</textarea>
<br>
<button type='submit' name='add' value='Преведи' style='border:0px;background:white;'>Преведи</button>
</form>
";
}
}
if (($lines+1)==$red) echo "<br>Достигнат е края на файла. Преведения файл можете да изтеглите от <a href=http://$_SERVER[SERVER_NAME]/subs/BG_$file>тук</a>.";
echo '
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
';
?>
</body>
</html>

 

//session.inc

<?php
if (!isset($_SESSION['id']) || !$_SESSION['id']) {
ini_set('session.use.cookies',1);
ini_set('session.use_only_cookies',1);
session_start();
}
?>

 

Стила ми на писане на кода може би подлежи на критика, но така си пиша... Не се чудете на странни echo-та, ползвал съм ги за един вид дебъгване. :) $fail го задавам ръчно, понеже ползвах един и същ файл за пробите и нямаше смисъл да го въвеждам ръчно всеки път, а и не съм направил полето в което се задава файла да работи. Ако някой се интересува от проекта и има някакви въпроси нека пише.

Link to comment
Сподели другаде

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...
×
×
  • Създай ново...