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