code: func MakeLang(s string, lang string) (slug string) {
  	slug = strings.TrimSpace(s)
  
  	// Custom substitutions
  	// Always substitute runes first
  	slug = SubstituteRune(slug, CustomRuneSub)
  	slug = Substitute(slug, CustomSub)
  
  	// Process string with selected substitution language
  	switch lang {
  	case "de":
  		slug = SubstituteRune(slug, deSub)
  	case "en":
  		slug = SubstituteRune(slug, enSub)
  	case "es":
  		slug = SubstituteRune(slug, esSub)
  	case "fi":
  		slug = SubstituteRune(slug, fiSub)
  	case "gr":
  		slug = SubstituteRune(slug, grSub)
  	case "nl":
  		slug = SubstituteRune(slug, nlSub)
  	case "pl":
  		slug = SubstituteRune(slug, plSub)
  	case "tr":
  		slug = SubstituteRune(slug, trSub)
  	default: // fallback to "en" if lang not found
  		slug = SubstituteRune(slug, enSub)
  	}
  
  	// Process all non ASCII symbols
  	slug = unidecode.Unidecode(slug)
  
  	slug = strings.ToLower(slug)
  
  	// Process all remaining symbols
  	slug = regexpNonAuthorizedChars.ReplaceAllString(slug, "-")
  	slug = regexpMultipleDashes.ReplaceAllString(slug, "-")
  	slug = strings.Trim(slug, "-_")
  
  	if MaxLength > 0 {
  		slug = smartTruncate(slug)
  	}
  
  	return slug
  }
docs: // MakeLang returns slug generated from provided string and will use provided
  // language for chars substitution.