forked from Elara6331/itd
		
	Add transliteration
This commit is contained in:
		
							
								
								
									
										441
									
								
								translit/translit.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										441
									
								
								translit/translit.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,441 @@
 | 
			
		||||
package translit
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Maps stores transliteration maps as slices to preserve order
 | 
			
		||||
var Maps = map[string][]string{
 | 
			
		||||
	"eASCII": {
 | 
			
		||||
		"œ", "oe",
 | 
			
		||||
		"ª", "a",
 | 
			
		||||
		"°", "o",
 | 
			
		||||
		"«", `"`,
 | 
			
		||||
		"»", `"`,
 | 
			
		||||
	},
 | 
			
		||||
	"Scandinavian": {
 | 
			
		||||
		"Æ", "Ae",
 | 
			
		||||
		"æ", "ae",
 | 
			
		||||
		"Ø", "Oe",
 | 
			
		||||
		"ø", "oe",
 | 
			
		||||
		"Å", "Aa",
 | 
			
		||||
		"å", "aa",
 | 
			
		||||
	},
 | 
			
		||||
	"German": {
 | 
			
		||||
		"ä", "ae",
 | 
			
		||||
		"ö", "oe",
 | 
			
		||||
		"ü", "ue",
 | 
			
		||||
		"Ä", "Ae",
 | 
			
		||||
		"Ö", "Oe",
 | 
			
		||||
		"Ü", "Üe",
 | 
			
		||||
		"ß", "ss",
 | 
			
		||||
		"ẞ", "SS",
 | 
			
		||||
	},
 | 
			
		||||
	"Hebrew": {
 | 
			
		||||
		"א", "a",
 | 
			
		||||
		"ב", "b",
 | 
			
		||||
		"ג", "g",
 | 
			
		||||
		"ד", "d",
 | 
			
		||||
		"ה", "h",
 | 
			
		||||
		"ו", "u",
 | 
			
		||||
		"ז", "z",
 | 
			
		||||
		"ח", "kh",
 | 
			
		||||
		"ט", "t",
 | 
			
		||||
		"י", "y",
 | 
			
		||||
		"כ", "c",
 | 
			
		||||
		"ל", "l",
 | 
			
		||||
		"מ", "m",
 | 
			
		||||
		"נ", "n",
 | 
			
		||||
		"ס", "s",
 | 
			
		||||
		"ע", "'",
 | 
			
		||||
		"פ", "p",
 | 
			
		||||
		"צ", "ts",
 | 
			
		||||
		"ק", "k",
 | 
			
		||||
		"ר", "r",
 | 
			
		||||
		"ש", "sh",
 | 
			
		||||
		"ת", "th",
 | 
			
		||||
		"ף", "f",
 | 
			
		||||
		"ץ", "ts",
 | 
			
		||||
		"ך", "ch",
 | 
			
		||||
		"ם", "m",
 | 
			
		||||
		"ן", "n",
 | 
			
		||||
	},
 | 
			
		||||
	"Greek": {
 | 
			
		||||
		"α", "a",
 | 
			
		||||
		"ά", "a",
 | 
			
		||||
		"β", "v",
 | 
			
		||||
		"γ", "g",
 | 
			
		||||
		"δ", "d",
 | 
			
		||||
		"ε", "e",
 | 
			
		||||
		"έ", "e",
 | 
			
		||||
		"ζ", "z",
 | 
			
		||||
		"η", "i",
 | 
			
		||||
		"ή", "i",
 | 
			
		||||
		"θ", "th",
 | 
			
		||||
		"ι", "i",
 | 
			
		||||
		"ί", "i",
 | 
			
		||||
		"ϊ", "i",
 | 
			
		||||
		"ΐ", "i",
 | 
			
		||||
		"κ", "k",
 | 
			
		||||
		"λ", "l",
 | 
			
		||||
		"μ", "m",
 | 
			
		||||
		"ν", "n",
 | 
			
		||||
		"ξ", "ks",
 | 
			
		||||
		"ο", "o",
 | 
			
		||||
		"ό", "o",
 | 
			
		||||
		"π", "p",
 | 
			
		||||
		"ρ", "r",
 | 
			
		||||
		"σ", "s",
 | 
			
		||||
		"ς", "s",
 | 
			
		||||
		"τ", "t",
 | 
			
		||||
		"υ", "y",
 | 
			
		||||
		"ύ", "y",
 | 
			
		||||
		"ϋ", "y",
 | 
			
		||||
		"ΰ", "y",
 | 
			
		||||
		"φ", "f",
 | 
			
		||||
		"χ", "ch",
 | 
			
		||||
		"ψ", "ps",
 | 
			
		||||
		"ω", "o",
 | 
			
		||||
		"ώ", "o",
 | 
			
		||||
		"Α", "A",
 | 
			
		||||
		"Ά", "A",
 | 
			
		||||
		"Β", "B",
 | 
			
		||||
		"Γ", "G",
 | 
			
		||||
		"Δ", "D",
 | 
			
		||||
		"Ε", "E",
 | 
			
		||||
		"Έ", "E",
 | 
			
		||||
		"Ζ", "Z",
 | 
			
		||||
		"Η", "I",
 | 
			
		||||
		"Ή", "I",
 | 
			
		||||
		"Θ", "TH",
 | 
			
		||||
		"Ι", "I",
 | 
			
		||||
		"Ί", "I",
 | 
			
		||||
		"Ϊ", "I",
 | 
			
		||||
		"Κ", "K",
 | 
			
		||||
		"Λ", "L",
 | 
			
		||||
		"Μ", "M",
 | 
			
		||||
		"Ν", "N",
 | 
			
		||||
		"Ξ", "KS",
 | 
			
		||||
		"Ο", "O",
 | 
			
		||||
		"Ό", "O",
 | 
			
		||||
		"Π", "P",
 | 
			
		||||
		"Ρ", "R",
 | 
			
		||||
		"Σ", "S",
 | 
			
		||||
		"Τ", "T",
 | 
			
		||||
		"Υ", "Y",
 | 
			
		||||
		"Ύ", "Y",
 | 
			
		||||
		"Ϋ", "Y",
 | 
			
		||||
		"Φ", "F",
 | 
			
		||||
		"Χ", "CH",
 | 
			
		||||
		"Ψ", "PS",
 | 
			
		||||
		"Ω", "O",
 | 
			
		||||
		"Ώ", "O",
 | 
			
		||||
	},
 | 
			
		||||
	"Russian": {
 | 
			
		||||
		"Ё", "Йo",
 | 
			
		||||
		"ё", "йo",
 | 
			
		||||
	},
 | 
			
		||||
	"Ukranian": {
 | 
			
		||||
		"ґ", "gh",
 | 
			
		||||
		"є", "je",
 | 
			
		||||
		"і", "i",
 | 
			
		||||
		"ї", "ji",
 | 
			
		||||
		"Ґ", "GH",
 | 
			
		||||
		"Є", "JE",
 | 
			
		||||
		"І", "I",
 | 
			
		||||
		"Ї", "JI",
 | 
			
		||||
	},
 | 
			
		||||
	"Arabic": {
 | 
			
		||||
		"ا", "a",
 | 
			
		||||
		"ب", "b",
 | 
			
		||||
		"ت", "t",
 | 
			
		||||
		"ث", "th",
 | 
			
		||||
		"ج", "j",
 | 
			
		||||
		"ح", "7",
 | 
			
		||||
		"خ", "5",
 | 
			
		||||
		"د", "d",
 | 
			
		||||
		"ذ", "th",
 | 
			
		||||
		"ر", "r",
 | 
			
		||||
		"ز", "z",
 | 
			
		||||
		"س", "s",
 | 
			
		||||
		"ش", "sh",
 | 
			
		||||
		"ص", "9",
 | 
			
		||||
		"ض", "9'",
 | 
			
		||||
		"ط", "6",
 | 
			
		||||
		"ظ", "6'",
 | 
			
		||||
		"ع", "3",
 | 
			
		||||
		"غ", "3'",
 | 
			
		||||
		"ف", "f",
 | 
			
		||||
		"ق", "q",
 | 
			
		||||
		"ك", "k",
 | 
			
		||||
		"ل", "l",
 | 
			
		||||
		"م", "m",
 | 
			
		||||
		"ن", "n",
 | 
			
		||||
		"ه", "h",
 | 
			
		||||
		"و", "w",
 | 
			
		||||
		"ي", "y",
 | 
			
		||||
		"ى", "a",
 | 
			
		||||
		"ﺓ", "",
 | 
			
		||||
		"آ", "2",
 | 
			
		||||
		"ئ", "2",
 | 
			
		||||
		"إ", "2",
 | 
			
		||||
		"ؤ", "2",
 | 
			
		||||
		"أ", "2",
 | 
			
		||||
		"ء", "2",
 | 
			
		||||
		"٠", "0",
 | 
			
		||||
		"١", "1",
 | 
			
		||||
		"٢", "2",
 | 
			
		||||
		"٣", "3",
 | 
			
		||||
		"٤", "4",
 | 
			
		||||
		"٥", "5",
 | 
			
		||||
		"٦", "6",
 | 
			
		||||
		"٧", "7",
 | 
			
		||||
		"٨", "8",
 | 
			
		||||
		"٩", "9",
 | 
			
		||||
	},
 | 
			
		||||
	"Farsi": {
 | 
			
		||||
		"پ", "p",
 | 
			
		||||
		"چ", "ch",
 | 
			
		||||
		"ژ", "zh",
 | 
			
		||||
		"ک", "k",
 | 
			
		||||
		"گ", "g",
 | 
			
		||||
		"ی", "y",
 | 
			
		||||
		"\u200c", " ",
 | 
			
		||||
		"؟", "?",
 | 
			
		||||
		"٪", "%",
 | 
			
		||||
		"؛", ";",
 | 
			
		||||
		"،", ":",
 | 
			
		||||
		"۱", "1",
 | 
			
		||||
		"۲", "2",
 | 
			
		||||
		"۳", "3",
 | 
			
		||||
		"۴", "4",
 | 
			
		||||
		"۵", "5",
 | 
			
		||||
		"۶", "6",
 | 
			
		||||
		"۷", "7",
 | 
			
		||||
		"۸", "8",
 | 
			
		||||
		"۹", "9",
 | 
			
		||||
		"۰", "0",
 | 
			
		||||
		"»", "<",
 | 
			
		||||
		"«", ">",
 | 
			
		||||
		"ِ", "e",
 | 
			
		||||
		"َ", "a",
 | 
			
		||||
		"ُ", "o",
 | 
			
		||||
		"ّ", "",
 | 
			
		||||
	},
 | 
			
		||||
	"Polish": {
 | 
			
		||||
		"Ł", "L",
 | 
			
		||||
		"ł", "l",
 | 
			
		||||
	},
 | 
			
		||||
	"Lithuanian": {
 | 
			
		||||
		"ą", "a",
 | 
			
		||||
		"č", "c",
 | 
			
		||||
		"ę", "e",
 | 
			
		||||
		"ė", "e",
 | 
			
		||||
		"į", "i",
 | 
			
		||||
		"š", "s",
 | 
			
		||||
		"ų", "u",
 | 
			
		||||
		"ū", "u",
 | 
			
		||||
		"ž", "z",
 | 
			
		||||
	},
 | 
			
		||||
	"Estonian": {
 | 
			
		||||
		"ä", "a",
 | 
			
		||||
		"Ä", "A",
 | 
			
		||||
		"ö", "o",
 | 
			
		||||
		"õ", "o",
 | 
			
		||||
		"Ö", "O",
 | 
			
		||||
		"Õ", "O",
 | 
			
		||||
		"ü", "u",
 | 
			
		||||
		"Ü", "U",
 | 
			
		||||
	},
 | 
			
		||||
	"Icelandic": {
 | 
			
		||||
		"Þ", "Th",
 | 
			
		||||
		"þ", "th",
 | 
			
		||||
		"Ð", "D",
 | 
			
		||||
		"ð", "d",
 | 
			
		||||
	},
 | 
			
		||||
	"Czeck": {
 | 
			
		||||
		"ř", "r",
 | 
			
		||||
		"ě", "e",
 | 
			
		||||
		"ý", "y",
 | 
			
		||||
		"á", "a",
 | 
			
		||||
		"í", "i",
 | 
			
		||||
		"é", "e",
 | 
			
		||||
		"ó", "o",
 | 
			
		||||
		"ú", "u",
 | 
			
		||||
		"ů", "u",
 | 
			
		||||
		"ď", "d",
 | 
			
		||||
		"ť", "t",
 | 
			
		||||
		"ň", "n",
 | 
			
		||||
	},
 | 
			
		||||
	"French": {
 | 
			
		||||
		"à", "a",
 | 
			
		||||
		"â", "a",
 | 
			
		||||
		"é", "e",
 | 
			
		||||
		"è", "e",
 | 
			
		||||
		"ê", "e",
 | 
			
		||||
		"ë", "e",
 | 
			
		||||
		"ù", "u",
 | 
			
		||||
		"ü", "u",
 | 
			
		||||
		"ÿ", "y",
 | 
			
		||||
		"ç", "c",
 | 
			
		||||
	},
 | 
			
		||||
	"Armenian": {
 | 
			
		||||
		"աու", "au",
 | 
			
		||||
		"բու", "bu",
 | 
			
		||||
		"գու", "gu",
 | 
			
		||||
		"դու", "du",
 | 
			
		||||
		"եու", "eu",
 | 
			
		||||
		"զու", "zu",
 | 
			
		||||
		"էու", "eu",
 | 
			
		||||
		"ըու", "yu",
 | 
			
		||||
		"թու", "tu",
 | 
			
		||||
		"ժու", "ju",
 | 
			
		||||
		"իու", "iu",
 | 
			
		||||
		"լու", "lu",
 | 
			
		||||
		"խու", "xu",
 | 
			
		||||
		"ծու", "cu",
 | 
			
		||||
		"կու", "ku",
 | 
			
		||||
		"հու", "hu",
 | 
			
		||||
		"ձու", "dzu",
 | 
			
		||||
		"ղու", "xu",
 | 
			
		||||
		"ճու", "cu",
 | 
			
		||||
		"մու", "mu",
 | 
			
		||||
		"յու", "yu",
 | 
			
		||||
		"նու", "nu",
 | 
			
		||||
		"շու", "shu",
 | 
			
		||||
		"չու", "chu",
 | 
			
		||||
		"պու", "pu",
 | 
			
		||||
		"ջու", "ju",
 | 
			
		||||
		"ռու", "ru",
 | 
			
		||||
		"սու", "su",
 | 
			
		||||
		"վու", "vu",
 | 
			
		||||
		"տու", "tu",
 | 
			
		||||
		"րու", "ru",
 | 
			
		||||
		"ցու", "cu",
 | 
			
		||||
		"փու", "pu",
 | 
			
		||||
		"քու", "qu",
 | 
			
		||||
		"օու", "ou",
 | 
			
		||||
		"ևու", "eu",
 | 
			
		||||
		"ֆու", "fu",
 | 
			
		||||
		"ոու", "vou",
 | 
			
		||||
		"ու", "u",
 | 
			
		||||
		"բո", "bo",
 | 
			
		||||
		"գո", "go",
 | 
			
		||||
		"դո", "do",
 | 
			
		||||
		"զո", "zo",
 | 
			
		||||
		"թո", "to",
 | 
			
		||||
		"ժո", "jo",
 | 
			
		||||
		"լո", "lo",
 | 
			
		||||
		"խո", "xo",
 | 
			
		||||
		"ծո", "co",
 | 
			
		||||
		"կո", "ko",
 | 
			
		||||
		"հո", "ho",
 | 
			
		||||
		"ձո", "dzo",
 | 
			
		||||
		"ղո", "xo",
 | 
			
		||||
		"ճո", "co",
 | 
			
		||||
		"մո", "mo",
 | 
			
		||||
		"յո", "yo",
 | 
			
		||||
		"նո", "no",
 | 
			
		||||
		"շո", "so",
 | 
			
		||||
		"չո", "co",
 | 
			
		||||
		"պո", "po",
 | 
			
		||||
		"ջո", "jo",
 | 
			
		||||
		"ռո", "ro",
 | 
			
		||||
		"սո", "so",
 | 
			
		||||
		"վո", "vo",
 | 
			
		||||
		"տո", "to",
 | 
			
		||||
		"րո", "ro",
 | 
			
		||||
		"ցո", "co",
 | 
			
		||||
		"փո", "po",
 | 
			
		||||
		"քո", "qo",
 | 
			
		||||
		"ևո", "eo",
 | 
			
		||||
		"ֆո", "fo",
 | 
			
		||||
		"ո", "vo",
 | 
			
		||||
		"եւ", "ev",
 | 
			
		||||
		"եվ", "ev",
 | 
			
		||||
		"ա", "a",
 | 
			
		||||
		"բ", "b",
 | 
			
		||||
		"գ", "g",
 | 
			
		||||
		"դ", "d",
 | 
			
		||||
		"ե", "e",
 | 
			
		||||
		"զ", "z",
 | 
			
		||||
		"է", "e",
 | 
			
		||||
		"ը", "y",
 | 
			
		||||
		"թ", "t",
 | 
			
		||||
		"ժ", "j",
 | 
			
		||||
		"ի", "i",
 | 
			
		||||
		"լ", "l",
 | 
			
		||||
		"խ", "x",
 | 
			
		||||
		"ծ", "c",
 | 
			
		||||
		"կ", "k",
 | 
			
		||||
		"հ", "h",
 | 
			
		||||
		"ձ", "dz",
 | 
			
		||||
		"ղ", "x",
 | 
			
		||||
		"ճ", "c",
 | 
			
		||||
		"մ", "m",
 | 
			
		||||
		"յ", "y",
 | 
			
		||||
		"ն", "n",
 | 
			
		||||
		"շ", "sh",
 | 
			
		||||
		"չ", "ch",
 | 
			
		||||
		"պ", "p",
 | 
			
		||||
		"ջ", "j",
 | 
			
		||||
		"ռ", "r",
 | 
			
		||||
		"ս", "s",
 | 
			
		||||
		"վ", "v",
 | 
			
		||||
		"տ", "t",
 | 
			
		||||
		"ր", "r",
 | 
			
		||||
		"ց", "c",
 | 
			
		||||
		"փ", "p",
 | 
			
		||||
		"ք", "q",
 | 
			
		||||
		"օ", "o",
 | 
			
		||||
		"և", "ev",
 | 
			
		||||
		"ֆ", "f",
 | 
			
		||||
		"ւ", "",
 | 
			
		||||
	},
 | 
			
		||||
	"Emoji": {
 | 
			
		||||
		"😂", ":')",
 | 
			
		||||
		"😊", ":)",
 | 
			
		||||
		"😃", ":)",
 | 
			
		||||
		"😩", "-_-",
 | 
			
		||||
		"😏", ":‑J",
 | 
			
		||||
		"💜", "<3",
 | 
			
		||||
		"💖", "<3",
 | 
			
		||||
		"💗", "<3",
 | 
			
		||||
		"❤️", "<3",
 | 
			
		||||
		"💕", "<3",
 | 
			
		||||
		"💞", "<3",
 | 
			
		||||
		"💘", "<3",
 | 
			
		||||
		"💓", "<3",
 | 
			
		||||
		"💚", "<3",
 | 
			
		||||
		"💙", "<3",
 | 
			
		||||
		"💔", "</3",
 | 
			
		||||
		"😱", "D:",
 | 
			
		||||
		"😮", ":O",
 | 
			
		||||
		"😝", ":P",
 | 
			
		||||
		"😍", ":x",
 | 
			
		||||
		"😢", ":(",
 | 
			
		||||
		"💯", ":100:",
 | 
			
		||||
		"🔥", ":fire:",
 | 
			
		||||
		"😉", ";)",
 | 
			
		||||
		"😴", ":zzz:",
 | 
			
		||||
		"💤", ":zzz:",
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewReplacer(useMaps ...string) *strings.Replacer {
 | 
			
		||||
	var replace []string
 | 
			
		||||
	if customMap, ok := Maps["custom"]; ok {
 | 
			
		||||
		replace = append(replace, customMap...)
 | 
			
		||||
	}
 | 
			
		||||
	for _, useMap := range useMaps {
 | 
			
		||||
		if useMap == "custom" {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		translitMap, ok := Maps[useMap]
 | 
			
		||||
		if !ok {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		replace = append(replace, translitMap...)
 | 
			
		||||
	}
 | 
			
		||||
	return strings.NewReplacer(replace...)
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user