Перевожу субтитры для одного мультсериала используя сервис translated.by. Для того чтобы субтитры оставались субтитрами, приходится вручную копировать номер субтитра и время, и лишь потом писать перевод. Уже на первой странице мне это надоело, поэтому написал скрипт, который берёт из оригинального параграфа номер субтитра и время, и вставляет это в textarea, в котором пишется перевод.
Остаётся только добавить сам перевод.
translationtable = document.getElementsByClassName('translation-table')[0]; tablerows = translationtable.getElementsByTagName('tr'); for (i = 0; i < tablerows.length; i++) { tdorig = tablerows[i].getElementsByClassName('td-orig-'); tdtrans = tablerows[i].getElementsByClassName('td-trans-'); originaltext = tdorig[0].getElementsByTagName('p')[0]; scriptnumber = originaltext.childNodes[0].textContent; scripttime = originaltext.childNodes[2].textContent; tdtrans[0].getElementsByTagName('textarea')[0].value = scriptnumber + '\n' + scripttime + '\n'; }
Добавил себе javascript-закладку: translated.by > для субтитров.
UPD
Теперь в функцию можно передавать, сколько первых строк копировать. Исправлено: когда в оригинальном параграфе строк было меньше, чем предполагалось копировать, скрипт останавливался с ошибкой.
function tby_orig2trans(strings) { translationtable = document.getElementsByClassName('translation-table')[0]; tablerows = translationtable.getElementsByTagName('tr'); for (i = 0; i < tablerows.length; i++) { tdorig = tablerows[i].getElementsByClassName('td-orig-'); tdtrans = tablerows[i].getElementsByClassName('td-trans-'); if (strings == undefined) strings = 0; tempstrings = strings; originaltext = tdorig[0].getElementsByTagName('p')[0]; copytext = ''; counter = 0; for (c = 0; c < tempstrings; c++) { if (originaltext.childNodes[counter]) { copytext += originaltext.childNodes[counter].textContent + '\n'; } else { break; } counter += 2; } tdtrans[0].getElementsByTagName('textarea')[0].value = copytext; } } tby_orig2trans(2);
Новая закладка: translated.by > для субтитров.