Categories
Mistakes in URLs in the translation according to QA check configuration
Requires Crowdin account
/**
 * Config section
 * Define the URL translation rules below
 * Language codes - https://support.crowdin.com/api/language-codes/
 */
var yourMainDomainUrl = 'crowdin.com';
var yourTargetDomainUrl;
switch (crowdin.targetLanguage) {
  case 'uk':
    yourTargetDomainUrl = 'crowdin.ua';
    break;
  case 'de':
    yourTargetDomainUrl = 'crowdin.de';
    break;
  case 'pl':
    yourTargetDomainUrl = 'crowdin.com.pl';
    break;
  case 'es':
    yourTargetDomainUrl = 'crowdin.es';
    break;
  default:
    yourTargetDomainUrl = yourMainDomainUrl;
    break
}
/**
 * Code section
 */
var result = {
  success: false
};
if (crowdin.contentType === 'application/vnd.crowdin.text+plural') {
  var obj = JSON.parse(crowdin.source);
  if (obj[crowdin.context.pluralForm] != null) {
    source = obj[crowdin.context.pluralForm]
  } else {
    source = obj.other
  }
} else {
  source = crowdin.source
}
var translation = crowdin.translation;
var patternForMainDomain, patternForTargetDomain;
patternForMainDomain = new RegExp('(?<=\\s|^)((https?):\/\/|(https?):\/\/www.)' + yourMainDomainUrl.replace('.', '\\.') + '(?=\\s|$|\\.\\s)', 'gm');
patternForTargetDomain = new RegExp('(?<=\\s|^)((https?):\/\/|(https?):\/\/www.)' + yourTargetDomainUrl.replace('.', '\\.') + '(?=\\s|$|\\.\\s)', 'gm');
var sourceMatch = source.match(patternForMainDomain);
var translationMatch = translation.match(patternForTargetDomain);
if (sourceMatch == null || translationMatch == null) {
  if (sourceMatch == null && translationMatch == null) {
    result.success = true
  } else if (sourceMatch == null && translationMatch != null) {
    result.message = 'There are ' + translationMatch.length + ' extra localized URL in translation.';
    result.fixes = []
  } else if (sourceMatch != null && translationMatch == null) {
    result.message = 'There are ' + sourceMatch.length + ' missed localized URL in translation.';
    result.fixes = []
  }
} else if (sourceMatch.length !== translationMatch.length) {
  if (sourceMatch.length <= translationMatch.length) {
    result.message = 'There are ' + (translationMatch.length - sourceMatch.length) + ' extra localized URL in translation.';
    result.fixes = []
  } else if (sourceMatch.length >= translationMatch.length) {
    result.message = 'There are ' + (sourceMatch.length - translationMatch.length) + ' missed localized URL in translation.';
    result.fixes = []
  }
} else if (sourceMatch.length === translationMatch.length) {
  result.success = true
}
return result;