MktoForms2 :: Google Translate API

by sanford

HTML

<script src="//app-sj01.marketo.com/js/forms2/js/forms2.min.js"></script>
<form id="mktoForm_298"></form>

JavaScript

MktoForms2.loadForm("//app-sj01.marketo.com", "410-XOR-673", 298)
MktoForms2.whenReady(function(form) {

		var formEl = form.getFormElem()[0],
            commentsField = 'Comments__c',
            googleTranslateAPIBase = 'https://www.googleapis.com/language/translate/v2',
            googleTranslateSource = 'en',
            googleTranslateTarget = 'de',
            googleTranslateAPIKey = 'AIzaSyC9vOmwqqRq-UfunFilWcYqIf1fTPg0rik',
            validationComplete = false;
    
        // Sandy's demo email
        form.setValues({Email:'[email protected]'});                                 
        formEl.querySelector('#Email').readOnly = true;
    
        form.onValidate(function(valid) {

            form.submittable(validationComplete); // reenable on cb

            if (valid && !form.submittable()) {
                
                var originalValues = form.getValues(),
                    originalComments = originalValues[commentsField],
                    translatedValues = {};
                
                simpleJSONP( googleTranslateAPIBase + '?'
                             + '&source=' + googleTranslateSource
                             + '&target=' + googleTranslateTarget
                             + '&key=' + googleTranslateAPIKey
                             + '&q=' + encodeURIComponent(originalComments),
                             window.translateComments = function translateComments(response) {
                                translatedValues[commentsField] = response.data.translations[0].translatedText;
                                form.setValues(translatedValues);
                                validationComplete = true;
                                form.submit();
                             });
            } else if (valid) {            
                form.submittable(false); // remove this line on your production site, but leave it in for the demo!
            }
		});
    
		function simpleJSONP(url,callback) 
   ...