Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Solve errors
  • Loading branch information
Diogo Fernandes committed Dec 2, 2017
commit d1ebd873c3959cf4902a124a7faceb74008be735
12 changes: 12 additions & 0 deletions .idea/apertium-html-tools.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

297 changes: 297 additions & 0 deletions .idea/workspace.xml

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion assets/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,8 @@ html[dir='rtl'] #srcLanguages {
opacity: 1 !important; /* sass-lint:disable-line no-important */
}

textarea#originalText, div#translatedText {
#originalText,
#translatedText {
resize: vertical;
}

Expand Down
20 changes: 13 additions & 7 deletions assets/js/localization.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,13 @@ var localizedLanguageCodes = {}, localizedLanguageNames = {};
populateAnalyzerList, analyzerData, generatorData, curSrcLang, curDstLang, restoreChoices, refreshLangList, onlyUnique */

var dynamicLocalizations = {
'Not_Available': 'Translation not yet available!',
'detected': 'detected',
'File_Too_Large': 'File is too large!',
'Format_Not_Supported': 'Format not supported!',
'Download_File': 'Download {{fileName}}',
'fallback': {
'Not_Available': 'Translation not yet available!',
'detected': 'detected',
'File_Too_Large': 'File is too large!',
'Format_Not_Supported': 'Format not supported!',
'Download_File': 'Download {{fileName}}'
},
'Suggest_Sentence': 'How would you suggest we translate {{targetWordCode}}?',
'Suggest_Title': 'Improve Apertium\'s translation',
'Suggest_Placeholder': 'New word'
Expand Down Expand Up @@ -170,8 +172,8 @@ function getLocale() {
}
},
error: function () {
console.error('Failed to determine locale, defaulting to eng');
locale = 'eng';
console.error('Failed to determine locale, defaulting to ' + config.DEFAULT_LOCALE);
locale = config.DEFAULT_LOCALE;
},
complete: function () {
ajaxComplete();
Expand Down Expand Up @@ -442,3 +444,7 @@ function getRecaptchaSrc(locale2) {
}
return newSrc;
}
/*:: export {iso639CodesInverse, iso639Codes, localizeInterface} */

/*:: import {persistChoices} from "./persistence.js" */
/*:: import {config} from "./config.js" */
246 changes: 66 additions & 180 deletions assets/js/translator.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,14 @@ var UPLOAD_FILE_SIZE_LIMIT = 32E6,
TRANSLATION_LIST_WIDTH = 650,
TRANSLATION_LIST_ROWS = 8,
TRANSLATION_LIST_COLUMNS = 4,
SUGGESTION_DESTROY_TIMEOUT = 3000;
SUGGESTION_DESTROY_TIMEOUT = 3000,
TRANSLATION_LISTS_BUFFER = 50;

var INSTANT_TRANSLATION_URL_DELAY = 500,
INSTANT_TRANSLATION_PUNCTUATION_DELAY = 1000,
INSTANT_TRANSLATION_DELAY = 3000;

var PUNCTUATION_KEY_CODES = [46, 33, 58, 63, 47, 45, 190, 171, 49]; // eslint-disable-line no-magic-numbers

/* exported getPairs */
/* global config, modeEnabled, synchronizeTextareaHeights, persistChoices, getLangByCode, sendEvent, onlyUnique, restoreChoices
Expand All @@ -24,16 +31,26 @@ var UPLOAD_FILE_SIZE_LIMIT = 32E6,
if(modeEnabled('translation')) {
$(document).ready(function () {
synchronizeTextareaHeights();
recaptchaRenderCallback = function () {
var recaptchaRenderCallback = function () {
grecaptcha.render('suggestRecaptcha', {
'sitekey': config.SUGGESTIONS.recaptcha_site_key
});
};

var locale2 = iso639Codes[$('.localeSelect').val()];
newSrc = getRecaptchaSrc(locale2);
var newSrc = getRecaptchaSrc(locale2);
$.getScript(newSrc);

$('#srcLanguages').on('click', '.languageName:not(.text-muted)', function () {
curSrcLang = $(this).attr('data-code');
handleNewCurrentLang(curSrcLang, recentSrcLangs, 'srcLang');

autoSelectDstLang();
});
function updatePairList() {
pairs = $('input#chainedTranslation').prop('checked') ? chainedPairs : originalPairs;
}

function setupTextTranslation() {
synchronizeTextareaHeights();

Expand Down Expand Up @@ -306,149 +323,6 @@ if(modeEnabled('translation')) {
persistChoices('translator', true);
});

$('input#chainedTranslation').change(function () {
updatePairList();
populateTranslationList();
persistChoices('translator');
});

var timer, lastPunct = false;
$('#originalText').on('keyup paste', function (event) {
if(lastPunct && (event.keyCode === SPACE_KEY_CODE || event.keyCode === ENTER_KEY_CODE)) {
// Don't override the short timeout for simple space-after-punctuation
return;
}

if(timer && $('#instantTranslation').prop('checked')) {
clearTimeout(timer);
}

var timeout;
if(PUNCTUATION_KEY_CODES.indexOf(event.keyCode) !== -1) {
timeout = INSTANT_TRANSLATION_PUNCTUATION_DELAY;
lastPunct = true;
}
else if(isURL($('#originalText').val())) {
timeout = INSTANT_TRANSLATION_URL_DELAY;
lastPunct = false;
}
else {
timeout = INSTANT_TRANSLATION_DELAY;
lastPunct = false;
}

timer = setTimeout(function () {
if($('#instantTranslation').prop('checked')) {
translate();
}
persistChoices('translator', true);
}, timeout);

synchronizeTextareaHeights();
});

$('#instantTranslation').change(function () {
persistChoices('translator');
});

$('#markUnknown').change(function () {
translate();
});

$('#originalText').on('input propertychange', function () {
persistChoices('translator');
});

$('#originalText').submit(function () {
translateText();
});

$('.clearButton').click(function () {
$('#originalText, #translatedText').val('');
$('#originalText').focus();
synchronizeTextareaHeights();
});

$('#detect').click(function () {
$('.srcLang').removeClass('active');
$(this).addClass('active');
detectLanguage();
translateText();
});

$('.swapLangBtn').click(function () {
var srcCode = $('.srcLang.active').attr('data-code'), dstCode = $('.dstLang.active').attr('data-code');
curSrcLang = dstCode;
curDstLang = srcCode;

if(recentSrcLangs.indexOf(curSrcLang) !== -1) {
$('.srcLang').removeClass('active');
$('#srcLang' + (recentSrcLangs.indexOf(curSrcLang) + 1)).addClass('active');
$('#srcLangSelect').val(curSrcLang);
}
else {
recentSrcLangs[recentSrcLangs.indexOf(srcCode)] = curSrcLang;
}

if(recentDstLangs.indexOf(curDstLang) !== -1) {
$('.dstLang').removeClass('active');
$('#dstLang' + (recentDstLangs.indexOf(curDstLang) + 1)).addClass('active');
$('#dstLangSelect').val(curDstLang);
}
else {
recentDstLangs[recentDstLangs.indexOf(dstCode)] = curDstLang;
}

refreshLangList(true);
muteLanguages();

if($('.active > #detectedText')) {
$('.srcLang').removeClass('active');
$('#srcLang' + (recentSrcLangs.indexOf(curSrcLang) + 1)).addClass('active');
}
});

$('#srcLangSelect').change(function () {
var selectValue = $(this).val();
if(selectValue === 'detect') {
detectLanguage();
translateText();
}
else {
handleNewCurrentLang(curSrcLang = $(this).val(), recentSrcLangs, 'srcLang', true);
}
});

$('#dstLangSelect').change(function () {
handleNewCurrentLang(curDstLang = $(this).val(), recentDstLangs, 'dstLang', true);
});

$('button#translateDoc').click(function () {
$('div#translateText').fadeOut('fast', function () {
$('#fileInput').show();
$('div#fileName').hide();
$('div#docTranslation').fadeIn('fast');
});
});

$('button#cancelDocTranslate').click(function () {
droppedFile = undefined;
$('div#docTranslation').fadeOut('fast', function () {
$('a#fileDownload').hide();
$('span#uploadError').hide();
$('div#translateText').fadeIn('fast');
$('input#fileInput').wrap('<form>').closest('form')[0].reset();
$('input#fileInput').unwrap();
});
});

$('input#fileInput').change(function () {
$('div#fileUploadProgress').parent().fadeOut('fast', function () {
$('span#uploadError').fadeOut('fast');
});
$('a#fileDownload').fadeOut('fast');
});

$('#translatedText').css('height', $('#originalText').css('height'));
$('#suggestCloseBtn').click(function () {
$('#suggestedWordInput').val('');
Expand Down Expand Up @@ -532,43 +406,55 @@ if(modeEnabled('translation')) {
ev.preventDefault();
return false;
});
$('body').on('dragenter', function (ev) {
ev.preventDefault();
if(!$('div#fileDropBackdrop:visible').length) {
$('div#fileDropBackdrop').fadeTo('fast', 0.5);
$('div#fileDropMask').on('drop', function (ev) {
ev.preventDefault();
droppedFile = ev.originalEvent.dataTransfer.files[0];
$('input#chainedTranslation').change(function () {
updatePairList();
populateTranslationList();
persistChoices('translator');
});

$('#fileDropBackdrop').fadeOut();
if(!$('div#docTranslation').is(':visible')) {
$('div#translateText').fadeOut('fast', function () {
$('input#fileInput').hide();
$('div#docTranslation').fadeIn('fast');
var timer, lastPunct = false;
$('#originalText').on('keyup paste', function (event) {
if(lastPunct && (event.keyCode === SPACE_KEY_CODE || event.keyCode === ENTER_KEY_CODE)) {
// Don't override the short timeout for simple space-after-punctuation
return;
}

if(droppedFile) {
$('div#fileName').show().text(droppedFile.name);
translateDoc();
}
});
}
else {
$('input#fileInput').fadeOut('fast', function () {
if(droppedFile) {
$('div#fileName').show().text(droppedFile.name);
translateDoc();
}
});
}
if(timer && $('#instantTranslation').prop('checked')) {
clearTimeout(timer);
}

return false;
});
$('div#fileDropMask').on('dragleave', function () {
$('div#fileDropBackdrop').fadeOut();
});
var timeout;
if(PUNCTUATION_KEY_CODES.indexOf(event.keyCode) !== -1) {
timeout = INSTANT_TRANSLATION_PUNCTUATION_DELAY;
lastPunct = true;
}
return false;
else if(isURL($('#originalText').val())) {
timeout = INSTANT_TRANSLATION_URL_DELAY;
lastPunct = false;
}
else {
timeout = INSTANT_TRANSLATION_DELAY;
lastPunct = false;
}

timer = setTimeout(function () {
if($('#instantTranslation').prop('checked')) {
translate();
}
persistChoices('translator', true);
}, timeout);

synchronizeTextareaHeights();
});

$('#instantTranslation').change(function () {
persistChoices('translator');
});

setupLanguageSelectors();
setupTextTranslation();
setupWebpageTranslation();
setupDocTranslation();
});
}

Expand Down Expand Up @@ -898,7 +784,7 @@ function translateText(ignoreIfEmpty) {
error: translationNotAvailable,
complete: function () {
ajaxComplete();
textTranslateRequest = undefined;
translateRequest = undefined;
},
data: {
'langpair': curSrcLang + '|' + curDstLang,
Expand Down Expand Up @@ -957,7 +843,7 @@ function translateText(ignoreIfEmpty) {
}
},
error: translationNotAvailable
});
}, endpoint);
}
else {
translationNotAvailable();
Expand Down
Loading
You are viewing a condensed version of this merge commit. You can view the full changes here.