Categories
Ensure your captions are readable by controlling the words per minute.
Requires Crowdin account
var maxWPM = 160; // Define the maximum allowed WPM
var result = {
success: false
};
function getTimeDifference(timeString) {
var timePattern = /(\d{2}):(\d{2}):(\d{2}),(\d{3})/g;
var matches = timeString.match(timePattern);
if (matches.length !== 2) {
result.message = "Invalid time string format";
return result;
}
function parseTime(time) {
var parts = time.match(/(\d{2}):(\d{2}):(\d{2}),(\d{3})/).slice(1);
return (
parseInt(parts[0]) * 3600000 +
parseInt(parts[1]) * 60000 +
parseInt(parts[2]) * 1000 +
parseInt(parts[3])
);
}
var startTime = parseTime(matches[0]);
var endTime = parseTime(matches[1]);
return endTime - startTime;
}
function countWords(text) {
var words = text.trim().split(/\s+/);
return words.length;
}
if (crowdin.contentType === 'text/plain' && crowdin.context.context) {
var timeDifference = getTimeDifference(crowdin.context.context);
if (timeDifference === null) {
return result;
}
var translation = crowdin.translation;
var wordCount = countWords(translation);
var timeInMinutes = timeDifference / 60000; // Convert milliseconds to minutes
var wpm = wordCount / timeInMinutes;
if (wpm > maxWPM) {
result.message = 'The WPM (Words Per Minute) is too high: ' + wpm.toFixed(2) + ' (max allowed is ' + maxWPM + ')';
result.fixes = [];
} else {
result.success = true;
}
} else {
result.message = 'Invalid content type or missing context';
result.fixes = [];
}
return result;